Пример #1
0
 def test_handle_wrong_signature(self):
     """ treating fixed array data as dynamic may give very strange results """
     data = (
         b'000000000000000000000000000000000000000000000000000000000000001d'
         b'000000000000000000000000000000000000000000000000000000000000001f'
         b'0000000000000000000000000000000000000000000000000000000000000026'
     )
     with pytest.raises(ValueError):
         decode_abi(["uint256[]"], data)
Пример #2
0
 def test_decode_string_dynamic(self):
     data = (
         b'0000000000000000000000000000000000000000000000000000000000000020'
         b'0000000000000000000000000000000000000000000000000000000000000005'
         b'48656c6c6f000000000000000000000000000000000000000000000000000000'
     )
     assert decode_abi(["string"], data) == ["Hello"]
Пример #3
0
 def test_decode_bytes_dynamic(self):
     data = (
         b'0000000000000000000000000000000000000000000000000000000000000020'
         b'0000000000000000000000000000000000000000000000000000000000000005'
         b'48656c6c6f000000000000000000000000000000000000000000000000000000'
     )
     assert decode_abi(["bytes"], data) == [b"Hello"]
Пример #4
0
 def test_ufixed64x192_static_array(self):
     data = (
         b'000000000000000155554fbdad75200000000000000000000000000000000000'
         b'0000000000000000800000000000000000000000000000000000000000000000'
         b'0000000000000009fd70a3d70a3d800000000000000000000000000000000000'
     )
     assert decode_abi(["ufixed64x192[3]"], data) == [[1.333333, 0.5, 9.99]]
Пример #5
0
 def test_decode_dynamic_uint256_static_array(self):
     data = (
         b'000000000000000000000000000000000000000000000000000000000000001d'
         b'000000000000000000000000000000000000000000000000000000000000001f'
         b'0000000000000000000000000000000000000000000000000000000000000026'
     )
     assert decode_abi(["uint256[3]"], data) == [[29, 31, 38]]
Пример #6
0
 def test_decode_bool_static_array(self):
     data = (
         b'0000000000000000000000000000000000000000000000000000000000000001'
         b'0000000000000000000000000000000000000000000000000000000000000000'
         b'0000000000000000000000000000000000000000000000000000000000000001'
     )
     assert decode_abi(["bool[3]"], data) == [[True, False, True]]
Пример #7
0
 def test_fixed192x64_static_array(self):
     data = (
         b'8000000000000000000000000000000000000000000000000000000000000000'
         b'fffffffffffffffffffffffffffffffffffffffffffffb2d6ea4a8c154c00000'
         b'7fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000'
     )
     assert decode_abi(["fixed192x64[3]"],
                       data) == [[-2.0**191, -1234.5678, 2.0**191 - 1]]
Пример #8
0
 def test_decode_bool_dynamic_array(self):
     data = (
         b'0000000000000000000000000000000000000000000000000000000000000020'
         b'0000000000000000000000000000000000000000000000000000000000000003'
         b'0000000000000000000000000000000000000000000000000000000000000001'
         b'0000000000000000000000000000000000000000000000000000000000000000'
         b'0000000000000000000000000000000000000000000000000000000000000001'
     )
     assert decode_abi(["bool[]"], data) == [[True, False, True]]
Пример #9
0
 def test_decode_int256_static_array(self):
     pass
     data = (
         b'8000000000000000000000000000000000000000000000000000000000000000'
         b'fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7961'
         b'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'
         b'000000000000000000000000000000000000000000000000000000000001869f'
         b'7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'
     )
     assert decode_abi(["int256[5]"],
                       data) == [[-2**255, -99999, -1, 99999, 2**255 - 1]]
Пример #10
0
 def test_address_static_array(self):
     data = (
         b'00000000000000000000000065b8e2a5ff60a33b140ce88f15041335dc8c42e5'
         b'0000000000000000000000003f1dd9e8c35196156d875b6162c3a6f92588c315'
         b'00000000000000000000000065d2ee62332f292cbad83bc92ae4799d69371fa5'
     )
     assert decode_abi(["address[3]"], data) == [[
         0x65b8e2a5ff60a33b140ce88f15041335dc8c42e5,
         0x3f1dd9e8c35196156d875b6162c3a6f92588c315,
         0x65d2ee62332f292cbad83bc92ae4799d69371fa5
     ]]
Пример #11
0
 def test_decode_int256_dynamic_array(self):
     data = (
         b'0000000000000000000000000000000000000000000000000000000000000020'
         b'0000000000000000000000000000000000000000000000000000000000000005'
         b'8000000000000000000000000000000000000000000000000000000000000000'
         b'fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7961'
         b'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'
         b'000000000000000000000000000000000000000000000000000000000001869f'
         b'7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'
     )
     assert decode_abi(["int256[]"],
                       data) == [[-2**255, -99999, -1, 99999, 2**255 - 1]]
Пример #12
0
 def test_complex(self):
     assert decode_abi(
         ["uint256", "uint32[]", "bytes10", "bytes"],
         b'0000000000000000000000000000000000000000000000000000000000000123'
         b'0000000000000000000000000000000000000000000000000000000000000080'
         b'3132333435363738393000000000000000000000000000000000000000000000'
         b'00000000000000000000000000000000000000000000000000000000000000e0'
         b'0000000000000000000000000000000000000000000000000000000000000002'
         b'0000000000000000000000000000000000000000000000000000000000000456'
         b'0000000000000000000000000000000000000000000000000000000000000789'
         b'000000000000000000000000000000000000000000000000000000000000000d'
         b'48656c6c6f2c20776f726c642100000000000000000000000000000000000000'
     ) == [0x123, [0x456, 0x789], b"1234567890", b"Hello, world!"]
Пример #13
0
 def test_decode_string_dynamic_array(self):
     """ Not sure if bytes[] or even bytes[5] is supported at this moment """
     data = (
         b'0000000000000000000000000000000000000000000000000000000000000020'
         b'0000000000000000000000000000000000000000000000000000000000000005'
         b'48656c6c6f000000000000000000000000000000000000000000000000000000'
         b'576f726c64000000000000000000000000000000000000000000000000000000'
         b'486f770000000000000000000000000000000000000000000000000000000000'
         b'4172650000000000000000000000000000000000000000000000000000000000'
         b'596f750000000000000000000000000000000000000000000000000000000000'
     )
     assert decode_abi(["string32[]"],
                       data) == [["Hello", "World", "How", "Are", "You"]]
Пример #14
0
 def test_single_address(self):
     assert decode_abi(
         ["address"],
         b'000000000000000000000000901ecd3b3322b2e5a10d8cd86924c5209039ca7b'
     ) == [0x901ecd3b3322b2e5a10d8cd86924c5209039ca7b]
Пример #15
0
 def test_decode_double_uint256(self):
     data = (
         b'0000000000000000000000000000000000000000000000000000000000000003'
         b'0000000000000000000000000000000000000000000000000000000000000020'
     )
     assert decode_abi(["uint256", "uint256"], data) == [3, 32]
Пример #16
0
 def test_fixed192x64_decode_max(self):
     data = b"7fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000"
     assert decode_abi(["fixed192x64"], data) == [(2.0**191) - 1]
Пример #17
0
 def test_fixed192x64_decode_min(self):
     data = b"8000000000000000000000000000000000000000000000000000000000000000"
     assert decode_abi(["fixed192x64"], data) == [-2.0**191]
Пример #18
0
 def test_decode_single_int256_minus_one(self):
     data = \
         b'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'
     assert decode_abi(["int256"], data) == [-1]
Пример #19
0
 def test_simple_ufixed128x128_decode(self):
     data = b'0000000000000000000000000000000155554fbdad7520000000000000000000'
     assert decode_abi(["ufixed128x128"], data) == [1.333333]
Пример #20
0
 def test_decode_single_int256_plus_one(self):
     data = \
         b'0000000000000000000000000000000000000000000000000000000000000001'
     assert decode_abi(["int256"], data) == [1]
Пример #21
0
 def test_decode_string_10(self):
     data = b"48656c6c6f000000000000000000000000000000000000000000000000000000"
     assert decode_abi(["string10"], data) == ["Hello"]
Пример #22
0
 def test_decode_single_int256_max_pos(self):
     data = \
         b"7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
     assert decode_abi(["int256"], data) == [2**255 - 1]
Пример #23
0
 def test_decode_single_uint256_max(self):
     data = \
         b'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'
     assert decode_abi(["uint256"], data) == [2**256 - 1]
Пример #24
0
 def test_decode_single_int256_max_neg(self):
     data = \
         b'8000000000000000000000000000000000000000000000000000000000000000'
     assert decode_abi(["int256"], data) == [-(2**255)]
Пример #25
0
 def test_decode_bool_false(self):
     data = \
         b'0000000000000000000000000000000000000000000000000000000000000000'
     assert decode_abi(["bool"], data) == [False]
Пример #26
0
 def test_decode_bool_true(self):
     data = \
         b'0000000000000000000000000000000000000000000000000000000000000001'
     assert decode_abi(["bool"], data) == [True]
Пример #27
0
 def test_decode_bytes_10(self):
     data = b"48656c6c6f000000000000000000000000000000000000000000000000000000"
     assert decode_abi(["bytes10"], data) == [b"Hello"]
Пример #28
0
 def test_decode_single_uint256(self):
     data = \
         b'0000000000000000000000000000000000000000000000000000000000000003'
     assert decode_abi(["uint256"], data) == [3]