示例#1
0
 def test_signed_big_endian_decode(self):
     field = steel.Integer(size=2, signed=True, endianness='>')
     self.assertEqual(field.decode(b'\x00\x02'), 2)
     self.assertEqual(field.decode(b'\xff\xfe'), -2)
示例#2
0
 def test_unsigned_negative_encode(self):
     field = steel.Integer(size=1)
     with self.assertRaises(ValueError):
         field.encode(-1)
示例#3
0
 def test_signed_encode(self):
     field = steel.Integer(size=1, signed=True)
     self.assertEqual(field.encode(1), b'\x01')
     self.assertEqual(field.encode(-1), b'\xff')
示例#4
0
 def test_signed_decode(self):
     field = steel.Integer(size=1, signed=True)
     self.assertEqual(field.decode(b'\x01'), 1)
     self.assertEqual(field.decode(b'\xff'), -1)
示例#5
0
 def test_too_large_encode(self):
     field = steel.Integer(size=1)
     with self.assertRaises(ValueError):
         field.encode(256)
示例#6
0
 def test_char_encode(self):
     field = steel.Integer(size=1)
     self.assertEqual(field.encode(1), b'\x01')
示例#7
0
 def test_invalid_size(self):
     with self.assertRaises(TypeError):
         steel.Integer(size=3)
示例#8
0
 def setUp(self):
     self.field = steel.List(steel.Integer(size=1), size=4)
示例#9
0
 def test_long_long_encode(self):
     field = steel.Integer(size=8)
     self.assertEqual(field.encode(8), b'\x08\x00\x00\x00\x00\x00\x00\x00')
示例#10
0
 def test_long_long_decode(self):
     field = steel.Integer(size=8)
     self.assertEqual(field.decode(b'\x08\x00\x00\x00\x00\x00\x00\x00'), 8)
示例#11
0
 def test_short_decode(self):
     field = steel.Integer(size=2)
     self.assertEqual(field.decode(b'\x02\x00'), 2)
示例#12
0
 def test_short_encode(self):
     field = steel.Integer(size=2)
     self.assertEqual(field.encode(2), b'\x02\x00')
示例#13
0
 def test_encode_defaults(self):
     field = steel.List(steel.Integer(size=1, default=0), size=4)
     value = field.encode([1, 2, 3])
     self.assertEqual(value, b'\x01\x02\x03\x00')
示例#14
0
 def test_too_large_negative_signed_encode(self):
     field = steel.Integer(size=1, signed=True)
     with self.assertRaises(ValueError):
         field.encode(-129)
示例#15
0
 def test_big_endian_decode(self):
     field = steel.Integer(size=2, endianness='>')
     self.assertEqual(field.decode(b'\x00\x02'), 2)
示例#16
0
 def test_char_decode(self):
     field = steel.Integer(size=1)
     self.assertEqual(field.decode(b'\x01'), 1)
示例#17
0
 class A(steel.Structure):
     field1 = steel.Integer(size=1)
     field2 = steel.Object(B)