From 08fa5e01a0b0335c30aefdee4481720b2d89a70b Mon Sep 17 00:00:00 2001 From: Jeremy Fincher Date: Sun, 19 Oct 2003 14:53:34 +0000 Subject: [PATCH] Changed the name of the FunCommands to Fun. --- plugins/{FunCommands.py => Fun.py} | 6 +-- plugins/Moobot.py | 4 +- test/test.py | 2 +- test/test_Alias.py | 2 +- test/test_Fun.py | 86 ++++++++++++++++++++++++++++++ 5 files changed, 93 insertions(+), 7 deletions(-) rename plugins/{FunCommands.py => Fun.py} (99%) create mode 100644 test/test_Fun.py diff --git a/plugins/FunCommands.py b/plugins/Fun.py similarity index 99% rename from plugins/FunCommands.py rename to plugins/Fun.py index 7ed47ecb5..4716d747b 100644 --- a/plugins/FunCommands.py +++ b/plugins/Fun.py @@ -54,7 +54,7 @@ import privmsgs import callbacks example = utils.wrapLines(""" - @list FunCommands + @list Fun base, binary, chr, coin, decode, dice, dns, encode, hexlify, kernel, last, lastfrom, leet, levenshtein, lithp, md5, mimetype, objects, ord, pydoc, rot13, sha, soundex, unhexlify, urlquote, urlunquote, xor @ord A 65 @@ -126,7 +126,7 @@ example = utils.wrapLines(""" jemfinch: ohio-state.edu is active; registered 18-aug-1987, updated 19-aug-2003, expires 18-aug-2004. """) -class FunCommands(callbacks.Privmsg): +class Fun(callbacks.Privmsg): def hexip(self, irc, msg, args): """ @@ -496,7 +496,7 @@ class FunCommands(callbacks.Privmsg): irc.reply(msg, s) -Class = FunCommands +Class = Fun # vim:set shiftwidth=4 tabstop=8 expandtab textwidth=78: diff --git a/plugins/Moobot.py b/plugins/Moobot.py index 28ec5f749..d278716b3 100644 --- a/plugins/Moobot.py +++ b/plugins/Moobot.py @@ -193,7 +193,7 @@ class Moobot(callbacks.Privmsg): """ Encodes text in base64. Here for compatibility with Moobot; this and - other encodings are available in the FunCommands module. + other encodings are available in the Fun module. """ text = privmsgs.getArgs(args) s = base64.encodestring(text).strip() @@ -203,7 +203,7 @@ class Moobot(callbacks.Privmsg): """ Decodes base64 encoded text. Here for compatibility with Moobot; this - and other encodings are available in the FunCommands module. + and other encodings are available in the Fun module. """ text = privmsgs.getArgs(args) s = base64.decodestring(text) diff --git a/test/test.py b/test/test.py index 39f5de07a..f8da029cc 100755 --- a/test/test.py +++ b/test/test.py @@ -106,7 +106,7 @@ class TimeoutError(AssertionError): return '%r timed out' % self.args[0] class PluginTestCase(unittest.TestCase): - """Subclass this to write a test case for a plugin. See test_FunCommands + """Subclass this to write a test case for a plugin. See test/test_Fun.py for an example. """ timeout = 10 diff --git a/test/test_Alias.py b/test/test_Alias.py index f8bc32dc9..d7fdaf35e 100644 --- a/test/test_Alias.py +++ b/test/test_Alias.py @@ -67,7 +67,7 @@ class FunctionsTest(unittest.TestCase): class AliasTestCase(ChannelPluginTestCase, PluginDocumentation): - plugins = ('Alias', 'FunCommands', 'Utilities', 'MiscCommands') + plugins = ('Alias', 'Fun', 'Utilities', 'MiscCommands') def testAliasHelp(self): self.assertNotError('alias slashdot foo') self.assertNotRegexp('syntax slashdot', 'None') diff --git a/test/test_Fun.py b/test/test_Fun.py new file mode 100644 index 000000000..608e6d975 --- /dev/null +++ b/test/test_Fun.py @@ -0,0 +1,86 @@ +#!/usr/bin/env python + +### +# Copyright (c) 2002, Jeremiah Fincher +# All rights reserved. +# +# 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 test import * + +import re + +import utils + +class FunCommandsTest(PluginTestCase, PluginDocumentation): + plugins = ('Fun',) + def testNoErrors(self): + self.assertNotError('leet foobar') + self.assertNotError('lithp meghan sweeney') + self.assertNotError('objects') + self.assertNotError('levenshtein Python Perl') + self.assertNotError('soundex jemfinch') + + def testBinary(self): + self.assertResponse('binary A', '01000001') + + def testRot13(self): + for s in nicks[:10]: # 10 is probably enough. + self.assertResponse('rot13 [rot13 %s]' % s, s) + + def testChr(self): + for i in range(256): + c = chr(i) + regexp = r'%s|%s' % (re.escape(c), re.escape(repr(c))) + self.assertRegexp('chr %s' % i, regexp) + + def testHexlifyUnhexlify(self): + for s in nicks[:10]: # 10, again, is probably enough. + self.assertResponse('unhexlify [hexlify %s]' % s, s) + + def testXor(self): + L = [nick for nick in nicks if '|' not in nick and + '[' not in nick and + ']' not in nick] + for s0, s1, s2, s3, s4, s5, s6, s7, s8, s9 in group(L, 10): + data = '%s%s%s%s%s%s%s%s%s' % (s0, s1, s2, s3, s4, s5, s6, s7, s8) + self.assertResponse('xor %s [xor %s %s]' % (s9, s9, data), data) + + def testUrlquoteUrlunquote(self): + self.assertResponse('urlunquote [urlquote ~jfincher]', '~jfincher') + + def testOrd(self): + for c in map(chr, range(256)): + i = ord(c) + self.assertResponse('ord %s' % utils.dqrepr(c), str(i)) + + def testScramble(self): + s = 'the recalcitrant jamessan tests his scramble function' + self.assertNotRegexp('scramble %s' % s, s) + s = 'the recalc1trant jam3ssan tests his scramble fun>