#NOTE: maintain 2.6,2.7, 3.1-3.3 compatibility in a single source import sys import unittest from pickle import dumps, loads try: xrange = xrange except NameError: xrange = range # Py3k class TestCase(unittest.TestCase): def setUp(self): self.n = sys.maxsize self.r = xrange(self.n) def test_len(self): self.assertEqual(len(self.r), self.n) def test_load(self): s = 'c__builtin__\nxrange\np0\n(L0L\nL%dL\nL1L\ntp1\nRp2\n.' % self.n self.assertEqual(len(loads(s.encode('ascii'))), len(self.r)) def test_roundtrip(self): # fails on 2.6.6, 2.7.3 self.assertEqual(len(loads(dumps(self.r))), len(self.r)) if __name__ == "__main__": unittest.main()