#include <calc.hpp> #include <catch2/catch.hpp> TEST_CASE( "some example calculations", "[calc]") { REQUIRE( evaluate("11+") == 2 ); REQUIRE( evaluate("12+2-3*") == 3 ); } TEST_CASE( "pow function works", "[calc]") { REQUIRE( evaluate("22^") == 4 ); REQUIRE( evaluate("43^") == 64 ); REQUIRE( evaluate("11^") == 1); } 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]") { REQUIRE( evaluate("11%") == 0 ); REQUIRE( evaluate("32%") == 1 ); REQUIRE( evaluate("51%") == 0 ); } TEST_CASE( "division by zero is detected and exception is thrown", "[calc]") { REQUIRE_THROWS( evaluate("40/") ); REQUIRE_THROWS( evaluate("00/") ); REQUIRE_THROWS( evaluate("90/") ); } TEST_CASE( "Basic power function test", "[calc]") { REQUIRE( evaluate("22^") == 4 ); REQUIRE( evaluate("43^") == 64 ); REQUIRE( evaluate("25^") == 32 ); } TEST_CASE( "Parameters are misaligned and excpetion is thrown", "[calc]") { // REQUIRE_THROWS( evaluate("40*/") ); // REQUIRE_THROWS( evaluate("14--") ); // REQUIRE_THROWS( evaluate("1+1") ); // REQUIRE_THROWS( evaluate("+11") ); } TEST_CASE( "Two Operants in a row are detected and exception is thrown", "[calc]") { //REQUIRE_THROWS( evaluate("11+3-+4") ); //REQUIRE_THROWS( evaluate("11/3*+4") ); } TEST_CASE( "Unrecognized characters are detected and exception is thrown", "[calc]") { REQUIRE_THROWS( evaluate("11+3?4") ); REQUIRE_THROWS( evaluate("1F+") ); }