| 
									
										
										
										
											2004-07-08 01:59:55 +00:00
										 |  |  | # Python test set -- built-in functions | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-05-20 21:35:26 +00:00
										 |  |  | import test.support, unittest | 
					
						
							| 
									
										
										
										
											2004-07-08 01:59:55 +00:00
										 |  |  | import sys | 
					
						
							| 
									
										
										
										
											2008-06-10 04:03:04 +00:00
										 |  |  | import pickle | 
					
						
							| 
									
										
										
										
											2004-07-08 01:59:55 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | import warnings | 
					
						
							|  |  |  | warnings.filterwarnings("ignore", "integer argument expected", | 
					
						
							|  |  |  |                         DeprecationWarning, "unittest") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-21 18:01:17 +00:00
										 |  |  | class RangeTest(unittest.TestCase): | 
					
						
							|  |  |  |     def test_range(self): | 
					
						
							| 
									
										
										
										
											2007-05-07 22:24:25 +00:00
										 |  |  |         self.assertEqual(list(range(3)), [0, 1, 2]) | 
					
						
							|  |  |  |         self.assertEqual(list(range(1, 5)), [1, 2, 3, 4]) | 
					
						
							|  |  |  |         self.assertEqual(list(range(0)), []) | 
					
						
							|  |  |  |         self.assertEqual(list(range(-3)), []) | 
					
						
							|  |  |  |         self.assertEqual(list(range(1, 10, 3)), [1, 4, 7]) | 
					
						
							|  |  |  |         self.assertEqual(list(range(5, -5, -3)), [5, 2, -1, -4]) | 
					
						
							| 
									
										
										
										
											2004-07-08 01:59:55 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         a = 10 | 
					
						
							|  |  |  |         b = 100 | 
					
						
							|  |  |  |         c = 50 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-07 22:24:25 +00:00
										 |  |  |         self.assertEqual(list(range(a, a+2)), [a, a+1]) | 
					
						
							|  |  |  |         self.assertEqual(list(range(a+2, a, -1)), [a+2, a+1]) | 
					
						
							|  |  |  |         self.assertEqual(list(range(a+4, a, -2)), [a+4, a+2]) | 
					
						
							| 
									
										
										
										
											2004-07-08 01:59:55 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-07 22:24:25 +00:00
										 |  |  |         seq = list(range(a, b, c)) | 
					
						
							| 
									
										
										
										
											2004-07-08 01:59:55 +00:00
										 |  |  |         self.assert_(a in seq) | 
					
						
							|  |  |  |         self.assert_(b not in seq) | 
					
						
							|  |  |  |         self.assertEqual(len(seq), 2) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-07 22:24:25 +00:00
										 |  |  |         seq = list(range(b, a, -c)) | 
					
						
							| 
									
										
										
										
											2004-07-08 01:59:55 +00:00
										 |  |  |         self.assert_(b in seq) | 
					
						
							|  |  |  |         self.assert_(a not in seq) | 
					
						
							|  |  |  |         self.assertEqual(len(seq), 2) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-07 22:24:25 +00:00
										 |  |  |         seq = list(range(-a, -b, -c)) | 
					
						
							| 
									
										
										
										
											2004-07-08 01:59:55 +00:00
										 |  |  |         self.assert_(-a in seq) | 
					
						
							|  |  |  |         self.assert_(-b not in seq) | 
					
						
							|  |  |  |         self.assertEqual(len(seq), 2) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-07 22:24:25 +00:00
										 |  |  |         self.assertRaises(TypeError, range) | 
					
						
							|  |  |  |         self.assertRaises(TypeError, range, 1, 2, 3, 4) | 
					
						
							|  |  |  |         self.assertRaises(ValueError, range, 1, 2, 0) | 
					
						
							| 
									
										
										
										
											2004-07-08 01:59:55 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-07 22:24:25 +00:00
										 |  |  |         self.assertRaises(TypeError, range, 0.0, 2, 1) | 
					
						
							|  |  |  |         self.assertRaises(TypeError, range, 1, 2.0, 1) | 
					
						
							|  |  |  |         self.assertRaises(TypeError, range, 1, 2, 1.0) | 
					
						
							|  |  |  |         self.assertRaises(TypeError, range, 1e100, 1e101, 1e101) | 
					
						
							| 
									
										
										
										
											2004-07-08 01:59:55 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-07 22:24:25 +00:00
										 |  |  |         self.assertRaises(TypeError, range, 0, "spam") | 
					
						
							|  |  |  |         self.assertRaises(TypeError, range, 0, 42, "spam") | 
					
						
							| 
									
										
										
										
											2004-07-08 01:59:55 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-12-04 23:02:19 +00:00
										 |  |  |         self.assertEqual(len(range(0, sys.maxsize, sys.maxsize-1)), 2) | 
					
						
							| 
									
										
										
										
											2004-08-08 07:17:39 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-12-04 23:02:19 +00:00
										 |  |  |         r = range(-sys.maxsize, sys.maxsize, 2) | 
					
						
							|  |  |  |         self.assertEqual(len(r), sys.maxsize) | 
					
						
							| 
									
										
										
										
											2004-08-08 07:17:39 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-20 08:22:37 +00:00
										 |  |  |     def test_repr(self): | 
					
						
							| 
									
										
										
										
											2007-05-21 10:43:34 +00:00
										 |  |  |         self.assertEqual(repr(range(1)), 'range(0, 1)') | 
					
						
							| 
									
										
										
										
											2007-05-20 08:22:37 +00:00
										 |  |  |         self.assertEqual(repr(range(1, 2)), 'range(1, 2)') | 
					
						
							|  |  |  |         self.assertEqual(repr(range(1, 2, 3)), 'range(1, 2, 3)') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-10 04:03:04 +00:00
										 |  |  |     def test_pickling(self): | 
					
						
							|  |  |  |         testcases = [(13,), (0, 11), (-22, 10), (20, 3, -1), | 
					
						
							|  |  |  |                      (13, 21, 3), (-2, 2, 2)] | 
					
						
							| 
									
										
										
										
											2008-10-23 00:38:15 +00:00
										 |  |  |         for proto in range(pickle.HIGHEST_PROTOCOL + 1): | 
					
						
							| 
									
										
										
										
											2008-06-10 04:03:04 +00:00
										 |  |  |             for t in testcases: | 
					
						
							|  |  |  |                 r = range(*t) | 
					
						
							|  |  |  |                 self.assertEquals(list(pickle.loads(pickle.dumps(r, proto))), | 
					
						
							|  |  |  |                                   list(r)) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-07-08 01:59:55 +00:00
										 |  |  | def test_main(): | 
					
						
							| 
									
										
										
										
											2008-05-20 21:35:26 +00:00
										 |  |  |     test.support.run_unittest(RangeTest) | 
					
						
							| 
									
										
										
										
											2004-07-08 01:59:55 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | if __name__ == "__main__": | 
					
						
							|  |  |  |     test_main() |