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 class InterfaceChecker
{ {
public: 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); m_compilerStack.parse(_code);
std::string generatedInterfaceString = m_compilerStack.getInterface(); std::string generatedInterfaceString = m_compilerStack.getInterface();
@ -42,7 +42,9 @@ public:
m_reader.parse(generatedInterfaceString, generatedInterface); m_reader.parse(generatedInterfaceString, generatedInterface);
Json::Value expectedInterface; Json::Value expectedInterface;
m_reader.parse(_expectedInterfaceString, expectedInterface); m_reader.parse(_expectedInterfaceString, expectedInterface);
return expectedInterface == generatedInterface; BOOST_CHECK_MESSAGE(expectedInterface == generatedInterface,
"Expected " << _expectedInterfaceString <<
"\n but got:\n" << generatedInterfaceString);
} }
private: private:
@ -50,7 +52,7 @@ private:
Json::Reader m_reader; Json::Reader m_reader;
}; };
BOOST_FIXTURE_TEST_SUITE(SolidityCompilerJSONInterfaceOutput, InterfaceChecker) BOOST_FIXTURE_TEST_SUITE(solidityABIJSON, InterfaceChecker)
BOOST_AUTO_TEST_CASE(basic_test) 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) BOOST_AUTO_TEST_CASE(empty_contract)
@ -86,7 +88,7 @@ BOOST_AUTO_TEST_CASE(empty_contract)
char const* interface = "[]"; char const* interface = "[]";
BOOST_CHECK(checkInterface(sourceCode, interface)); checkInterface(sourceCode, interface);
} }
BOOST_AUTO_TEST_CASE(multiple_methods) BOOST_AUTO_TEST_CASE(multiple_methods)
@ -129,7 +131,7 @@ BOOST_AUTO_TEST_CASE(multiple_methods)
} }
])"; ])";
BOOST_CHECK(checkInterface(sourceCode, interface)); checkInterface(sourceCode, interface);
} }
BOOST_AUTO_TEST_CASE(multiple_params) 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) BOOST_AUTO_TEST_CASE(multiple_methods_order)
@ -204,7 +206,7 @@ BOOST_AUTO_TEST_CASE(multiple_methods_order)
} }
])"; ])";
BOOST_CHECK(checkInterface(sourceCode, interface)); checkInterface(sourceCode, interface);
} }
BOOST_AUTO_TEST_SUITE_END() BOOST_AUTO_TEST_SUITE_END()