Using jsoncpp for exporting ABI interface from solidity

- Also changing the interface JSON test to have a shorter name
  plus to provide meaningful error message in case of failure
This commit is contained in:
Lefteris Karapetsas 2014-12-01 18:01:42 +01:00
parent 6b7bec980a
commit bbf4beab45

View File

@ -34,7 +34,7 @@ namespace test
class InterfaceChecker
{
public:
bool checkInterface(std::string const& _code, std::string const& _expectedInterfaceString)
void checkInterface(std::string const& _code, std::string const& _expectedInterfaceString)
{
m_compilerStack.parse(_code);
std::string generatedInterfaceString = m_compilerStack.getInterface();
@ -42,15 +42,17 @@ public:
m_reader.parse(generatedInterfaceString, generatedInterface);
Json::Value expectedInterface;
m_reader.parse(_expectedInterfaceString, expectedInterface);
return expectedInterface == generatedInterface;
BOOST_CHECK_MESSAGE(expectedInterface == generatedInterface,
"Expected " << _expectedInterfaceString <<
"\n but got:\n" << generatedInterfaceString);
}
private:
CompilerStack m_compilerStack;
Json::Reader m_reader;
};
BOOST_FIXTURE_TEST_SUITE(SolidityCompilerJSONInterfaceOutput, InterfaceChecker)
BOOST_FIXTURE_TEST_SUITE(solidityABIJSON, InterfaceChecker)
BOOST_AUTO_TEST_CASE(basic_test)
{
@ -76,7 +78,7 @@ BOOST_AUTO_TEST_CASE(basic_test)
}
])";
BOOST_CHECK(checkInterface(sourceCode, interface));
checkInterface(sourceCode, interface);
}
BOOST_AUTO_TEST_CASE(empty_contract)
@ -86,7 +88,7 @@ BOOST_AUTO_TEST_CASE(empty_contract)
char const* interface = "[]";
BOOST_CHECK(checkInterface(sourceCode, interface));
checkInterface(sourceCode, interface);
}
BOOST_AUTO_TEST_CASE(multiple_methods)
@ -95,7 +97,7 @@ BOOST_AUTO_TEST_CASE(multiple_methods)
" function f(uint a) returns(uint d) { return a * 7; }\n"
" function g(uint b) returns(uint e) { return b * 8; }\n"
"}\n";
char const* interface = R"([
{
"name": "f",
@ -129,7 +131,7 @@ BOOST_AUTO_TEST_CASE(multiple_methods)
}
])";
BOOST_CHECK(checkInterface(sourceCode, interface));
checkInterface(sourceCode, interface);
}
BOOST_AUTO_TEST_CASE(multiple_params)
@ -160,7 +162,7 @@ BOOST_AUTO_TEST_CASE(multiple_params)
}
])";
BOOST_CHECK(checkInterface(sourceCode, interface));
checkInterface(sourceCode, interface);
}
BOOST_AUTO_TEST_CASE(multiple_methods_order)
@ -170,7 +172,7 @@ BOOST_AUTO_TEST_CASE(multiple_methods_order)
" function f(uint a) returns(uint d) { return a * 7; }\n"
" function c(uint b) returns(uint e) { return b * 8; }\n"
"}\n";
char const* interface = R"([
{
"name": "c",
@ -203,8 +205,8 @@ BOOST_AUTO_TEST_CASE(multiple_methods_order)
]
}
])";
BOOST_CHECK(checkInterface(sourceCode, interface));
checkInterface(sourceCode, interface);
}
BOOST_AUTO_TEST_SUITE_END()