[Python-checkins] CVS: python/dist/src/Lib/test test_types.py,1.20,1.21
Barry Warsaw
bwarsaw@users.sourceforge.net
Tue, 26 Jun 2001 13:09:30 -0700
Update of /cvsroot/python/python/dist/src/Lib/test
In directory usw-pr-cvs1:/tmp/cvs-serv475
Modified Files:
test_types.py
Log Message:
Add a bunch of tests for extended dict.update() where the argument is
a non-dictionary mapping object. Include tests for several expected
failure modes.
Index: test_types.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_types.py,v
retrieving revision 1.20
retrieving revision 1.21
diff -C2 -r1.20 -r1.21
*** test_types.py 2001/04/20 16:50:40 1.20
--- test_types.py 2001/06/26 20:09:28 1.21
***************
*** 240,250 ****
--- 240,320 ----
del d['b']
if d != {'a': 4, 'c': 3}: raise TestFailed, 'dict item deletion'
+ # dict.clear()
d = {1:1, 2:2, 3:3}
d.clear()
if d != {}: raise TestFailed, 'dict clear'
+ # dict.update()
d.update({1:100})
d.update({2:20})
d.update({1:1, 2:2, 3:3})
if d != {1:1, 2:2, 3:3}: raise TestFailed, 'dict update'
+ d.clear()
+ try: d.update(None)
+ except AttributeError: pass
+ else: raise TestFailed, 'dict.update(None), AttributeError expected'
+ class SimpleUserDict:
+ def __init__(self):
+ self.d = {1:1, 2:2, 3:3}
+ def keys(self):
+ return self.d.keys()
+ def __getitem__(self, i):
+ return self.d[i]
+ d.update(SimpleUserDict())
+ if d != {1:1, 2:2, 3:3}: raise TestFailed, 'dict.update(instance)'
+ d.clear()
+ class FailingUserDict:
+ def keys(self):
+ raise ValueError
+ try: d.update(FailingUserDict())
+ except ValueError: pass
+ else: raise TestFailed, 'dict.keys() expected ValueError'
+ class FailingUserDict:
+ def keys(self):
+ class BogonIter:
+ def __iter__(self):
+ raise ValueError
+ return BogonIter()
+ try: d.update(FailingUserDict())
+ except ValueError: pass
+ else: raise TestFailed, 'iter(dict.keys()) expected ValueError'
+ class FailingUserDict:
+ def keys(self):
+ class BogonIter:
+ def __init__(self):
+ self.i = 1
+ def __iter__(self):
+ return self
+ def next(self):
+ if self.i:
+ self.i = 0
+ return 'a'
+ raise ValueError
+ return BogonIter()
+ def __getitem__(self, key):
+ return key
+ try: d.update(FailingUserDict())
+ except ValueError: pass
+ else: raise TestFailed, 'iter(dict.keys()).next() expected ValueError'
+ class FailingUserDict:
+ def keys(self):
+ class BogonIter:
+ def __init__(self):
+ self.i = ord('a')
+ def __iter__(self):
+ return self
+ def next(self):
+ if self.i <= ord('z'):
+ rtn = chr(self.i)
+ self.i += 1
+ return rtn
+ raise StopIteration
+ return BogonIter()
+ def __getitem__(self, key):
+ raise ValueError
+ try: d.update(FailingUserDict())
+ except ValueError: pass
+ else: raise TestFailed, 'dict.update(), __getitem__ expected ValueError'
+ # dict.copy()
+ d = {1:1, 2:2, 3:3}
if d.copy() != {1:1, 2:2, 3:3}: raise TestFailed, 'dict copy'
if {}.copy() != {}: raise TestFailed, 'empty dict copy'