diff --git a/ssz/sedes/base.py b/ssz/sedes/base.py index b5ef2636..c450f79d 100644 --- a/ssz/sedes/base.py +++ b/ssz/sedes/base.py @@ -121,7 +121,7 @@ def max_content_length(self) -> int: return 2 ** (self.length_bytes * 8) - 1 def get_length_prefix(self, content: bytes) -> bytes: - return len(content).to_bytes(self.length_bytes, "big") + return len(content).to_bytes(self.length_bytes, "little") def validate_content_length(self, content: bytes) -> None: if len(content) >= self.max_content_length: @@ -146,7 +146,7 @@ def serialize_content(self, value: TSerializable) -> bytes: # def deserialize_segment(self, data: bytes, start_index: int) -> Tuple[TDeserialized, int]: prefix, content_start_index = self.consume_bytes(data, start_index, self.length_bytes) - length = int.from_bytes(prefix, "big") + length = int.from_bytes(prefix, "little") content, continuation_index = self.consume_bytes(data, content_start_index, length) return self.deserialize_content(content), continuation_index diff --git a/ssz/sedes/integer.py b/ssz/sedes/integer.py index 95348906..cbffa472 100644 --- a/ssz/sedes/integer.py +++ b/ssz/sedes/integer.py @@ -22,14 +22,14 @@ def serialize_content(self, value: int) -> bytes: ) try: - return value.to_bytes(self.length, 'big') + return value.to_bytes(self.length, "little") except OverflowError: raise SerializationError( f"{value} is too large to be serialized in {self.length * 8} bits" ) def deserialize_content(self, content: bytes) -> int: - return int.from_bytes(content, 'big') + return int.from_bytes(content, "little") uint8 = UnsignedInteger(8) diff --git a/ssz/tree_hash/merkle_hash.py b/ssz/tree_hash/merkle_hash.py index 0e43c790..41c4b077 100644 --- a/ssz/tree_hash/merkle_hash.py +++ b/ssz/tree_hash/merkle_hash.py @@ -21,7 +21,7 @@ def merkle_hash(input_items: Sequence[Any]) -> Hash32: """ # Store length of list (to compensate for non-bijectiveness of padding) - data_length = len(input_items).to_bytes(32, 'big') + data_length = len(input_items).to_bytes(32, "little") if len(input_items) == 0: # Handle empty list case diff --git a/tests/core/sedes/test_byte_serializer.py b/tests/core/sedes/test_byte_serializer.py index 7d5f445c..3fa12c16 100644 --- a/tests/core/sedes/test_byte_serializer.py +++ b/tests/core/sedes/test_byte_serializer.py @@ -14,27 +14,23 @@ 'value,expected', ( (b"", b'\x00\x00\x00\x00'), - (b"I", b'\x00\x00\x00\x01I'), - (b"foo", b'\x00\x00\x00\x03foo'), - (b"hello", b'\x00\x00\x00\x05hello'), - - (bytearray(b""), b'\x00\x00\x00\x00'), - (bytearray(b"I"), b'\x00\x00\x00\x01I'), - (bytearray(b"foo"), b'\x00\x00\x00\x03foo'), - (bytearray(b"hello"), b'\x00\x00\x00\x05hello'), + (b"I", b'\x01\x00\x00\x00I'), + (b"foo", b'\x03\x00\x00\x00foo'), + (b"hello", b'\x05\x00\x00\x00hello'), ), ) def test_bytes_serialize_values(value, expected): assert bytes_sedes.serialize(value) == expected + assert bytes_sedes.serialize(bytearray(value)) == expected @pytest.mark.parametrize( 'value,expected', ( (b'\x00\x00\x00\x00', b""), - (b'\x00\x00\x00\x01I', b"I"), - (b'\x00\x00\x00\x03foo', b"foo"), - (b'\x00\x00\x00\x05hello', b"hello"), + (b'\x01\x00\x00\x00I', b"I"), + (b'\x03\x00\x00\x00foo', b"foo"), + (b'\x05\x00\x00\x00hello', b"hello"), ), ) def test_bytes_deserialize_values(value, expected): @@ -45,13 +41,13 @@ def test_bytes_deserialize_values(value, expected): 'value', ( # Less than 4 bytes of serialized data - b'\x00\x00\x01', + b'\x01\x00\x00', # Insufficient serialized object data as per found out byte object length - b'\x00\x00\x00\x04', + b'\x04\x00\x00\x00', # Serialized data given is more than what is required - b'\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00' + b'\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00' ), ) def test_bytes_deserialization_bad_value(value): @@ -66,15 +62,11 @@ def test_bytes_deserialization_bad_value(value): (b"I", b'I'), (b"foo", b'foo'), (b"hello", b'hello'), - - (bytearray(b""), b''), - (bytearray(b"I"), b'I'), - (bytearray(b"foo"), b'foo'), - (bytearray(b"hello"), b'hello'), ), ) def test_bytes_round_trip(value, expected): assert bytes_sedes.deserialize(bytes_sedes.serialize(value)) == expected + assert bytes_sedes.deserialize(bytes_sedes.serialize(bytearray(value))) == expected @pytest.mark.parametrize( diff --git a/tests/core/sedes/test_integer_serializer.py b/tests/core/sedes/test_integer_serializer.py index 1aa7c349..8ed52008 100644 --- a/tests/core/sedes/test_integer_serializer.py +++ b/tests/core/sedes/test_integer_serializer.py @@ -23,15 +23,15 @@ (255, uint8, b'\xff'), (0, uint16, b'\x00\x00'), - (5, uint16, b'\x00\x05'), - (127, uint16, b'\x00\x7f'), - (256, uint16, b'\x01\x00'), - (1024, uint16, b'\x04\x00'), + (5, uint16, b'\x05\x00'), + (127, uint16, b'\x7f\x00'), + (256, uint16, b'\x00\x01'), + (1024, uint16, b'\x00\x04'), (65535, uint16, b'\xff\xff'), (0, uint32, b'\x00\x00\x00\x00'), - (5, uint32, b'\x00\x00\x00\x05'), - (65536, uint32, b'\x00\x01\x00\x00'), + (5, uint32, b'\x05\x00\x00\x00'), + (65536, uint32, b'\x00\x00\x01\x00'), (4294967295, uint32, b'\xff\xff\xff\xff'), (0, uint64, b'\x00\x00\x00\x00\x00\x00\x00\x00'), @@ -77,8 +77,8 @@ def test_ssz_encode_integer_serialize_bad_values(value): 'value,sedes,expected', ( (b'\x05', uint8, 5), - (b'\x00\x05', uint16, 5), - (b'\x00\x00\x00\x05', uint32, 5), + (b'\x05\x00', uint16, 5), + (b'\x05\x00\x00\x00', uint32, 5), (b'\x7f', uint8, 127), (b'\xff', uint8, 255), (b'\xff\xff', uint16, 65535), @@ -94,14 +94,15 @@ def test_integer_deserialize_values(value, sedes, expected): # Values too short (b'\x05', uint16), (b'\x7f', uint16), - (b'\x00\x05', uint32), - (b'\x00\x00\x00\x05', uint64), + (b'\x05\x00', uint32), + (b'\x05\x00\x00\x00', uint64), # Values too long (b'\x05\x00\x05', uint16), (b'\x7f\x00\x7f', uint16), - (b'\x00\x05\x00\x05\x00\x05', uint32), + (b'\x05\x00\x05\x00\x05\x00', uint32), (b'\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x05', uint64), + (b'\x05\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00', uint64), ), ) def test_integer_deserialize_bad_values(value, sedes): diff --git a/tests/core/sedes/test_list_serializer.py b/tests/core/sedes/test_list_serializer.py index a8ebe3b2..835a2076 100644 --- a/tests/core/sedes/test_list_serializer.py +++ b/tests/core/sedes/test_list_serializer.py @@ -38,54 +38,59 @@ ( [0, 1, 2, 3, 4], uint32_list, - b'\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x01' - b'\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04', + b'\x14\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00' + b'\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00', ), ( (0, 1, 2, 3, 4), uint32_list, - b'\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x01' - b'\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04', + b'\x14\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00' + b'\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00', ), ( range(5), uint32_list, - b'\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x01' - b'\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04', + b'\x14\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00' + b'\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00', ), # Serialize bytes32 Iterables - ([b'\x00' * 32], bytes32_list, b'\x00\x00\x00\x20' + (b'\x00' * 32)), - ([b'\x00' * 32, b'\x00' * 32], bytes32_list, b'\x00\x00\x00\x40' + (b'\x00' * 64)), - ((b'\x00' * 32, b'\x00' * 32), bytes32_list, b'\x00\x00\x00\x40' + (b'\x00' * 64)), + ([b'\x00' * 32], bytes32_list, b'\x20\x00\x00\x00' + (b'\x00' * 32)), + ([b'\x00' * 32, b'\x00' * 32], bytes32_list, b'\x40\x00\x00\x00' + (b'\x00' * 64)), + ((b'\x00' * 32, b'\x00' * 32), bytes32_list, b'\x40\x00\x00\x00' + (b'\x00' * 64)), # Serialize bytes48 Iterables - ([b'\x00' * 48], bytes48_list, b'\x00\x00\x00\x30' + (b'\x00' * 48)), - ([b'\x00' * 48, b'\x00' * 48], bytes48_list, b'\x00\x00\x00\x60' + (b'\x00' * 96)), - ((b'\x00' * 48, b'\x00' * 48), bytes48_list, b'\x00\x00\x00\x60' + (b'\x00' * 96)), + ([b'\x00' * 48], bytes48_list, b'\x30\x00\x00\x00' + (b'\x00' * 48)), + ([b'\x00' * 48, b'\x00' * 48], bytes48_list, b'\x60\x00\x00\x00' + (b'\x00' * 96)), + ((b'\x00' * 48, b'\x00' * 48), bytes48_list, b'\x60\x00\x00\x00' + (b'\x00' * 96)), # Serialize bytes96 Iterables - ([b'\x00' * 96], bytes96_list, b'\x00\x00\x00\x60' + (b'\x00' * 96)), - ([b'\x00' * 96, b'\x00' * 96], bytes96_list, b'\x00\x00\x00\xc0' + (b'\x00' * 192)), - ((b'\x00' * 96, b'\x00' * 96), bytes96_list, b'\x00\x00\x00\xc0' + (b'\x00' * 192)), + ([b'\x00' * 96], bytes96_list, b'\x60\x00\x00\x00' + (b'\x00' * 96)), + ([b'\x00' * 96, b'\x00' * 96], bytes96_list, b'\xc0\x00\x00\x00' + (b'\x00' * 192)), + ((b'\x00' * 96, b'\x00' * 96), bytes96_list, b'\xc0\x00\x00\x00' + (b'\x00' * 192)), # Serialize boolean Iterables - ([True, True, True, True], boolean_list, b'\x00\x00\x00\x04' + b'\x01' * 4), - ((True, True, True, True), boolean_list, b'\x00\x00\x00\x04' + b'\x01' * 4), - ([False, False, False, False], boolean_list, b'\x00\x00\x00\x04' + b'\x00' * 4), - ((False, False, False, False), boolean_list, b'\x00\x00\x00\x04' + b'\x00' * 4), - ([True, False, True, False], boolean_list, b'\x00\x00\x00\x04\x01\x00\x01\x00'), - ((True, False, True, False), boolean_list, b'\x00\x00\x00\x04\x01\x00\x01\x00'), + ([True, True, True, True], boolean_list, b'\x04\x00\x00\x00' + b'\x01' * 4), + ((True, True, True, True), boolean_list, b'\x04\x00\x00\x00' + b'\x01' * 4), + ([False, False, False, False], boolean_list, b'\x04\x00\x00\x00' + b'\x00' * 4), + ((False, False, False, False), boolean_list, b'\x04\x00\x00\x00' + b'\x00' * 4), + ([True, False, True, False], boolean_list, b'\x04\x00\x00\x00\x01\x00\x01\x00'), + ((True, False, True, False), boolean_list, b'\x04\x00\x00\x00\x01\x00\x01\x00'), # Serialize bytes Iterables - ([b'\x01'], bytes_list, b'\x00\x00\x00\x05\x00\x00\x00\x01\x01'), - ([b'\x01', b'\x02'], bytes_list, b'\x00\x00\x00\n\x00\x00\x00\x01\x01\x00\x00\x00\x01\x02'), + ([b'\x01'], bytes_list, b'\x05\x00\x00\x00\x01\x00\x00\x00\x01'), + ( + [b'\x01', b'\x02'], + bytes_list, + b'\x0a\x00\x00\x00\x01\x00\x00\x00\x01\x01\x00\x00\x00\x02', + ), ( [b'\x01\x02', b'\x02\x03'], bytes_list, - b'\x00\x00\x00\x0c\x00\x00\x00' - b'\x02\x01\x02\x00\x00\x00\x02\x02\x03', + b'\x0c\x00\x00\x00' + b'\x02\x00\x00\x00\x01\x02' + b'\x02\x00\x00\x00\x02\x03', ), ), ) @@ -135,36 +140,43 @@ def test_list_serialize_bad_values(value, sedes): # Deserialize uint32 Iterables ( - b'\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x01' - b'\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04', + b'\x14\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00' + b'\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00', uint32_list, (0, 1, 2, 3, 4), ), # Deserialize bytes32 Iterables - (b'\x00\x00\x00\x20' + (b'\x00' * 32), bytes32_list, (b'\x00' * 32,)), - (b'\x00\x00\x00\x40' + (b'\x00' * 64), bytes32_list, (b'\x00' * 32, b'\x00' * 32)), + (b'\x20\x00\x00\x00' + (b'\x00' * 32), bytes32_list, (b'\x00' * 32,)), + (b'\x40\x00\x00\x00' + (b'\x00' * 64), bytes32_list, (b'\x00' * 32, b'\x00' * 32)), # Deserialize bytes48 Iterables - (b'\x00\x00\x00\x30' + (b'\x00' * 48), bytes48_list, (b'\x00' * 48,)), - (b'\x00\x00\x00\x60' + (b'\x00' * 96), bytes48_list, (b'\x00' * 48, b'\x00' * 48)), + (b'\x30\x00\x00\x00' + (b'\x00' * 48), bytes48_list, (b'\x00' * 48,)), + (b'\x60\x00\x00\x00' + (b'\x00' * 96), bytes48_list, (b'\x00' * 48, b'\x00' * 48)), # Deserialize bytes96 Iterables - (b'\x00\x00\x00\x60' + (b'\x00' * 96), bytes96_list, (b'\x00' * 96,)), - (b'\x00\x00\x00\xc0' + (b'\x00' * 192), bytes96_list, (b'\x00' * 96, b'\x00' * 96)), + (b'\x60\x00\x00\x00' + (b'\x00' * 96), bytes96_list, (b'\x00' * 96,)), + (b'\xc0\x00\x00\x00' + (b'\x00' * 192), bytes96_list, (b'\x00' * 96, b'\x00' * 96)), # Deserialize boolean Iterables - (b'\x00\x00\x00\x04' + b'\x01' * 4, boolean_list, (True, True, True, True)), - (b'\x00\x00\x00\x04' + b'\x00' * 4, boolean_list, (False, False, False, False)), - (b'\x00\x00\x00\x04\x01\x00\x01\x00', boolean_list, (True, False, True, False)), + (b'\x04\x00\x00\x00' + b'\x01' * 4, boolean_list, (True, True, True, True)), + (b'\x04\x00\x00\x00' + b'\x00' * 4, boolean_list, (False, False, False, False)), + (b'\x04\x00\x00\x00\x01\x00\x01\x00', boolean_list, (True, False, True, False)), # Deserialize bytes Iterables # Serialize bytes Iterables - (b'\x00\x00\x00\x05\x00\x00\x00\x01\x01', bytes_list, (b'\x01',)), - (b'\x00\x00\x00\n\x00\x00\x00\x01\x01\x00\x00\x00\x01\x02', bytes_list, (b'\x01', b'\x02')), + (b'\x05\x00\x00\x00\x01\x00\x00\x00\x01', bytes_list, (b'\x01',)), + ( + b'\x0a\x00\x00\x00' + b'\x01\x00\x00\x00\x01' + b'\x01\x00\x00\x00\x02', + bytes_list, + (b'\x01', b'\x02'), + ), ( - b'\x00\x00\x00\x0c\x00\x00\x00' - b'\x02\x01\x02\x00\x00\x00\x02\x02\x03', + b'\x0c\x00\x00\x00' + b'\x02\x00\x00\x00\x01\x02' + b'\x02\x00\x00\x00\x02\x03', bytes_list, (b'\x01\x02', b'\x02\x03'), ), @@ -185,21 +197,21 @@ def test_list_deserialize_values(value, sedes, expected): (b'\x00\x00\x00', boolean_list), # Insufficient serialized list data as per found out list length - (b'\x00\x00\x04', uint32_list), - (b'\x00\x00\x04', bytes32_list), - (b'\x00\x00\x04', bytes48_list), - (b'\x00\x00\x04', bytes96_list), - (b'\x00\x00\x04', boolean_list), + (b'\x04\x00\x00\x00\x00', uint32_list), + (b'\x04\x00\x00\x00\x00', bytes32_list), + (b'\x04\x00\x00\x00\x00', bytes48_list), + (b'\x04\x00\x00\x00\x00', bytes96_list), + (b'\x04\x00\x00\x00\x00', boolean_list), # Serialized data given is more than what is required - (b'\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00', uint32_list), - (b'\x00\x00\x00 ' + (b'\x00' * 35), bytes32_list), - (b'\x00\x00\x00\x14' + (b'\x00' * 53), bytes48_list), - (b'\x00\x00\x00\x14' + (b'\x00' * 101), bytes96_list), - (b'\x00\x00\x00\x04' + b'\x01' * 5, boolean_list), + (b'\x08\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00' + b'\x00', uint32_list), + (b'\x20\x00\x00\x00' + (b'\x00' * 35), bytes32_list), + (b'\x14\x00\x00\x00' + (b'\x00' * 53), bytes48_list), + (b'\x14\x00\x00\x00' + (b'\x00' * 101), bytes96_list), + (b'\x04\x00\x00\x00' + b'\x01' * 5, boolean_list), # Non-empty lists for empty sedes - (b'\x00\x00\x00\x01\x00', empty_list) + (b'\x01\x00\x00\x00\x00', empty_list) ), ) def test_list_deserialize_bad_values(value, sedes): diff --git a/tests/core/test_serializable.py b/tests/core/test_serializable.py index 1d10e9a5..f60aea70 100644 --- a/tests/core/test_serializable.py +++ b/tests/core/test_serializable.py @@ -222,16 +222,16 @@ def test_undeclared_fields_serializable_class(): (b'\x00\x00\x00', SSZType4), # Insufficient serialized container data as per found out container length - (b'\x00\x00\x00\x04', SSZType1), - (b'\x00\x00\x00\x04', SSZType2), - (b'\x00\x00\x00\x04', SSZType3), - (b'\x00\x00\x00\x04', SSZType4), + (b'\x04\x00\x00\x00', SSZType1), + (b'\x04\x00\x00\x00', SSZType2), + (b'\x04\x00\x00\x00', SSZType3), + (b'\x04\x00\x00\x00', SSZType4), # Serialized data given is more than what is required - (b'\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00', SSZType1), - (b'\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00', SSZType2), - (b'\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00', SSZType3), - (b'\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00', SSZType4), + (b'\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00', SSZType1), + (b'\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00', SSZType2), + (b'\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00', SSZType3), + (b'\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00', SSZType4), ), ) def test_container_deserialize_bad_values(value, sedes): @@ -258,28 +258,37 @@ def test_subset_or_superset_fields_container_deserialize_bad_values(): ( type_1_a(), SSZType1, - b'\x00\x00\x00\x15\x00\x00\x00\x05\x00\x00\x00\x01a' - b'\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x01', + b'\x15\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x61' + b'\x08\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00', ), ( type_1_b(), SSZType1, - b'\x00\x00\x00\x15\x00\x00\x00\t\x00\x00\x00\x01b' - b'\x00\x00\x00\x08\x00\x00\x00\x02\x00\x00\x00\x03', + b'\x15\x00\x00\x00\x09\x00\x00\x00\x01\x00\x00\x00\x62' + b'\x08\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00', ), ( type_2(), SSZType2, - b'\x00\x00\x00O\x00\x00\x00\x15\x00\x00\x00\x05\x00\x00\x00' - b'\x01a\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x01\x00' - b'\x00\x002\x00\x00\x00\x15\x00\x00\x00\x05\x00\x00\x00\x01a' - b'\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x15\x00' - b'\x00\x00\t\x00\x00\x00\x01b\x00\x00\x00\x08\x00\x00' - b'\x00\x02\x00\x00\x00\x03', + b'\x4f\x00\x00\x00' # SSZType2 prefix + b'\x15\x00\x00\x00' # SSZType1 prefix + b'\x05\x00\x00\x00' # SSZType1.field1 (uint32) + b'\x01\x00\x00\x00\x61' # SSZType1.field2 (bytes) + b'\x08\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00' # SSZType1.field3 (uint32_list) + b'\x32\x00\x00\x00' # SSZType2.field2 (List[SSZType1]) prefix + b'\x15\x00\x00\x00' # SSZType1 prefix + b'\x05\x00\x00\x00' # SSZType1.field1 (uint32) + b'\x01\x00\x00\x00\x61' # SSZType1.field2 (bytes) + b'\x08\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00' # SSZType1.field3 (uint32_list) + b'\x15\x00\x00\x00' # SSZType1 prefix + b'\x09\x00\x00\x00' # SSZType1.field1 (uint32) + b'\x01\x00\x00\x00\x62' # SSZType1.field2 (bytes) + b'\x08\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00', # SSZType1.field3 (uint32_list) ), ) ) def test_serializable_serialization(value, sedes, expected): + sedes.deserialize(expected) assert sedes.serialize(value) == expected @@ -406,12 +415,12 @@ class Child(Parent): parent = Parent(1, 2) assert parent.field_a == 1 assert parent.field_b == 2 - assert Parent.serialize(parent) == b'\x00\x00\x00\x08\x00\x00\x00\x01\x00\x00\x00\x02' + assert Parent.serialize(parent) == b'\x08\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00' child = Child(3, 4) assert child.field_a == 3 assert child.field_b == 4 - assert Child.serialize(child) == b'\x00\x00\x00\x08\x00\x00\x00\x03\x00\x00\x00\x04' + assert Child.serialize(child) == b'\x08\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00' def test_serializable_single_inheritance_with_fields(): @@ -431,7 +440,7 @@ class Child(Parent): parent = Parent(1, 2) assert parent.field_a == 1 assert parent.field_b == 2 - assert Parent.serialize(parent) == b'\x00\x00\x00\x08\x00\x00\x00\x01\x00\x00\x00\x02' + assert Parent.serialize(parent) == b'\x08\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00' with pytest.raises(TypeError): # ensure that the fields don't somehow leak into the parent class. @@ -441,8 +450,8 @@ class Child(Parent): assert child.field_a == 3 assert child.field_b == 4 assert child.field_c == 5 - assert Child.serialize(child) == (b'\x00\x00\x00\x0c\x00\x00\x00\x03' - b'\x00\x00\x00\x04\x00\x00\x00\x05') + assert Child.serialize(child) == (b'\x0c\x00\x00\x00\x03\x00\x00\x00' + b'\x04\x00\x00\x00\x05\x00\x00\x00') def test_serializable_inheritance_with_sedes_overrides(): @@ -462,14 +471,14 @@ class Child(Parent): parent = Parent(1, 2) assert parent.field_a == 1 assert parent.field_b == 2 - assert Parent.serialize(parent) == b'\x00\x00\x00\x08\x00\x00\x00\x01\x00\x00\x00\x02' + assert Parent.serialize(parent) == b'\x08\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00' child = Child(b'1', b'2', b'3') assert child.field_a == b'1' assert child.field_b == b'2' assert child.field_c == b'3' - assert Child.serialize(child) == (b'\x00\x00\x00\x0f\x00\x00\x00\x011\x00' - b'\x00\x00\x012\x00\x00\x00\x013') + assert Child.serialize(child) == (b'\x0f\x00\x00\x00\x01\x00\x00\x00\x31' + b'\x01\x00\x00\x00\x32\x01\x00\x00\x00\x33') def test_serializable_multiple_inheritance_requires_all_parent_fields(): diff --git a/tests/core/tree_hash/test_merkle_hash.py b/tests/core/tree_hash/test_merkle_hash.py index 12638d5a..00b660da 100644 --- a/tests/core/tree_hash/test_merkle_hash.py +++ b/tests/core/tree_hash/test_merkle_hash.py @@ -18,18 +18,18 @@ ), ( (b'\x01',), - b'\x01' + int(1).to_bytes(32, 'big'), + b'\x01' + int(1).to_bytes(32, "little"), ), ( (b'\x01', b'\x01', b'\x01',), - b'\x01\x01\x01' + int(3).to_bytes(32, 'big'), + b'\x01\x01\x01' + int(3).to_bytes(32, "little"), ), # two items in one chunk ( (b'\x55' * 64, b'\x66' * 64, b'\x77' * 64,), ( hash_eth2(b'\x55' * 64 + b'\x66' * 64 + b'\x77' * 64) + - int(3).to_bytes(32, 'big') + int(3).to_bytes(32, "little") ), ), ( @@ -39,7 +39,7 @@ hash_eth2(b'\x55' * 96 + b'\x66' * 96) + hash_eth2(b'\x77' * 96 + b'\x88' * 96) )) + - int(4).to_bytes(32, 'big') + int(4).to_bytes(32, "little") ), ), ), diff --git a/tests/core/tree_hash/test_single_values.py b/tests/core/tree_hash/test_single_values.py index 332b320e..d5f29dc7 100644 --- a/tests/core/tree_hash/test_single_values.py +++ b/tests/core/tree_hash/test_single_values.py @@ -51,7 +51,7 @@ def test_unsign_integers_less_than_32_bytes(data, num_bits): max_value=2**num_bits - 1, ) ) - expected = value.to_bytes(num_bits // 8, 'big').ljust(32, b'\x00') + expected = value.to_bytes(num_bits // 8, "little").ljust(32, b'\x00') assert hash_tree_root(value, uint_n) == expected @@ -68,7 +68,7 @@ def test_unsign_integers_more_than_32_bytes(data, num_bits): max_value=2**num_bits - 1, ) ) - expected = hash_eth2(value.to_bytes(num_bits // 8, 'big')) + expected = hash_eth2(value.to_bytes(num_bits // 8, "little")) assert hash_tree_root(value, uint_n) == expected