Skip to content
Snippets Groups Projects
Commit f8ea8a67 authored by Malte Harms's avatar Malte Harms
Browse files

Merge remote-tracking branch 'upstream/master'

parents 2b6ec4f1 8c57682e
No related branches found
No related tags found
No related merge requests found
...@@ -35,6 +35,8 @@ int evaluate(const std::string &s) { ...@@ -35,6 +35,8 @@ int evaluate(const std::string &s) {
case '^': change_stack_state(power, stack); break; case '^': change_stack_state(power, stack); break;
case '%': change_stack_state(modulo, stack); break; case '%': change_stack_state(modulo, stack); break;
case '0'...'9': stack.push(c - '0'); break; case '0'...'9': stack.push(c - '0'); break;
default:
throw std::invalid_argument( "received unrecognized character" );
} }
} }
......
...@@ -10,6 +10,12 @@ int main() { ...@@ -10,6 +10,12 @@ int main() {
std::cout << "User input is \"" << user_input << "\"\n"; std::cout << "User input is \"" << user_input << "\"\n";
const int result{evaluate(user_input)}; try{
std::cout << "Result is: " << result << '\n'; const int result{evaluate(user_input)};
std::cout << "Result is: " << result << '\n';
} catch (const std::invalid_argument& e){
std::cout << "encountered invalid argument" << e.what() << "\n";
return -1;
}
} }
...@@ -13,6 +13,26 @@ TEST_CASE( "pow function works", "[calc]") { ...@@ -13,6 +13,26 @@ TEST_CASE( "pow function works", "[calc]") {
REQUIRE_FALSE( evaluate("11^") == 2); REQUIRE_FALSE( evaluate("11^") == 2);
} }
TEST_CASE( "basic addition", "[calc]"){
REQUIRE( evaluate("55+") == 10);
REQUIRE( evaluate("34+") == 7);
}
TEST_CASE( "basic subtraction", "[calc]"){
REQUIRE( evaluate("55-") == 0);
REQUIRE( evaluate("83-") == 5);
}
TEST_CASE( "basic multiplication", "[calc]"){
REQUIRE( evaluate("55*") == 25);
REQUIRE( evaluate("36*") == 18);
}
TEST_CASE( "basic division", "[calc]"){
REQUIRE( evaluate("55/") == 1);
REQUIRE( evaluate("93/") == 3);
}
TEST_CASE( "Test modulo function", "[calc]") { TEST_CASE( "Test modulo function", "[calc]") {
REQUIRE( evaluate("11%") == 0 ); REQUIRE( evaluate("11%") == 0 );
REQUIRE( evaluate("32%") == 1 ); REQUIRE( evaluate("32%") == 1 );
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment