diff options
author | Raymond Hettinger <python@rcn.com> | 2007-12-18 00:13:45 +0000 |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2007-12-18 00:13:45 +0000 |
commit | 88880b2dd6677575586b8c0f5aaffd18f260afa7 (patch) | |
tree | c0126ceb66fad49a1652ac170f3676192b2be00d /Lib/test/test_collections.py | |
parent | e64acfad3dd13809943eecf50f11c40c510dedbe (diff) | |
download | cpython-git-88880b2dd6677575586b8c0f5aaffd18f260afa7.tar.gz |
Add more namedtuple() test cases. Neaten the code and comments.
Diffstat (limited to 'Lib/test/test_collections.py')
-rw-r--r-- | Lib/test/test_collections.py | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/Lib/test/test_collections.py b/Lib/test/test_collections.py index d6cfe9b206..73ae62ade5 100644 --- a/Lib/test/test_collections.py +++ b/Lib/test/test_collections.py @@ -90,9 +90,36 @@ class TestNamedTuple(unittest.TestCase): def test_odd_sizes(self): Zero = namedtuple('Zero', '') self.assertEqual(Zero(), ()) + self.assertEqual(repr(Zero()), 'Zero()') + self.assertEqual(Zero()._asdict(), {}) + self.assertEqual(Zero()._fields, ()) + Dot = namedtuple('Dot', 'd') self.assertEqual(Dot(1), (1,)) - + self.assertEqual(Dot(1).d, 1) + self.assertEqual(repr(Dot(1)), 'Dot(d=1)') + self.assertEqual(Dot(1)._asdict(), {'d':1}) + self.assertEqual(Dot(1)._replace(d=999), (999,)) + self.assertEqual(Dot(1)._fields, ('d',)) + + n = 10000 + import string, random + names = [''.join([random.choice(string.letters) for j in range(10)]) for i in range(n)] + Big = namedtuple('Big', names) + b = Big(*range(n)) + self.assertEqual(b, tuple(range(n))) + for pos, name in enumerate(names): + self.assertEqual(getattr(b, name), pos) + repr(b) # make sure repr() doesn't blow-up + d = b._asdict() + d_expected = dict(zip(names, range(n))) + self.assertEqual(d, d_expected) + b2 = b._replace(**dict([(names[1], 999),(names[-5], 42)])) + b2_expected = range(n) + b2_expected[1] = 999 + b2_expected[-5] = 42 + self.assertEqual(b2, tuple(b2_expected)) + self.assertEqual(b._fields, tuple(names)) class TestOneTrickPonyABCs(unittest.TestCase): |