#!/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 ircmsgs import ircutils class FunctionsTestCase(unittest.TestCase): hostmask = 'foo!bar@baz' def testIsUserHostmask(self): self.failUnless(ircutils.isUserHostmask(self.hostmask)) self.failUnless(ircutils.isUserHostmask('a!b@c')) self.failIf(ircutils.isUserHostmask('!bar@baz')) self.failIf(ircutils.isUserHostmask('!@baz')) self.failIf(ircutils.isUserHostmask('!bar@')) self.failIf(ircutils.isUserHostmask('!@')) self.failIf(ircutils.isUserHostmask('foo!@baz')) self.failIf(ircutils.isUserHostmask('foo!bar@')) self.failIf(ircutils.isUserHostmask('')) self.failIf(ircutils.isUserHostmask('!')) self.failIf(ircutils.isUserHostmask('@')) self.failIf(ircutils.isUserHostmask('!bar@baz')) def testIsChannel(self): self.failUnless(ircutils.isChannel('#')) self.failUnless(ircutils.isChannel('&')) self.failUnless(ircutils.isChannel('+')) self.failUnless(ircutils.isChannel('!')) self.failUnless(ircutils.isChannel('#foo')) self.failUnless(ircutils.isChannel('&foo')) self.failUnless(ircutils.isChannel('+foo')) self.failUnless(ircutils.isChannel('!foo')) self.failIf(ircutils.isChannel('foo')) self.failIf(ircutils.isChannel('')) def testBold(self): s = ircutils.bold('foo') self.assertEqual(s[0], '\x02') self.assertEqual(s[-1], '\x02') def testSafeArgument(self): s = 'I have been running for 9 seconds' bolds = ircutils.bold(s) self.assertEqual(s, ircutils.safeArgument(s)) self.assertEqual(bolds, ircutils.safeArgument(bolds)) def testIsIP(self): self.failIf(ircutils.isIP('a.b.c')) self.failUnless(ircutils.isIP('100.100.100.100')) def banmask(self): self.failUnless(ircutils.hostmaskPatternEqual(\ ircutils.banmask(self.hostmask), self.hostmask)) def testSeparateModes(self): self.assertEqual(ircutils.separateModes(['+ooo', 'x', 'y', 'z']), [('+o', 'x'), ('+o', 'y'), ('+o', 'z')]) self.assertEqual(ircutils.separateModes(['+o-o', 'x', 'y']), [('+o', 'x'), ('-o', 'y')]) self.assertEqual(ircutils.separateModes(['+s-o', 'x']), [('+s', None), ('-o', 'x')]) self.assertEqual(ircutils.separateModes(['+sntl', '100']), [('+s', None),('+n', None),('+t', None),('+l', '100')]) def testToLower(self): self.assertEqual('jemfinch', ircutils.toLower('jemfinch')) self.assertEqual('{}|^', ircutils.toLower('[]\\~')) def testNick(self): nicks = ['jemfinch', 'jemfinch\\[]~'] for nick in nicks: self.assertEqual(str(ircutils.nick(nick)), str(nick)) self.assertEqual(ircutils.nick(nick), nick) self.assertEqual(ircutils.nick(nick), ircutils.toLower(nick)) def testReplyTo(self): prefix = 'foo!bar@baz' channel = ircmsgs.privmsg('#foo', 'bar baz', prefix=prefix) private = ircmsgs.privmsg('jemfinch', 'bar baz', prefix=prefix) self.assertEqual(ircutils.replyTo(channel), channel.args[0]) self.assertEqual(ircutils.replyTo(private), private.nick)