X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb-python/blobdiff_plain/62f9f6c4f3408ba29d555a7ed27658bbeae270c0..54ccbb3b2b6165c3d10e34f9e7a608b49d753b2c:/t/t-bytes.py diff --git a/t/t-bytes.py b/t/t-bytes.py index 6755e96..27b7e49 100644 --- a/t/t-bytes.py +++ b/t/t-bytes.py @@ -47,15 +47,23 @@ class TestByteString (U.TestCase): x = C.ByteString(T.bin("once upon a time there was a string")) - ## Check that simple indexing works. - me.assertEqual(x[3], 'e') - me.assertEqual(x[-5], 't') + ## Check that simple indexing works. Alas the behaviour differs between + ## Python major versions. + if T.PY3: + me.assertEqual(type(x[3]), int) + me.assertEqual(x[3], 101) + me.assertEqual(x[-5], 116) + else: + me.assertEqual(type(x[3]), C.ByteString) + me.assertEqual(x[3], 'e') + me.assertEqual(x[-5], 't') ## Check out-of-range detection. x[34]; me.assertRaises(IndexError, lambda: x[35]) x[-35]; me.assertRaises(IndexError, lambda: x[-36]) - ## Check slicing. + ## Check slicing. This should always give us bytes. + me.assertEqual(type(x[7:17]), C.ByteString) me.assertEqual(x[7:17], T.bin("on a time ")) ## Complex slicing is also supported. @@ -143,13 +151,18 @@ class TestByteString (U.TestCase): me.assertEqual(~x, C.bytes("fc5a03")) ## Concatenation. + me.assertEqual(type(x + y), C.ByteString) me.assertEqual(x + y, C.bytes("03a5fc5fac30")) ## Replication (asymmetric but commutative). + me.assertEqual(type(3*x), C.ByteString) + me.assertEqual(type(x*3), C.ByteString) me.assertEqual(3*x, C.bytes("03a5fc03a5fc03a5fc")) me.assertEqual(x*3, C.bytes("03a5fc03a5fc03a5fc")) ## Replication by zero (regression test). + me.assertEqual(type(0*x), C.ByteString) + me.assertEqual(type(x*0), C.ByteString) me.assertEqual(0*x, C.ByteString(T.bin(""))) me.assertEqual(x*0, C.ByteString(T.bin("")))