Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/test.py
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@activitycentral.org>2011-04-26 11:25:17 (GMT)
committer Aleksey Lim <alsroot@activitycentral.org>2011-04-26 11:25:17 (GMT)
commit74024d9d8ff4442f51d7178418e9b041af0809eb (patch)
tree01d8f70b500829659b52702a8c106ba722ab8c54 /test.py
Extract from puppet module
Diffstat (limited to 'test.py')
-rw-r--r--test.py106
1 files changed, 106 insertions, 0 deletions
diff --git a/test.py b/test.py
new file mode 100644
index 0000000..aee97f1
--- /dev/null
+++ b/test.py
@@ -0,0 +1,106 @@
+# Copyright (C) 2010, Aleksey Lim
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+# this list of conditions, and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions, and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# * Neither the name of the author of this software nor the name of
+# contributors to this software may be used to endorse or promote products
+# derived from this software without specific prior written consent.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+
+from supybot.test import *
+
+import plugin
+
+
+class LingvoTestCase(PluginTestCase):
+ plugins = ('Lingvo', 'Utilities')
+
+ def testFoo(self):
+ self.assertResponse('echo foo', 'foo')
+
+ def testQuoting(self):
+ text = 'foo "bar" test'
+ self.assertEqual(text, plugin.unquote(*plugin.quote(text)))
+
+ text = '"bar" foo test'
+ self.assertEqual(text, plugin.unquote(*plugin.quote(text)))
+
+ text = 'foo test "bar" '
+ self.assertEqual(text, plugin.unquote(*plugin.quote(text)))
+
+ text = 'foo test "bar"'
+ self.assertEqual(text, plugin.unquote(*plugin.quote(text)))
+
+ text = '"foo bar test'
+ self.assertEqual(text, plugin.unquote(*plugin.quote(text)))
+
+ text = 'foo "bar" test'
+ new_text, replaces = plugin.quote(text)
+ self.assertEqual('foo test', plugin.unquote(new_text, replaces, ''))
+
+ def testChannelQuoting(self):
+ text = '#sugar'
+ text, replaces = plugin.quote(text)
+ self.assertEqual('#foo', plugin.unquote(text, replaces, '#foo'))
+
+ text = '#sugar'
+ text, replaces = plugin.quote(text)
+ self.assertEqual('#sugar', plugin.unquote(text, replaces))
+
+ text = '#sugar test'
+ text, replaces = plugin.quote(text)
+ self.assertEqual('#foo test', plugin.unquote(text, replaces, '#foo'))
+
+ text = 'test #sugar'
+ text, replaces = plugin.quote(text)
+ self.assertEqual('test #foo', plugin.unquote(text, replaces, '#foo'))
+
+ text = 'test #'
+ text, replaces = plugin.quote(text)
+ self.assertEqual('test ?', plugin.unquote(text, replaces, '?'))
+
+ def testNickQuoting(self):
+ text = 'foo:_foo test foobar2 foobar'
+ text, replaces = plugin.quote(text, ['foo', 'test', 'foobar'])
+ self.assertEqual('003:_foo 002 foobar2 001', text)
+ self.assertEqual({'003': 'foo',
+ '002': 'test',
+ '001': 'foobar'}, replaces)
+
+ text = 'foo:foo,foo'
+ text, replaces = plugin.quote(text, ['foo'])
+ self.assertEqual('001:002,003', text)
+ self.assertEqual({'001': 'foo',
+ '002': 'foo',
+ '003': 'foo'}, replaces)
+
+ def testNickLangQuoting(self):
+ text = 'foo-ru:foo-pt-PT foo'
+ text, replaces = plugin.quote(text, ['foo'])
+ self.assertEqual('001:002 003', text)
+ self.assertEqual({'001': 'foo',
+ '002': 'foo',
+ '003': 'foo'}, replaces)
+
+ text = 'foo-test-ru:foo-test-pt-PT'
+ text, replaces = plugin.quote(text, ['foo', 'foo-test'])
+ self.assertEqual('001:002', text)
+ self.assertEqual({'001': 'foo-test',
+ '002': 'foo-test'}, replaces)