Made IrcString more efficient/better, added a test for it.

This commit is contained in:
Jeremy Fincher 2003-10-09 05:34:44 +00:00
parent 2f8b5370ab
commit ce0002f454
2 changed files with 10 additions and 8 deletions

View File

@ -317,16 +317,9 @@ def shrinkList(L, sep='', limit=425):
class IrcString(str):
"""This class does case-insensitive comparison and hashing of nicks."""
def __init__(self, s):
s = str(s)
self.original = s
str.__init__(self, s)
self.lowered = toLower(s)
def __repr__(self):
return repr(self.original)
def __str__(self):
return str(self.original)
def __eq__(self, s):
try:
return toLower(s) == self.lowered

View File

@ -211,6 +211,15 @@ class IrcSetTestCase(unittest.TestCase):
self.failIf('foo' in s)
self.failIf('FOo' in s)
class IrcStringTestCase(unittest.TestCase):
def test(self):
self.assertEqual('#foo', ircutils.IrcString('#foo'))
self.assertEqual('#foo', ircutils.IrcString('#FOO'))
self.assertEqual('#FOO', ircutils.IrcString('#foo'))
self.assertEqual('#FOO', ircutils.IrcString('#FOO'))
self.assertEqual(hash(ircutils.IrcString('#FOO')),
hash(ircutils.IrcString('#foo')))
# vim:set shiftwidth=4 tabstop=8 expandtab textwidth=78: