diff options
author | Daniel Stutzbach <daniel@stutzbachenterprises.com> | 2010-09-13 21:16:29 (GMT) |
---|---|---|
committer | Daniel Stutzbach <daniel@stutzbachenterprises.com> | 2010-09-13 21:16:29 (GMT) |
commit | 9f0cbf1c727f7de884c392176ab4f19a49924c9b (patch) | |
tree | fae5d3d7348ee4b9966e87dd14c5c4b381e77479 /Lib/test/test_builtin.py | |
parent | e4d6317c8725f9f341c6f2dd628e3b3ac79ef309 (diff) | |
download | cpython-9f0cbf1c727f7de884c392176ab4f19a49924c9b.zip cpython-9f0cbf1c727f7de884c392176ab4f19a49924c9b.tar.gz cpython-9f0cbf1c727f7de884c392176ab4f19a49924c9b.tar.bz2 |
Issue #9213: Add index and count methods to range objects, needed to
meet the API of the collections.Sequence ABC.
Diffstat (limited to 'Lib/test/test_builtin.py')
-rw-r--r-- | Lib/test/test_builtin.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py index f00091b..5a3c35a 100644 --- a/Lib/test/test_builtin.py +++ b/Lib/test/test_builtin.py @@ -1028,6 +1028,60 @@ class BuiltinTest(unittest.TestCase): self.assertRaises(TypeError, range, 0.0, 0.0, 1) self.assertRaises(TypeError, range, 0.0, 0.0, 1.0) + self.assertEqual(range(3).count(-1), 0) + self.assertEqual(range(3).count(0), 1) + self.assertEqual(range(3).count(1), 1) + self.assertEqual(range(3).count(2), 1) + self.assertEqual(range(3).count(3), 0) + + self.assertEqual(range(10**20).count(1), 1) + self.assertEqual(range(10**20).count(10**20), 0) + self.assertEqual(range(3).index(1), 1) + self.assertEqual(range(1, 2**100, 2).count(2**87), 0) + self.assertEqual(range(1, 2**100, 2).count(2**87+1), 1) + + self.assertEqual(range(1, 10, 3).index(4), 1) + self.assertEqual(range(1, -10, -3).index(-5), 2) + + self.assertEqual(range(10**20).index(1), 1) + self.assertEqual(range(10**20).index(10**20 - 1), 10**20 - 1) + + self.assertRaises(ValueError, range(1, 2**100, 2).index, 2**87) + self.assertEqual(range(1, 2**100, 2).index(2**87+1), 2**86) + + class AlwaysEqual(object): + def __eq__(self, other): + return True + always_equal = AlwaysEqual() + self.assertEqual(range(10).count(always_equal), 10) + self.assertEqual(range(10).index(always_equal), 0) + + def test_range_index(self): + u = range(2) + self.assertEqual(u.index(0), 0) + self.assertEqual(u.index(1), 1) + self.assertRaises(ValueError, u.index, 2) + + u = range(-2, 3) + self.assertEqual(u.count(0), 1) + self.assertEqual(u.index(0), 2) + self.assertRaises(TypeError, u.index) + + class BadExc(Exception): + pass + + class BadCmp: + def __eq__(self, other): + if other == 2: + raise BadExc() + return False + + a = range(4) + self.assertRaises(BadExc, a.index, BadCmp()) + + a = range(-2, 3) + self.assertEqual(a.index(0), 2) + def test_input(self): self.write_testfile() fp = open(TESTFN, 'r') |