diff --git a/test/ircutils_test.py b/test/ircutils_test.py index 18cb6bbce..61d3b55fa 100644 --- a/test/ircutils_test.py +++ b/test/ircutils_test.py @@ -38,6 +38,7 @@ 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@')) @@ -48,7 +49,6 @@ class FunctionsTestCase(unittest.TestCase): self.failIf(ircutils.isUserHostmask('!')) self.failIf(ircutils.isUserHostmask('@')) self.failIf(ircutils.isUserHostmask('!bar@baz')) - self.failIf(ircutils.isUserHostmask('a!b@c')) def testIsChannel(self): self.failUnless(ircutils.isChannel('#')) @@ -62,6 +62,17 @@ class FunctionsTestCase(unittest.TestCase): 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')) diff --git a/test/utils_test.py b/test/utils_test.py new file mode 100644 index 000000000..17a4a6ab7 --- /dev/null +++ b/test/utils_test.py @@ -0,0 +1,44 @@ +#!/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 utils + + +class UtilsTest(unittest.TestCase): + def testTimeElapsed(self): + self.assertRaises(ValueError, utils.timeElapsed, 0, 0, seconds=False) + + def testEachSubstring(self): + s = 'foobar' + L = ['f', 'fo', 'foo', 'foob', 'fooba', 'foobar'] + self.assertEqual(list(utils.eachSubstring(s)), L)