mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Be explicit about which contract to test for in ABIJSON tests
This commit is contained in:
parent
3481d4e2ec
commit
3c408a32c4
@ -40,7 +40,7 @@ class JSONInterfaceChecker
|
||||
public:
|
||||
JSONInterfaceChecker(): m_compilerStack() {}
|
||||
|
||||
void checkInterface(std::string const& _code, std::string const& _expectedInterfaceString)
|
||||
void checkInterface(std::string const& _code, std::string const& _contractName, std::string const& _expectedInterfaceString)
|
||||
{
|
||||
m_compilerStack.reset(false);
|
||||
m_compilerStack.addSource("", "pragma solidity >=0.0;\n" + _code);
|
||||
@ -48,7 +48,7 @@ public:
|
||||
m_compilerStack.setOptimiserSettings(dev::test::Options::get().optimize);
|
||||
BOOST_REQUIRE_MESSAGE(m_compilerStack.parseAndAnalyze(), "Parsing contract failed");
|
||||
|
||||
Json::Value generatedInterface = m_compilerStack.contractABI(m_compilerStack.lastContractName());
|
||||
Json::Value generatedInterface = m_compilerStack.contractABI(_contractName);
|
||||
Json::Value expectedInterface;
|
||||
BOOST_REQUIRE(jsonParseStrict(_expectedInterfaceString, expectedInterface));
|
||||
BOOST_CHECK_MESSAGE(
|
||||
@ -94,7 +94,7 @@ BOOST_AUTO_TEST_CASE(basic_test)
|
||||
}
|
||||
])";
|
||||
|
||||
checkInterface(sourceCode, interface);
|
||||
checkInterface(sourceCode, "test", interface);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(empty_contract)
|
||||
@ -104,7 +104,7 @@ BOOST_AUTO_TEST_CASE(empty_contract)
|
||||
)";
|
||||
char const* interface = "[]";
|
||||
|
||||
checkInterface(sourceCode, interface);
|
||||
checkInterface(sourceCode, "test", interface);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(multiple_methods)
|
||||
@ -157,7 +157,7 @@ BOOST_AUTO_TEST_CASE(multiple_methods)
|
||||
}
|
||||
])";
|
||||
|
||||
checkInterface(sourceCode, interface);
|
||||
checkInterface(sourceCode, "test", interface);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(multiple_params)
|
||||
@ -194,7 +194,7 @@ BOOST_AUTO_TEST_CASE(multiple_params)
|
||||
}
|
||||
])";
|
||||
|
||||
checkInterface(sourceCode, interface);
|
||||
checkInterface(sourceCode, "test", interface);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(multiple_methods_order)
|
||||
@ -248,7 +248,7 @@ BOOST_AUTO_TEST_CASE(multiple_methods_order)
|
||||
}
|
||||
])";
|
||||
|
||||
checkInterface(sourceCode, interface);
|
||||
checkInterface(sourceCode, "test", interface);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(view_function)
|
||||
@ -303,7 +303,7 @@ BOOST_AUTO_TEST_CASE(view_function)
|
||||
}
|
||||
])";
|
||||
|
||||
checkInterface(sourceCode, interface);
|
||||
checkInterface(sourceCode, "test", interface);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(pure_function)
|
||||
@ -358,7 +358,7 @@ BOOST_AUTO_TEST_CASE(pure_function)
|
||||
}
|
||||
])";
|
||||
|
||||
checkInterface(sourceCode, interface);
|
||||
checkInterface(sourceCode, "test", interface);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(events)
|
||||
@ -436,7 +436,7 @@ BOOST_AUTO_TEST_CASE(events)
|
||||
|
||||
])";
|
||||
|
||||
checkInterface(sourceCode, interface);
|
||||
checkInterface(sourceCode, "test", interface);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(events_anonymous)
|
||||
@ -456,7 +456,7 @@ BOOST_AUTO_TEST_CASE(events_anonymous)
|
||||
|
||||
])";
|
||||
|
||||
checkInterface(sourceCode, interface);
|
||||
checkInterface(sourceCode, "test", interface);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(inherited)
|
||||
@ -531,7 +531,7 @@ BOOST_AUTO_TEST_CASE(inherited)
|
||||
}])";
|
||||
|
||||
|
||||
checkInterface(sourceCode, interface);
|
||||
checkInterface(sourceCode, "Derived", interface);
|
||||
}
|
||||
BOOST_AUTO_TEST_CASE(empty_name_input_parameter_with_named_one)
|
||||
{
|
||||
@ -575,7 +575,7 @@ BOOST_AUTO_TEST_CASE(empty_name_input_parameter_with_named_one)
|
||||
}
|
||||
])";
|
||||
|
||||
checkInterface(sourceCode, interface);
|
||||
checkInterface(sourceCode, "test", interface);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(empty_name_return_parameter)
|
||||
@ -609,7 +609,7 @@ BOOST_AUTO_TEST_CASE(empty_name_return_parameter)
|
||||
]
|
||||
}
|
||||
])";
|
||||
checkInterface(sourceCode, interface);
|
||||
checkInterface(sourceCode, "test", interface);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(constructor_abi)
|
||||
@ -641,7 +641,7 @@ BOOST_AUTO_TEST_CASE(constructor_abi)
|
||||
"type": "constructor"
|
||||
}
|
||||
])";
|
||||
checkInterface(sourceCode, interface);
|
||||
checkInterface(sourceCode, "test", interface);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(payable_constructor_abi)
|
||||
@ -673,7 +673,7 @@ BOOST_AUTO_TEST_CASE(payable_constructor_abi)
|
||||
"type": "constructor"
|
||||
}
|
||||
])";
|
||||
checkInterface(sourceCode, interface);
|
||||
checkInterface(sourceCode, "test", interface);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(return_param_in_abi)
|
||||
@ -719,7 +719,7 @@ BOOST_AUTO_TEST_CASE(return_param_in_abi)
|
||||
}
|
||||
]
|
||||
)";
|
||||
checkInterface(sourceCode, interface);
|
||||
checkInterface(sourceCode, "test", interface);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(strings_and_arrays)
|
||||
@ -748,7 +748,7 @@ BOOST_AUTO_TEST_CASE(strings_and_arrays)
|
||||
}
|
||||
]
|
||||
)";
|
||||
checkInterface(sourceCode, interface);
|
||||
checkInterface(sourceCode, "test", interface);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(library_function)
|
||||
@ -780,7 +780,7 @@ BOOST_AUTO_TEST_CASE(library_function)
|
||||
}
|
||||
]
|
||||
)";
|
||||
checkInterface(sourceCode, interface);
|
||||
checkInterface(sourceCode, "test", interface);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(include_fallback_function)
|
||||
@ -800,7 +800,7 @@ BOOST_AUTO_TEST_CASE(include_fallback_function)
|
||||
}
|
||||
]
|
||||
)";
|
||||
checkInterface(sourceCode, interface);
|
||||
checkInterface(sourceCode, "test", interface);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(payable_function)
|
||||
@ -834,7 +834,7 @@ BOOST_AUTO_TEST_CASE(payable_function)
|
||||
}
|
||||
]
|
||||
)";
|
||||
checkInterface(sourceCode, interface);
|
||||
checkInterface(sourceCode, "test", interface);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(payable_fallback_function)
|
||||
@ -854,7 +854,7 @@ BOOST_AUTO_TEST_CASE(payable_fallback_function)
|
||||
}
|
||||
]
|
||||
)";
|
||||
checkInterface(sourceCode, interface);
|
||||
checkInterface(sourceCode, "test", interface);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(function_type)
|
||||
@ -881,12 +881,12 @@ BOOST_AUTO_TEST_CASE(function_type)
|
||||
}
|
||||
]
|
||||
)";
|
||||
checkInterface(sourceCode, interface);
|
||||
checkInterface(sourceCode, "test", interface);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(return_structs)
|
||||
{
|
||||
char const* text = R"(
|
||||
char const* sourceCode = R"(
|
||||
pragma experimental ABIEncoderV2;
|
||||
contract C {
|
||||
struct S { uint a; T[] sub; }
|
||||
@ -931,12 +931,12 @@ BOOST_AUTO_TEST_CASE(return_structs)
|
||||
"type" : "function"
|
||||
}]
|
||||
)";
|
||||
checkInterface(text, interface);
|
||||
checkInterface(sourceCode, "C", interface);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(return_structs_with_contracts)
|
||||
{
|
||||
char const* text = R"(
|
||||
char const* sourceCode = R"(
|
||||
pragma experimental ABIEncoderV2;
|
||||
contract C {
|
||||
struct S { C[] x; C y; }
|
||||
@ -974,12 +974,12 @@ BOOST_AUTO_TEST_CASE(return_structs_with_contracts)
|
||||
"type": "function"
|
||||
}]
|
||||
)";
|
||||
checkInterface(text, interface);
|
||||
checkInterface(sourceCode, "C", interface);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(event_structs)
|
||||
{
|
||||
char const* text = R"(
|
||||
char const* sourceCode = R"(
|
||||
pragma experimental ABIEncoderV2;
|
||||
contract C {
|
||||
struct S { uint a; T[] sub; bytes b; }
|
||||
@ -1032,12 +1032,12 @@ BOOST_AUTO_TEST_CASE(event_structs)
|
||||
"type": "event"
|
||||
}]
|
||||
)";
|
||||
checkInterface(text, interface);
|
||||
checkInterface(sourceCode, "C", interface);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(structs_in_libraries)
|
||||
{
|
||||
char const* text = R"(
|
||||
char const* sourceCode = R"(
|
||||
pragma experimental ABIEncoderV2;
|
||||
library L {
|
||||
struct S { uint a; T[] sub; bytes b; }
|
||||
@ -1096,7 +1096,7 @@ BOOST_AUTO_TEST_CASE(structs_in_libraries)
|
||||
"type": "function"
|
||||
}]
|
||||
)";
|
||||
checkInterface(text, interface);
|
||||
checkInterface(sourceCode, "L", interface);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||
|
Loading…
Reference in New Issue
Block a user