t/t-bytes.py: Check that indexing, slicing, etc. return `C.ByteString'.
authorMark Wooding <mdw@distorted.org.uk>
Sun, 17 Nov 2019 23:44:57 +0000 (23:44 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Wed, 27 Nov 2019 15:11:29 +0000 (15:11 +0000)
t/t-algorithms.py
t/t-bytes.py

index 2fd0e09..d7b97cb 100644 (file)
@@ -788,7 +788,7 @@ class TestKeccak (HashBufferTestMixin):
 
     ## Check masking.
     x = xcls().hash(m).xof()
-    me.assertEqual(x.mask(m), C.ByteString(m) ^ C.ByteString(h[0:len(m)]))
+    me.assertEqual(x.mask(m), m ^ h[0:len(m)])
 
     ## Check the `check' method.
     me.assertTrue(xcls().hash(m).check(h0))
index 6755e96..36a3f9f 100644 (file)
@@ -48,6 +48,7 @@ class TestByteString (U.TestCase):
     x = C.ByteString(T.bin("once upon a time there was a string"))
 
     ## Check that simple indexing works.
+    me.assertEqual(type(x[3]), C.ByteString)
     me.assertEqual(x[3], 'e')
     me.assertEqual(x[-5], 't')
 
@@ -55,7 +56,8 @@ class TestByteString (U.TestCase):
     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 +145,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("")))