diff --git a/src/ircutils.py b/src/ircutils.py index d07cc3e55..3b0c65ae2 100644 --- a/src/ircutils.py +++ b/src/ircutils.py @@ -406,6 +406,12 @@ class IrcDict(dict): def __reduce__(self): return (self.__class__, (dict(self),)) + def setdefault(self, s, v): + return self.__parent.setdefault(IrcString(s), v) + + def get(self, s, d=None): + return self.__parent.get(IrcString(s), d) + class IrcSet(sets.Set): """A sets.Set using IrcStrings instead of regular strings.""" def __init__(self, seq=()): diff --git a/test/test_ircutils.py b/test/test_ircutils.py index 55b4554b9..c3ce44965 100644 --- a/test/test_ircutils.py +++ b/test/test_ircutils.py @@ -212,6 +212,19 @@ class IrcDictTestCase(unittest.TestCase): self.assertEqual(d['jemfinch[]'], 'bar') self.assertEqual(d['JEMFINCH[]'], 'bar') + def testSetdefault(self): + d = ircutils.IrcDict() + d.setdefault('#FOO', []).append(1) + self.assertEqual(d['#foo'], [1]) + self.assertEqual(d['#fOO'], [1]) + self.assertEqual(d['#FOO'], [1]) + + def testGet(self): + d = ircutils.IrcDict() + self.assertEqual(d.get('#FOO'), None) + d['#foo'] = 1 + self.assertEqual(d.get('#FOO'), 1) + def testContains(self): d = ircutils.IrcDict() d['#FOO'] = None