diff options
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/test_shelve.py | 9 | ||||
-rw-r--r-- | Lib/test/test_userdict.py | 139 |
2 files changed, 7 insertions, 141 deletions
diff --git a/Lib/test/test_shelve.py b/Lib/test/test_shelve.py index e5d19f5..6d917ff 100644 --- a/Lib/test/test_shelve.py +++ b/Lib/test/test_shelve.py @@ -2,13 +2,13 @@ import unittest import shelve import glob from test import test_support -from UserDict import DictMixin +from collections import MutableMapping from test.test_anydbm import dbm_iterator def L1(s): return s.decode("latin-1") -class byteskeydict(DictMixin): +class byteskeydict(MutableMapping): "Mapping that supports bytes keys" def __init__(self): @@ -23,10 +23,15 @@ class byteskeydict(DictMixin): def __delitem__(self, key): del self.d[L1(key)] + def __len__(self): + return len(self.d) + def iterkeys(self): for k in self.d.keys(): yield k.encode("latin-1") + __iter__ = iterkeys + def keys(self): return list(self.iterkeys()) diff --git a/Lib/test/test_userdict.py b/Lib/test/test_userdict.py index 039ed65..ac33be7 100644 --- a/Lib/test/test_userdict.py +++ b/Lib/test/test_userdict.py @@ -194,150 +194,11 @@ class UserDictTest(mapping_tests.TestHashMappingProtocol): else: self.fail("g[42] didn't raise KeyError") -########################## -# Test Dict Mixin -class SeqDict(UserDict.DictMixin): - """Dictionary lookalike implemented with lists. - - Used to test and demonstrate DictMixin - """ - def __init__(self, other=None, **kwargs): - self.keylist = [] - self.valuelist = [] - if other is not None: - for (key, value) in other: - self[key] = value - for (key, value) in kwargs.items(): - self[key] = value - def __getitem__(self, key): - try: - i = self.keylist.index(key) - except ValueError: - raise KeyError - return self.valuelist[i] - def __setitem__(self, key, value): - try: - i = self.keylist.index(key) - self.valuelist[i] = value - except ValueError: - self.keylist.append(key) - self.valuelist.append(value) - def __delitem__(self, key): - try: - i = self.keylist.index(key) - except ValueError: - raise KeyError - self.keylist.pop(i) - self.valuelist.pop(i) - def keys(self): - return list(self.keylist) - def copy(self): - d = self.__class__() - for key, value in self.items(): - d[key] = value - return d - @classmethod - def fromkeys(cls, keys, value=None): - d = cls() - for key in keys: - d[key] = value - return d - -class UserDictMixinTest(mapping_tests.TestMappingProtocol): - type2test = SeqDict - - def test_all(self): - ## Setup test and verify working of the test class - - # check init - s = SeqDict() - - # exercise setitem - s[10] = 'ten' - s[20] = 'twenty' - s[30] = 'thirty' - - # exercise delitem - del s[20] - # check getitem and setitem - self.assertEqual(s[10], 'ten') - # check keys() and delitem - self.assertEqual(s.keys(), [10, 30]) - - ## Now, test the DictMixin methods one by one - - # __contains__ - self.assert_(10 in s) - self.assert_(20 not in s) - - # __iter__ - self.assertEqual([k for k in s], [10, 30]) - - # __len__ - self.assertEqual(len(s), 2) - - # iteritems - self.assertEqual(list(s.items()), [(10,'ten'), (30, 'thirty')]) - - # iterkeys - self.assertEqual(list(s.keys()), [10, 30]) - - # itervalues - self.assertEqual(list(s.values()), ['ten', 'thirty']) - - # values - self.assertEqual(s.values(), ['ten', 'thirty']) - - # items - self.assertEqual(s.items(), [(10,'ten'), (30, 'thirty')]) - - # get - self.assertEqual(s.get(10), 'ten') - self.assertEqual(s.get(15,'fifteen'), 'fifteen') - self.assertEqual(s.get(15), None) - - # setdefault - self.assertEqual(s.setdefault(40, 'forty'), 'forty') - self.assertEqual(s.setdefault(10, 'null'), 'ten') - del s[40] - - # pop - self.assertEqual(s.pop(10), 'ten') - self.assert_(10 not in s) - s[10] = 'ten' - self.assertEqual(s.pop("x", 1), 1) - s["x"] = 42 - self.assertEqual(s.pop("x", 1), 42) - - # popitem - k, v = s.popitem() - self.assert_(k not in s) - s[k] = v - - # clear - s.clear() - self.assertEqual(len(s), 0) - - # empty popitem - self.assertRaises(KeyError, s.popitem) - - # update - s.update({10: 'ten', 20:'twenty'}) - self.assertEqual(s[10], 'ten') - self.assertEqual(s[20], 'twenty') - - # cmp - self.assertEqual(s, {10: 'ten', 20:'twenty'}) - t = SeqDict() - t[20] = 'twenty' - t[10] = 'ten' - self.assertEqual(s, t) def test_main(): test_support.run_unittest( UserDictTest, - UserDictMixinTest ) if __name__ == "__main__": |