fixed natspec evaluator result on error

This commit is contained in:
Marek Kotewicz 2015-02-05 18:45:37 +01:00
parent d3dd2972c1
commit 1954c0686d

View File

@ -1,16 +1,16 @@
/* /*
This file is part of cpp-ethereum. This file is part of cpp-ethereum.
cpp-ethereum is free software: you can redistribute it and/or modify cpp-ethereum is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or the Free Software Foundation, either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
cpp-ethereum is distributed in the hope that it will be useful, cpp-ethereum is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with cpp-ethereum. If not, see <http://www.gnu.org/licenses/>. along with cpp-ethereum. If not, see <http://www.gnu.org/licenses/>.
*/ */
@ -30,13 +30,13 @@ BOOST_AUTO_TEST_SUITE(natspec)
BOOST_AUTO_TEST_CASE(natspec_eval_function_exists) BOOST_AUTO_TEST_CASE(natspec_eval_function_exists)
{ {
cnote << "testing existance of evaluateExpression function"; cnote << "testing existance of evaluateExpression function";
// given // given
NatspecExpressionEvaluator e; NatspecExpressionEvaluator e;
// when // when
string result = e.evalExpression("`typeof evaluateExpression`").toStdString(); string result = e.evalExpression("`typeof evaluateExpression`").toStdString();
// then // then
BOOST_CHECK_EQUAL(result, "function"); BOOST_CHECK_EQUAL(result, "function");
} }
@ -44,13 +44,13 @@ BOOST_AUTO_TEST_CASE(natspec_eval_function_exists)
BOOST_AUTO_TEST_CASE(natspec_js_eval) BOOST_AUTO_TEST_CASE(natspec_js_eval)
{ {
cnote << "testing natspec basic eval"; cnote << "testing natspec basic eval";
// given // given
NatspecExpressionEvaluator e; NatspecExpressionEvaluator e;
// when // when
string result = e.evalExpression("`1 + 2`").toStdString(); string result = e.evalExpression("`1 + 2`").toStdString();
// then // then
BOOST_CHECK_EQUAL(result, "3"); BOOST_CHECK_EQUAL(result, "3");
} }
@ -58,16 +58,15 @@ BOOST_AUTO_TEST_CASE(natspec_js_eval)
BOOST_AUTO_TEST_CASE(natspec_create_custom_function) BOOST_AUTO_TEST_CASE(natspec_create_custom_function)
{ {
cnote << "testing creation and usage of custom js function"; cnote << "testing creation and usage of custom js function";
// given // given
NatspecExpressionEvaluator e; NatspecExpressionEvaluator e;
// when // when
auto x = e.evalExpression("`test = function (x) { return x + 'ok'; }`"); // ommit var, make it global auto x = e.evalExpression("`test = function (x) { return x + 'ok'; }`"); // ommit var, make it global
string result = e.evalExpression("`test(5)`").toStdString(); string result = e.evalExpression("`test(5)`").toStdString();
string result2 = e.evalExpression("`typeof test`").toStdString(); string result2 = e.evalExpression("`typeof test`").toStdString();
// then // then
BOOST_CHECK_EQUAL(result, "5ok"); BOOST_CHECK_EQUAL(result, "5ok");
BOOST_CHECK_EQUAL(result2, "function"); BOOST_CHECK_EQUAL(result2, "function");
@ -76,13 +75,13 @@ BOOST_AUTO_TEST_CASE(natspec_create_custom_function)
BOOST_AUTO_TEST_CASE(natspec_js_eval_separated_expressions) BOOST_AUTO_TEST_CASE(natspec_js_eval_separated_expressions)
{ {
cnote << "testing natspec evaluation of separated expresioons"; cnote << "testing natspec evaluation of separated expresioons";
// given // given
NatspecExpressionEvaluator e; NatspecExpressionEvaluator e;
// when // when
string result = e.evalExpression("`x = 1` + `y = 2` will be equal `x + y`").toStdString(); string result = e.evalExpression("`x = 1` + `y = 2` will be equal `x + y`").toStdString();
// then // then
BOOST_CHECK_EQUAL(result, "1 + 2 will be equal 3"); BOOST_CHECK_EQUAL(result, "1 + 2 will be equal 3");
} }
@ -90,7 +89,7 @@ BOOST_AUTO_TEST_CASE(natspec_js_eval_separated_expressions)
BOOST_AUTO_TEST_CASE(natspec_js_eval_input_params) BOOST_AUTO_TEST_CASE(natspec_js_eval_input_params)
{ {
cnote << "testing natspec evaluation of input params"; cnote << "testing natspec evaluation of input params";
// given // given
char const* abi = R"([ char const* abi = R"([
{ {
@ -111,9 +110,9 @@ BOOST_AUTO_TEST_CASE(natspec_js_eval_input_params)
] ]
} }
])"; ])";
NatspecExpressionEvaluator e(abi, "'f'", "[4]"); NatspecExpressionEvaluator e(abi, "'f'", "[4]");
// when // when
string result = e.evalExpression("Will multiply `a` by 7 and return `a * 7`.").toStdString(); string result = e.evalExpression("Will multiply `a` by 7 and return `a * 7`.").toStdString();
@ -121,4 +120,18 @@ BOOST_AUTO_TEST_CASE(natspec_js_eval_input_params)
BOOST_CHECK_EQUAL(result, "Will multiply 4 by 7 and return 28."); BOOST_CHECK_EQUAL(result, "Will multiply 4 by 7 and return 28.");
} }
BOOST_AUTO_TEST_CASE(natspec_js_eval_error)
{
cnote << "testing natspec evaluation of incorrect input";
// given
NatspecExpressionEvaluator e;
// when
string result = e.evalExpression("`test(`").toStdString();
// then
BOOST_CHECK_EQUAL(result, "`test(`");
}
BOOST_AUTO_TEST_SUITE_END() BOOST_AUTO_TEST_SUITE_END()