(self)
| 1091 | |
| 1092 | # Test reduce()'s use of iterators. |
| 1093 | def test_iterator_usage(self): |
| 1094 | class SequenceClass: |
| 1095 | def __init__(self, n): |
| 1096 | self.n = n |
| 1097 | def __getitem__(self, i): |
| 1098 | if 0 <= i < self.n: |
| 1099 | return i |
| 1100 | else: |
| 1101 | raise IndexError |
| 1102 | |
| 1103 | from operator import add |
| 1104 | self.assertEqual(self.reduce(add, SequenceClass(5)), 10) |
| 1105 | self.assertEqual(self.reduce(add, SequenceClass(5), 42), 52) |
| 1106 | self.assertRaises(TypeError, self.reduce, add, SequenceClass(0)) |
| 1107 | self.assertEqual(self.reduce(add, SequenceClass(0), 42), 42) |
| 1108 | self.assertEqual(self.reduce(add, SequenceClass(1)), 0) |
| 1109 | self.assertEqual(self.reduce(add, SequenceClass(1), 42), 42) |
| 1110 | |
| 1111 | d = {"one": 1, "two": 2, "three": 3} |
| 1112 | self.assertEqual(self.reduce(add, d), "".join(d.keys())) |
| 1113 | |
| 1114 | # test correctness of keyword usage of `initial` in `reduce` |
| 1115 | def test_initial_keyword(self): |
nothing calls this directly
no test coverage detected