예제 #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)