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)
def test_unsigned_negative_encode(self): field = steel.Integer(size=1) with self.assertRaises(ValueError): field.encode(-1)
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')
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)
def test_too_large_encode(self): field = steel.Integer(size=1) with self.assertRaises(ValueError): field.encode(256)
def test_char_encode(self): field = steel.Integer(size=1) self.assertEqual(field.encode(1), b'\x01')
def test_invalid_size(self): with self.assertRaises(TypeError): steel.Integer(size=3)
def setUp(self): self.field = steel.List(steel.Integer(size=1), size=4)
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')
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)
def test_short_decode(self): field = steel.Integer(size=2) self.assertEqual(field.decode(b'\x02\x00'), 2)
def test_short_encode(self): field = steel.Integer(size=2) self.assertEqual(field.encode(2), b'\x02\x00')
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')
def test_too_large_negative_signed_encode(self): field = steel.Integer(size=1, signed=True) with self.assertRaises(ValueError): field.encode(-129)
def test_big_endian_decode(self): field = steel.Integer(size=2, endianness='>') self.assertEqual(field.decode(b'\x00\x02'), 2)
def test_char_decode(self): field = steel.Integer(size=1) self.assertEqual(field.decode(b'\x01'), 1)
class A(steel.Structure): field1 = steel.Integer(size=1) field2 = steel.Object(B)