Exemple #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)
Exemple #2
0
 def test_decode_string_dynamic(self):
     data = (
         b'0000000000000000000000000000000000000000000000000000000000000020'
         b'0000000000000000000000000000000000000000000000000000000000000005'
         b'48656c6c6f000000000000000000000000000000000000000000000000000000'
     )
     assert decode_abi(["string"], data) == ["Hello"]
Exemple #3
0
 def test_decode_bytes_dynamic(self):
     data = (
         b'0000000000000000000000000000000000000000000000000000000000000020'
         b'0000000000000000000000000000000000000000000000000000000000000005'
         b'48656c6c6f000000000000000000000000000000000000000000000000000000'
     )
     assert decode_abi(["bytes"], data) == [b"Hello"]
Exemple #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]]
Exemple #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]]
Exemple #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]]
Exemple #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]]
Exemple #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]]
Exemple #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]]
Exemple #10
0
 def test_address_static_array(self):
     data = (
         b'00000000000000000000000065b8e2a5ff60a33b140ce88f15041335dc8c42e5'
         b'0000000000000000000000003f1dd9e8c35196156d875b6162c3a6f92588c315'
         b'00000000000000000000000065d2ee62332f292cbad83bc92ae4799d69371fa5'
     )
     assert decode_abi(["address[3]"], data) == [[
         0x65b8e2a5ff60a33b140ce88f15041335dc8c42e5,
         0x3f1dd9e8c35196156d875b6162c3a6f92588c315,
         0x65d2ee62332f292cbad83bc92ae4799d69371fa5
     ]]
Exemple #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]]
Exemple #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!"]
Exemple #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"]]
Exemple #14
0
 def test_single_address(self):
     assert decode_abi(
         ["address"],
         b'000000000000000000000000901ecd3b3322b2e5a10d8cd86924c5209039ca7b'
     ) == [0x901ecd3b3322b2e5a10d8cd86924c5209039ca7b]
Exemple #15
0
 def test_decode_double_uint256(self):
     data = (
         b'0000000000000000000000000000000000000000000000000000000000000003'
         b'0000000000000000000000000000000000000000000000000000000000000020'
     )
     assert decode_abi(["uint256", "uint256"], data) == [3, 32]
Exemple #16
0
 def test_fixed192x64_decode_max(self):
     data = b"7fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000"
     assert decode_abi(["fixed192x64"], data) == [(2.0**191) - 1]
Exemple #17
0
 def test_fixed192x64_decode_min(self):
     data = b"8000000000000000000000000000000000000000000000000000000000000000"
     assert decode_abi(["fixed192x64"], data) == [-2.0**191]
Exemple #18
0
 def test_decode_single_int256_minus_one(self):
     data = \
         b'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'
     assert decode_abi(["int256"], data) == [-1]
Exemple #19
0
 def test_simple_ufixed128x128_decode(self):
     data = b'0000000000000000000000000000000155554fbdad7520000000000000000000'
     assert decode_abi(["ufixed128x128"], data) == [1.333333]
Exemple #20
0
 def test_decode_single_int256_plus_one(self):
     data = \
         b'0000000000000000000000000000000000000000000000000000000000000001'
     assert decode_abi(["int256"], data) == [1]
Exemple #21
0
 def test_decode_string_10(self):
     data = b"48656c6c6f000000000000000000000000000000000000000000000000000000"
     assert decode_abi(["string10"], data) == ["Hello"]
Exemple #22
0
 def test_decode_single_int256_max_pos(self):
     data = \
         b"7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
     assert decode_abi(["int256"], data) == [2**255 - 1]
Exemple #23
0
 def test_decode_single_uint256_max(self):
     data = \
         b'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'
     assert decode_abi(["uint256"], data) == [2**256 - 1]
Exemple #24
0
 def test_decode_single_int256_max_neg(self):
     data = \
         b'8000000000000000000000000000000000000000000000000000000000000000'
     assert decode_abi(["int256"], data) == [-(2**255)]
Exemple #25
0
 def test_decode_bool_false(self):
     data = \
         b'0000000000000000000000000000000000000000000000000000000000000000'
     assert decode_abi(["bool"], data) == [False]
Exemple #26
0
 def test_decode_bool_true(self):
     data = \
         b'0000000000000000000000000000000000000000000000000000000000000001'
     assert decode_abi(["bool"], data) == [True]
Exemple #27
0
 def test_decode_bytes_10(self):
     data = b"48656c6c6f000000000000000000000000000000000000000000000000000000"
     assert decode_abi(["bytes10"], data) == [b"Hello"]
Exemple #28
0
 def test_decode_single_uint256(self):
     data = \
         b'0000000000000000000000000000000000000000000000000000000000000003'
     assert decode_abi(["uint256"], data) == [3]