(self)
| 1027 | |
| 1028 | # Test reduce()'s use of iterators. |
| 1029 | def test_iterator_usage(self): |
| 1030 | class SequenceClass: |
| 1031 | def __init__(self, n): |
| 1032 | self.n = n |
| 1033 | def __getitem__(self, i): |
| 1034 | if 0 <= i < self.n: |
| 1035 | return i |
| 1036 | else: |
| 1037 | raise IndexError |
| 1038 | |
| 1039 | from operator import add |
| 1040 | self.assertEqual(self.reduce(add, SequenceClass(5)), 10) |
| 1041 | self.assertEqual(self.reduce(add, SequenceClass(5), 42), 52) |
| 1042 | self.assertRaises(TypeError, self.reduce, add, SequenceClass(0)) |
| 1043 | self.assertEqual(self.reduce(add, SequenceClass(0), 42), 42) |
| 1044 | self.assertEqual(self.reduce(add, SequenceClass(1)), 0) |
| 1045 | self.assertEqual(self.reduce(add, SequenceClass(1), 42), 42) |
| 1046 | |
| 1047 | d = {"one": 1, "two": 2, "three": 3} |
| 1048 | self.assertEqual(self.reduce(add, d), "".join(d.keys())) |
| 1049 | |
| 1050 | # test correctness of keyword usage of `initial` in `reduce` |
| 1051 | def test_initial_keyword(self): |
nothing calls this directly
no test coverage detected