def test_bytes(self): s = transaction.BCDataStream() s.write(b'foobar') self.assertEqual(s.read_bytes(3), b'foo') self.assertEqual(s.read_bytes(2), b'ba') self.assertEqual(s.read_bytes(4), b'r') self.assertEqual(s.read_bytes(1), b'')
def test_bool(self): s = transaction.BCDataStream() s.write(b'f\x00\x00b') self.assertTrue(s.read_boolean()) self.assertFalse(s.read_boolean()) self.assertFalse(s.read_boolean()) self.assertTrue(s.read_boolean()) s.write_boolean(True) s.write_boolean(False) self.assertEqual(b'\x01\x00', s.read_bytes(2)) self.assertFalse(s.can_read_more())
def test_bytes(self): s = transaction.BCDataStream() with self.assertRaises(transaction.SerializationError): s.read_bytes(1) s.write(b'foobar') self.assertEqual(s.read_bytes(3), b'foo') self.assertEqual(s.read_bytes(2), b'ba') with self.assertRaises(transaction.SerializationError): s.read_bytes(4) self.assertEqual(s.read_bytes(0), b'') self.assertEqual(s.read_bytes(1), b'r') self.assertEqual(s.read_bytes(0), b'')
def test_string(self): s = transaction.BCDataStream() with self.assertRaises(transaction.SerializationError): s.read_string() msgs = ['Hello', ' ', 'World', '', '!'] for msg in msgs: s.write_string(msg) for msg in msgs: self.assertEqual(s.read_string(), msg) with self.assertRaises(transaction.SerializationError): s.read_string()
def test_compact_size(self): s = transaction.BCDataStream() values = [ 0, 1, 252, 253, 2**16 - 1, 2**16, 2**32 - 1, 2**32, 2**64 - 1 ] for v in values: s.write_compact_size(v) with self.assertRaises(transaction.SerializationError): s.write_compact_size(-1) self.assertEqual( bh2u(s.input), '0001fcfdfd00fdfffffe00000100feffffffffff0000000001000000ffffffffffffffffff' ) for v in values: self.assertEqual(s.read_compact_size(), v) with self.assertRaises(transaction.SerializationError): s.read_compact_size()