mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #10037 from ethereum/enableYultests
Enable some more Yul tests.
This commit is contained in:
commit
3c63be519b
@ -622,6 +622,8 @@ BOOST_AUTO_TEST_CASE(for_loop_break_continue)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
)";
|
)";
|
||||||
|
ALSO_VIA_YUL(
|
||||||
|
DISABLE_EWASM_TESTRUN()
|
||||||
compileAndRun(sourceCode);
|
compileAndRun(sourceCode);
|
||||||
|
|
||||||
auto breakContinue = [](u256 const& n) -> u256
|
auto breakContinue = [](u256 const& n) -> u256
|
||||||
@ -643,6 +645,7 @@ BOOST_AUTO_TEST_CASE(for_loop_break_continue)
|
|||||||
};
|
};
|
||||||
|
|
||||||
testContractAgainstCppOnRange("f(uint256)", breakContinue, 0, 10);
|
testContractAgainstCppOnRange("f(uint256)", breakContinue, 0, 10);
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(calling_other_functions)
|
BOOST_AUTO_TEST_CASE(calling_other_functions)
|
||||||
@ -663,8 +666,6 @@ BOOST_AUTO_TEST_CASE(calling_other_functions)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
)";
|
)";
|
||||||
compileAndRun(sourceCode);
|
|
||||||
|
|
||||||
auto evenStep_cpp = [](u256 const& n) -> u256
|
auto evenStep_cpp = [](u256 const& n) -> u256
|
||||||
{
|
{
|
||||||
return n / 2;
|
return n / 2;
|
||||||
@ -687,12 +688,16 @@ BOOST_AUTO_TEST_CASE(calling_other_functions)
|
|||||||
}
|
}
|
||||||
return y;
|
return y;
|
||||||
};
|
};
|
||||||
|
ALSO_VIA_YUL(
|
||||||
|
DISABLE_EWASM_TESTRUN()
|
||||||
|
compileAndRun(sourceCode);
|
||||||
|
|
||||||
testContractAgainstCpp("run(uint256)", collatz_cpp, u256(0));
|
testContractAgainstCpp("run(uint256)", collatz_cpp, u256(0));
|
||||||
testContractAgainstCpp("run(uint256)", collatz_cpp, u256(1));
|
testContractAgainstCpp("run(uint256)", collatz_cpp, u256(1));
|
||||||
testContractAgainstCpp("run(uint256)", collatz_cpp, u256(2));
|
testContractAgainstCpp("run(uint256)", collatz_cpp, u256(2));
|
||||||
testContractAgainstCpp("run(uint256)", collatz_cpp, u256(8));
|
testContractAgainstCpp("run(uint256)", collatz_cpp, u256(8));
|
||||||
testContractAgainstCpp("run(uint256)", collatz_cpp, u256(127));
|
testContractAgainstCpp("run(uint256)", collatz_cpp, u256(127));
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(many_local_variables)
|
BOOST_AUTO_TEST_CASE(many_local_variables)
|
||||||
@ -706,10 +711,6 @@ BOOST_AUTO_TEST_CASE(many_local_variables)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
)";
|
)";
|
||||||
ALSO_VIA_YUL(
|
|
||||||
DISABLE_EWASM_TESTRUN()
|
|
||||||
|
|
||||||
compileAndRun(sourceCode);
|
|
||||||
auto f = [](u256 const& x1, u256 const& x2, u256 const& x3) -> u256
|
auto f = [](u256 const& x1, u256 const& x2, u256 const& x3) -> u256
|
||||||
{
|
{
|
||||||
u256 a = 0x1;
|
u256 a = 0x1;
|
||||||
@ -718,6 +719,10 @@ BOOST_AUTO_TEST_CASE(many_local_variables)
|
|||||||
u256 y = a + b + c + x1 + x2 + x3;
|
u256 y = a + b + c + x1 + x2 + x3;
|
||||||
return y + b + x2;
|
return y + b + x2;
|
||||||
};
|
};
|
||||||
|
ALSO_VIA_YUL(
|
||||||
|
DISABLE_EWASM_TESTRUN()
|
||||||
|
|
||||||
|
compileAndRun(sourceCode);
|
||||||
testContractAgainstCpp("run(uint256,uint256,uint256)", f, u256(0x1000), u256(0x10000), u256(0x100000));
|
testContractAgainstCpp("run(uint256,uint256,uint256)", f, u256(0x1000), u256(0x10000), u256(0x100000));
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -823,12 +828,15 @@ BOOST_AUTO_TEST_CASE(small_signed_types)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
)";
|
)";
|
||||||
|
ALSO_VIA_YUL(
|
||||||
|
DISABLE_EWASM_TESTRUN()
|
||||||
compileAndRun(sourceCode);
|
compileAndRun(sourceCode);
|
||||||
auto small_signed_types_cpp = []() -> u256
|
auto small_signed_types_cpp = []() -> u256
|
||||||
{
|
{
|
||||||
return -int32_t(10) * -int64_t(20);
|
return -int32_t(10) * -int64_t(20);
|
||||||
};
|
};
|
||||||
testContractAgainstCpp("run()", small_signed_types_cpp);
|
testContractAgainstCpp("run()", small_signed_types_cpp);
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(compound_assign)
|
BOOST_AUTO_TEST_CASE(compound_assign)
|
||||||
@ -1154,10 +1162,13 @@ BOOST_AUTO_TEST_CASE(uncalled_blockhash)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
)";
|
)";
|
||||||
|
ALSO_VIA_YUL(
|
||||||
|
DISABLE_EWASM_TESTRUN()
|
||||||
compileAndRun(code, 0, "C");
|
compileAndRun(code, 0, "C");
|
||||||
bytes result = callContractFunction("f()");
|
bytes result = callContractFunction("f()");
|
||||||
BOOST_REQUIRE_EQUAL(result.size(), 32);
|
BOOST_REQUIRE_EQUAL(result.size(), 32);
|
||||||
BOOST_CHECK(result[0] != 0 || result[1] != 0 || result[2] != 0);
|
BOOST_CHECK(result[0] != 0 || result[1] != 0 || result[2] != 0);
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(log0)
|
BOOST_AUTO_TEST_CASE(log0)
|
||||||
@ -1325,6 +1336,8 @@ BOOST_AUTO_TEST_CASE(keccak256)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
)";
|
)";
|
||||||
|
ALSO_VIA_YUL(
|
||||||
|
DISABLE_EWASM_TESTRUN()
|
||||||
compileAndRun(sourceCode);
|
compileAndRun(sourceCode);
|
||||||
auto f = [&](u256 const& _x) -> u256
|
auto f = [&](u256 const& _x) -> u256
|
||||||
{
|
{
|
||||||
@ -1333,6 +1346,7 @@ BOOST_AUTO_TEST_CASE(keccak256)
|
|||||||
testContractAgainstCpp("a(bytes32)", f, u256(4));
|
testContractAgainstCpp("a(bytes32)", f, u256(4));
|
||||||
testContractAgainstCpp("a(bytes32)", f, u256(5));
|
testContractAgainstCpp("a(bytes32)", f, u256(5));
|
||||||
testContractAgainstCpp("a(bytes32)", f, u256(-1));
|
testContractAgainstCpp("a(bytes32)", f, u256(-1));
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(sha256)
|
BOOST_AUTO_TEST_CASE(sha256)
|
||||||
@ -1344,7 +1358,6 @@ BOOST_AUTO_TEST_CASE(sha256)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
)";
|
)";
|
||||||
compileAndRun(sourceCode);
|
|
||||||
auto f = [&](u256 const& _x) -> bytes
|
auto f = [&](u256 const& _x) -> bytes
|
||||||
{
|
{
|
||||||
if (_x == u256(4))
|
if (_x == u256(4))
|
||||||
@ -1355,9 +1368,13 @@ BOOST_AUTO_TEST_CASE(sha256)
|
|||||||
return fromHex("af9613760f72635fbdb44a5a0a63c39f12af30f950a6ee5c971be188e89c4051");
|
return fromHex("af9613760f72635fbdb44a5a0a63c39f12af30f950a6ee5c971be188e89c4051");
|
||||||
return fromHex("");
|
return fromHex("");
|
||||||
};
|
};
|
||||||
|
ALSO_VIA_YUL(
|
||||||
|
DISABLE_EWASM_TESTRUN()
|
||||||
|
compileAndRun(sourceCode);
|
||||||
testContractAgainstCpp("a(bytes32)", f, u256(4));
|
testContractAgainstCpp("a(bytes32)", f, u256(4));
|
||||||
testContractAgainstCpp("a(bytes32)", f, u256(5));
|
testContractAgainstCpp("a(bytes32)", f, u256(5));
|
||||||
testContractAgainstCpp("a(bytes32)", f, u256(-1));
|
testContractAgainstCpp("a(bytes32)", f, u256(-1));
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(ripemd)
|
BOOST_AUTO_TEST_CASE(ripemd)
|
||||||
@ -1369,7 +1386,6 @@ BOOST_AUTO_TEST_CASE(ripemd)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
)";
|
)";
|
||||||
compileAndRun(sourceCode);
|
|
||||||
auto f = [&](u256 const& _x) -> bytes
|
auto f = [&](u256 const& _x) -> bytes
|
||||||
{
|
{
|
||||||
if (_x == u256(4))
|
if (_x == u256(4))
|
||||||
@ -1380,9 +1396,13 @@ BOOST_AUTO_TEST_CASE(ripemd)
|
|||||||
return fromHex("1cf4e77f5966e13e109703cd8a0df7ceda7f3dc3000000000000000000000000");
|
return fromHex("1cf4e77f5966e13e109703cd8a0df7ceda7f3dc3000000000000000000000000");
|
||||||
return fromHex("");
|
return fromHex("");
|
||||||
};
|
};
|
||||||
|
ALSO_VIA_YUL(
|
||||||
|
DISABLE_EWASM_TESTRUN()
|
||||||
|
compileAndRun(sourceCode);
|
||||||
testContractAgainstCpp("a(bytes32)", f, u256(4));
|
testContractAgainstCpp("a(bytes32)", f, u256(4));
|
||||||
testContractAgainstCpp("a(bytes32)", f, u256(5));
|
testContractAgainstCpp("a(bytes32)", f, u256(5));
|
||||||
testContractAgainstCpp("a(bytes32)", f, u256(-1));
|
testContractAgainstCpp("a(bytes32)", f, u256(-1));
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(packed_keccak256)
|
BOOST_AUTO_TEST_CASE(packed_keccak256)
|
||||||
@ -1396,7 +1416,6 @@ BOOST_AUTO_TEST_CASE(packed_keccak256)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
)";
|
)";
|
||||||
compileAndRun(sourceCode);
|
|
||||||
auto f = [&](u256 const& _x) -> u256
|
auto f = [&](u256 const& _x) -> u256
|
||||||
{
|
{
|
||||||
return util::keccak256(
|
return util::keccak256(
|
||||||
@ -1407,9 +1426,13 @@ BOOST_AUTO_TEST_CASE(packed_keccak256)
|
|||||||
toBigEndian(u256(256))
|
toBigEndian(u256(256))
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
ALSO_VIA_YUL(
|
||||||
|
DISABLE_EWASM_TESTRUN()
|
||||||
|
compileAndRun(sourceCode);
|
||||||
testContractAgainstCpp("a(bytes32)", f, u256(4));
|
testContractAgainstCpp("a(bytes32)", f, u256(4));
|
||||||
testContractAgainstCpp("a(bytes32)", f, u256(5));
|
testContractAgainstCpp("a(bytes32)", f, u256(5));
|
||||||
testContractAgainstCpp("a(bytes32)", f, u256(-1));
|
testContractAgainstCpp("a(bytes32)", f, u256(-1));
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(packed_keccak256_complex_types)
|
BOOST_AUTO_TEST_CASE(packed_keccak256_complex_types)
|
||||||
@ -1428,6 +1451,8 @@ BOOST_AUTO_TEST_CASE(packed_keccak256_complex_types)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
)";
|
)";
|
||||||
|
ALSO_VIA_YUL(
|
||||||
|
DISABLE_EWASM_TESTRUN()
|
||||||
compileAndRun(sourceCode);
|
compileAndRun(sourceCode);
|
||||||
// Strangely, arrays are encoded with intra-element padding.
|
// Strangely, arrays are encoded with intra-element padding.
|
||||||
ABI_CHECK(callContractFunction("f()"), encodeArgs(
|
ABI_CHECK(callContractFunction("f()"), encodeArgs(
|
||||||
@ -1435,6 +1460,7 @@ BOOST_AUTO_TEST_CASE(packed_keccak256_complex_types)
|
|||||||
util::keccak256(encodeArgs(u256("0xfffffffffffffffffffffffffffffe"), u256("0xfffffffffffffffffffffffffffffd"), u256("0xfffffffffffffffffffffffffffffc"))),
|
util::keccak256(encodeArgs(u256("0xfffffffffffffffffffffffffffffe"), u256("0xfffffffffffffffffffffffffffffd"), u256("0xfffffffffffffffffffffffffffffc"))),
|
||||||
util::keccak256(fromHex(m_contractAddress.hex() + "26121ff0"))
|
util::keccak256(fromHex(m_contractAddress.hex() + "26121ff0"))
|
||||||
));
|
));
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(packed_sha256)
|
BOOST_AUTO_TEST_CASE(packed_sha256)
|
||||||
@ -1448,7 +1474,6 @@ BOOST_AUTO_TEST_CASE(packed_sha256)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
)";
|
)";
|
||||||
compileAndRun(sourceCode);
|
|
||||||
auto f = [&](u256 const& _x) -> bytes
|
auto f = [&](u256 const& _x) -> bytes
|
||||||
{
|
{
|
||||||
if (_x == u256(4))
|
if (_x == u256(4))
|
||||||
@ -1459,9 +1484,13 @@ BOOST_AUTO_TEST_CASE(packed_sha256)
|
|||||||
return fromHex("f14def4d07cd185ddd8b10a81b2238326196a38867e6e6adbcc956dc913488c7");
|
return fromHex("f14def4d07cd185ddd8b10a81b2238326196a38867e6e6adbcc956dc913488c7");
|
||||||
return fromHex("");
|
return fromHex("");
|
||||||
};
|
};
|
||||||
|
ALSO_VIA_YUL(
|
||||||
|
DISABLE_EWASM_TESTRUN()
|
||||||
|
compileAndRun(sourceCode);
|
||||||
testContractAgainstCpp("a(bytes32)", f, u256(4));
|
testContractAgainstCpp("a(bytes32)", f, u256(4));
|
||||||
testContractAgainstCpp("a(bytes32)", f, u256(5));
|
testContractAgainstCpp("a(bytes32)", f, u256(5));
|
||||||
testContractAgainstCpp("a(bytes32)", f, u256(-1));
|
testContractAgainstCpp("a(bytes32)", f, u256(-1));
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(packed_ripemd160)
|
BOOST_AUTO_TEST_CASE(packed_ripemd160)
|
||||||
@ -1475,7 +1504,6 @@ BOOST_AUTO_TEST_CASE(packed_ripemd160)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
)";
|
)";
|
||||||
compileAndRun(sourceCode);
|
|
||||||
auto f = [&](u256 const& _x) -> bytes
|
auto f = [&](u256 const& _x) -> bytes
|
||||||
{
|
{
|
||||||
if (_x == u256(4))
|
if (_x == u256(4))
|
||||||
@ -1486,9 +1514,13 @@ BOOST_AUTO_TEST_CASE(packed_ripemd160)
|
|||||||
return fromHex("c0a2e4b1f3ff766a9a0089e7a410391730872495000000000000000000000000");
|
return fromHex("c0a2e4b1f3ff766a9a0089e7a410391730872495000000000000000000000000");
|
||||||
return fromHex("");
|
return fromHex("");
|
||||||
};
|
};
|
||||||
|
ALSO_VIA_YUL(
|
||||||
|
DISABLE_EWASM_TESTRUN()
|
||||||
|
compileAndRun(sourceCode);
|
||||||
testContractAgainstCpp("a(bytes32)", f, u256(4));
|
testContractAgainstCpp("a(bytes32)", f, u256(4));
|
||||||
testContractAgainstCpp("a(bytes32)", f, u256(5));
|
testContractAgainstCpp("a(bytes32)", f, u256(5));
|
||||||
testContractAgainstCpp("a(bytes32)", f, u256(-1));
|
testContractAgainstCpp("a(bytes32)", f, u256(-1));
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(inter_contract_calls)
|
BOOST_AUTO_TEST_CASE(inter_contract_calls)
|
||||||
|
Loading…
Reference in New Issue
Block a user