@@ -245,36 +245,43 @@ void test_eth_abi_int64(void) {
245245 ok (d2 == -0x7cf23097b81adc30 && d3 == 0x45fd66a734b67d50 , "encode -0x7cf23097b81adc30 and 0x45fd66a734b67d50" );
246246}
247247
248- // void test_eth_abi_mpint(void) {
249- // struct eth_abi abi0, abi1;
250- // size_t hexlen;
251- // char *hex;
252- // mpz_t mpz0, mpz1, mpz2;
253- //
254- // mpz_init_set_str(mpz0, "0xff", 0);
255- // mpz_init_set_str(mpz1, "0xfff", 0);
256- // mpz_init_set_str(mpz2, "0xbbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 0);
257- //
258- // ok(eth_abi_init(&abi0, ETH_ABI_ENCODE) == 1);
259- // ok(eth_abi_mpint(&abi0, mpz0) == 1);
260- // ok(eth_abi_mpint(&abi0, mpz1) == 1);
261- // ok(eth_abi_mpint(&abi0, mpz2) == 1);
262- // ok(eth_abi_to_hex(&abi0, &hex, &hexlen) == 1);
263- //
264- // is(hex, "00000000000000000000000000000000000000000000000000000000000000ff"
265- // "0000000000000000000000000000000000000000000000000000000000000fff"
266- // "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
267- // mpz_clears(mpz0, mpz1, mpz2, NULL);
268- // free(hex);
269- //
270- // ok(eth_abi_from_hex(&abi1,
271- // "0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff", -1) == 1);
272- // mpz_init_set_str(mpz0, "0x0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff", 0);
273- // mpz_init(mpz1);
274- // ok(eth_abi_mpint(&abi1, mpz1) == 1);
275- // ok(mpz_cmp(mpz0, mpz1) == 0);
276- // mpz_clears(mpz0, mpz1, NULL);
277- // }
248+ void test_eth_abi_mpint (void ) {
249+ struct eth_abi abi0 = {0 }, abi1 = {0 };
250+ mp_int int0 , int1 , int2 , int3 , int4 ;
251+ size_t hexlen ;
252+ char * hex ;
253+
254+ diag ("eth_abi_mpint()" );
255+
256+ assert (mp_init_multi (& int0 , & int1 , & int2 , & int3 , & int4 , NULL ) == MP_OKAY );
257+
258+ assert (mp_read_radix (& int0 , "ff" , 16 ) == MP_OKAY );
259+ assert (mp_read_radix (& int1 , "fff" , 16 ) == MP_OKAY );
260+ assert (mp_read_radix (& int2 , "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" , 16 ) == MP_OKAY );
261+
262+ assert (eth_abi_init (& abi0 , ETH_ABI_ENCODE ) == ETH_OK );
263+
264+ assert (eth_abi_mpint (& abi0 , & int0 ) == ETH_OK );
265+ assert (eth_abi_mpint (& abi0 , & int1 ) == ETH_OK );
266+ assert (eth_abi_mpint (& abi0 , & int2 ) == ETH_OK );
267+
268+ assert (eth_abi_to_hex (& abi0 , & hex , & hexlen ) == ETH_OK );
269+ is (hex , "00000000000000000000000000000000000000000000000000000000000000ff"
270+ "0000000000000000000000000000000000000000000000000000000000000fff"
271+ "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" ,
272+ "encode 0xff, 0xfff, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" );
273+ free (hex );
274+
275+
276+ assert (eth_abi_from_hex (& abi1 ,
277+ "0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff" , -1 ) == ETH_OK );
278+ assert (mp_read_radix (& int3 , "0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff" , 16 ) == ETH_OK );
279+
280+ assert (eth_abi_mpint (& abi1 , & int4 ) == ETH_OK );
281+
282+ ok (mp_cmp (& int3 , & int4 ) == MP_EQ , "decode 0x0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff" );
283+ mp_clear_multi (& int0 , & int1 , & int2 , & int3 , & int4 , NULL );
284+ }
278285
279286void test_eth_abi_bytes8 () {
280287 struct eth_abi abi0 = {0 }, abi1 = {0 };
0 commit comments