Activate some tests.

This commit is contained in:
chriseth 2019-05-23 19:30:12 +02:00
parent fb40063253
commit ee7548a339

View File

@ -1217,9 +1217,11 @@ BOOST_AUTO_TEST_CASE(strings)
} }
} }
)"; )";
ALSO_VIA_YUL(
compileAndRun(sourceCode); compileAndRun(sourceCode);
ABI_CHECK(callContractFunction("fixedBytes()"), encodeArgs(string("abc\0\xff__", 7))); ABI_CHECK(callContractFunction("fixedBytes()"), encodeArgs(string("abc\0\xff__", 7)));
ABI_CHECK(callContractFunction("pipeThrough(bytes2,bool)", string("\0\x02", 2), true), encodeArgs(string("\0\x2", 2), true)); ABI_CHECK(callContractFunction("pipeThrough(bytes2,bool)", string("\0\x02", 2), true), encodeArgs(string("\0\x2", 2), true));
)
} }
BOOST_AUTO_TEST_CASE(inc_dec_operators) BOOST_AUTO_TEST_CASE(inc_dec_operators)
@ -1239,8 +1241,10 @@ BOOST_AUTO_TEST_CASE(inc_dec_operators)
} }
} }
)"; )";
ALSO_VIA_YUL(
compileAndRun(sourceCode); compileAndRun(sourceCode);
ABI_CHECK(callContractFunction("f()"), encodeArgs(0x53866)); ABI_CHECK(callContractFunction("f()"), encodeArgs(0x53866));
)
} }
BOOST_AUTO_TEST_CASE(bytes_comparison) BOOST_AUTO_TEST_CASE(bytes_comparison)
@ -1255,8 +1259,10 @@ BOOST_AUTO_TEST_CASE(bytes_comparison)
} }
} }
)"; )";
ALSO_VIA_YUL(
compileAndRun(sourceCode); compileAndRun(sourceCode);
ABI_CHECK(callContractFunction("f()"), encodeArgs(true)); ABI_CHECK(callContractFunction("f()"), encodeArgs(true));
)
} }
BOOST_AUTO_TEST_CASE(state_smoke_test) BOOST_AUTO_TEST_CASE(state_smoke_test)
@ -1275,6 +1281,7 @@ BOOST_AUTO_TEST_CASE(state_smoke_test)
} }
} }
)"; )";
ALSO_VIA_YUL(
compileAndRun(sourceCode); compileAndRun(sourceCode);
ABI_CHECK(callContractFunction("get(uint8)", uint8_t(0x00)), encodeArgs(0)); ABI_CHECK(callContractFunction("get(uint8)", uint8_t(0x00)), encodeArgs(0));
ABI_CHECK(callContractFunction("get(uint8)", uint8_t(0x01)), encodeArgs(0)); ABI_CHECK(callContractFunction("get(uint8)", uint8_t(0x01)), encodeArgs(0));
@ -1284,6 +1291,7 @@ BOOST_AUTO_TEST_CASE(state_smoke_test)
ABI_CHECK(callContractFunction("get(uint8)", uint8_t(0x01)), encodeArgs(0x8765)); ABI_CHECK(callContractFunction("get(uint8)", uint8_t(0x01)), encodeArgs(0x8765));
ABI_CHECK(callContractFunction("set(uint8,uint256)", uint8_t(0x00), 0x3), encodeArgs()); ABI_CHECK(callContractFunction("set(uint8,uint256)", uint8_t(0x00), 0x3), encodeArgs());
ABI_CHECK(callContractFunction("get(uint8)", uint8_t(0x00)), encodeArgs(0x3)); ABI_CHECK(callContractFunction("get(uint8)", uint8_t(0x00)), encodeArgs(0x3));
)
} }
BOOST_AUTO_TEST_CASE(compound_assign) BOOST_AUTO_TEST_CASE(compound_assign)
@ -1301,6 +1309,7 @@ BOOST_AUTO_TEST_CASE(compound_assign)
} }
} }
)"; )";
ALSO_VIA_YUL(
compileAndRun(sourceCode); compileAndRun(sourceCode);
u256 value1; u256 value1;
@ -1321,6 +1330,7 @@ BOOST_AUTO_TEST_CASE(compound_assign)
testContractAgainstCpp("f(uint256,uint256)", f, u256(5), u256(2)); testContractAgainstCpp("f(uint256,uint256)", f, u256(5), u256(2));
testContractAgainstCpp("f(uint256,uint256)", f, u256(6), u256(51)); testContractAgainstCpp("f(uint256,uint256)", f, u256(6), u256(51));
testContractAgainstCpp("f(uint256,uint256)", f, u256(7), u256(48)); testContractAgainstCpp("f(uint256,uint256)", f, u256(7), u256(48));
)
} }
BOOST_AUTO_TEST_CASE(simple_mapping) BOOST_AUTO_TEST_CASE(simple_mapping)
@ -1336,8 +1346,9 @@ BOOST_AUTO_TEST_CASE(simple_mapping)
} }
} }
)"; )";
compileAndRun(sourceCode);
ALSO_VIA_YUL(
compileAndRun(sourceCode);
ABI_CHECK(callContractFunction("get(uint8)", uint8_t(0)), encodeArgs(uint8_t(0x00))); ABI_CHECK(callContractFunction("get(uint8)", uint8_t(0)), encodeArgs(uint8_t(0x00)));
ABI_CHECK(callContractFunction("get(uint8)", uint8_t(0x01)), encodeArgs(uint8_t(0x00))); ABI_CHECK(callContractFunction("get(uint8)", uint8_t(0x01)), encodeArgs(uint8_t(0x00)));
ABI_CHECK(callContractFunction("get(uint8)", uint8_t(0xa7)), encodeArgs(uint8_t(0x00))); ABI_CHECK(callContractFunction("get(uint8)", uint8_t(0xa7)), encodeArgs(uint8_t(0x00)));
@ -1353,6 +1364,7 @@ BOOST_AUTO_TEST_CASE(simple_mapping)
ABI_CHECK(callContractFunction("get(uint8)", uint8_t(0x00)), encodeArgs(uint8_t(0xef))); ABI_CHECK(callContractFunction("get(uint8)", uint8_t(0x00)), encodeArgs(uint8_t(0xef)));
ABI_CHECK(callContractFunction("get(uint8)", uint8_t(0x01)), encodeArgs(uint8_t(0x05))); ABI_CHECK(callContractFunction("get(uint8)", uint8_t(0x01)), encodeArgs(uint8_t(0x05)));
ABI_CHECK(callContractFunction("get(uint8)", uint8_t(0xa7)), encodeArgs(uint8_t(0x00))); ABI_CHECK(callContractFunction("get(uint8)", uint8_t(0xa7)), encodeArgs(uint8_t(0x00)));
)
} }
BOOST_AUTO_TEST_CASE(mapping_state) BOOST_AUTO_TEST_CASE(mapping_state)
@ -1376,7 +1388,6 @@ BOOST_AUTO_TEST_CASE(mapping_state)
} }
} }
)"; )";
compileAndRun(sourceCode);
class Ballot class Ballot
{ {
public: public:
@ -1393,7 +1404,10 @@ BOOST_AUTO_TEST_CASE(mapping_state)
map<u160, bool> m_canVote; map<u160, bool> m_canVote;
map<u160, u256> m_voteCount; map<u160, u256> m_voteCount;
map<u160, bool> m_voted; map<u160, bool> m_voted;
} ballot; };
ALSO_VIA_YUL(
compileAndRun(sourceCode);
Ballot ballot;
auto getVoteCount = bind(&Ballot::getVoteCount, &ballot, _1); auto getVoteCount = bind(&Ballot::getVoteCount, &ballot, _1);
auto grantVoteRight = bind(&Ballot::grantVoteRight, &ballot, _1); auto grantVoteRight = bind(&Ballot::grantVoteRight, &ballot, _1);
@ -1430,6 +1444,7 @@ BOOST_AUTO_TEST_CASE(mapping_state)
testContractAgainstCpp("getVoteCount(address)", getVoteCount, u160(0)); testContractAgainstCpp("getVoteCount(address)", getVoteCount, u160(0));
testContractAgainstCpp("getVoteCount(address)", getVoteCount, u160(1)); testContractAgainstCpp("getVoteCount(address)", getVoteCount, u160(1));
testContractAgainstCpp("getVoteCount(address)", getVoteCount, u160(2)); testContractAgainstCpp("getVoteCount(address)", getVoteCount, u160(2));
)
} }
BOOST_AUTO_TEST_CASE(mapping_state_inc_dec) BOOST_AUTO_TEST_CASE(mapping_state_inc_dec)
@ -1447,9 +1462,8 @@ BOOST_AUTO_TEST_CASE(mapping_state_inc_dec)
} }
} }
)"; )";
compileAndRun(sourceCode);
u256 value = 0; u256 value;
map<u256, u256> table; map<u256, u256> table;
auto f = [&](u256 const& _x) -> u256 auto f = [&](u256 const& _x) -> u256
{ {
@ -1462,7 +1476,13 @@ BOOST_AUTO_TEST_CASE(mapping_state_inc_dec)
table[value]++; table[value]++;
return --table[value++]; return --table[value++];
}; };
ALSO_VIA_YUL(
compileAndRun(sourceCode);
value = 0;
table.clear();
testContractAgainstCppOnRange("f(uint256)", f, 0, 5); testContractAgainstCppOnRange("f(uint256)", f, 0, 5);
)
} }
BOOST_AUTO_TEST_CASE(multi_level_mapping) BOOST_AUTO_TEST_CASE(multi_level_mapping)
@ -1476,14 +1496,16 @@ BOOST_AUTO_TEST_CASE(multi_level_mapping)
} }
} }
)"; )";
compileAndRun(sourceCode);
map<u256, map<u256, u256>> table; map<u256, map<u256, u256>> table;
auto f = [&](u256 const& _x, u256 const& _y, u256 const& _z) -> u256 auto f = [&](u256 const& _x, u256 const& _y, u256 const& _z) -> u256
{ {
if (_z == 0) return table[_x][_y]; if (_z == 0) return table[_x][_y];
else return table[_x][_y] = _z; else return table[_x][_y] = _z;
}; };
ALSO_VIA_YUL(
compileAndRun(sourceCode);
table.clear();
testContractAgainstCpp("f(uint256,uint256,uint256)", f, u256(4), u256(5), u256(0)); testContractAgainstCpp("f(uint256,uint256,uint256)", f, u256(4), u256(5), u256(0));
testContractAgainstCpp("f(uint256,uint256,uint256)", f, u256(5), u256(4), u256(0)); testContractAgainstCpp("f(uint256,uint256,uint256)", f, u256(5), u256(4), u256(0));
testContractAgainstCpp("f(uint256,uint256,uint256)", f, u256(4), u256(5), u256(9)); testContractAgainstCpp("f(uint256,uint256,uint256)", f, u256(4), u256(5), u256(9));
@ -1492,6 +1514,7 @@ BOOST_AUTO_TEST_CASE(multi_level_mapping)
testContractAgainstCpp("f(uint256,uint256,uint256)", f, u256(5), u256(4), u256(7)); testContractAgainstCpp("f(uint256,uint256,uint256)", f, u256(5), u256(4), u256(7));
testContractAgainstCpp("f(uint256,uint256,uint256)", f, u256(4), u256(5), u256(0)); testContractAgainstCpp("f(uint256,uint256,uint256)", f, u256(4), u256(5), u256(0));
testContractAgainstCpp("f(uint256,uint256,uint256)", f, u256(5), u256(4), u256(0)); testContractAgainstCpp("f(uint256,uint256,uint256)", f, u256(5), u256(4), u256(0));
)
} }
BOOST_AUTO_TEST_CASE(mapping_local_assignment) BOOST_AUTO_TEST_CASE(mapping_local_assignment)