Skip to content
Snippets Groups Projects
test.cpp 2.03 KiB
Newer Older
Jacek Galowicz's avatar
Jacek Galowicz committed
#include <calc.hpp>

#include <catch2/catch.hpp>

TEST_CASE( "some example calculations", "[calc]") {
Jacek Galowicz's avatar
Jacek Galowicz committed
  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);
Jacek Galowicz's avatar
Jacek Galowicz committed
}
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 );
Lisa's avatar
Lisa committed

Lisa's avatar
Lisa committed
TEST_CASE( "division by zero is detected and exception is thrown", "[calc]") {
Lisa's avatar
Lisa committed
   REQUIRE_THROWS( evaluate("40/") );
   REQUIRE_THROWS( evaluate("00/") );
   REQUIRE_THROWS( evaluate("90/") );
Lisa's avatar
Lisa committed

Lisa's avatar
Lisa committed
TEST_CASE( "Basic power function test", "[calc]") {
Steven Waleska's avatar
Steven Waleska committed
  REQUIRE( evaluate("22^") == 4 );
  REQUIRE( evaluate("43^") == 64 );
  REQUIRE( evaluate("25^") == 32 );
Lisa's avatar
Lisa committed
}
Lisa's avatar
Lisa committed

Lisa's avatar
Lisa committed
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") );
Lisa's avatar
Lisa committed
TEST_CASE( "Two Operants in a row are detected and exception is thrown", "[calc]") {
Lisa's avatar
Lisa committed
  //REQUIRE_THROWS( evaluate("11+3-+4") );
  //REQUIRE_THROWS( evaluate("11/3*+4") );
}

Lisa's avatar
Lisa committed
TEST_CASE( "Unrecognized characters are detected and exception is thrown", "[calc]") {
Lisa's avatar
Lisa committed
  REQUIRE_THROWS( evaluate("11+3?4") );
  REQUIRE_THROWS( evaluate("1F+") );
}
Christian Wunder's avatar
Christian Wunder committed

TEST_CASE( "modulo by zero is detected and exception is thrown", "[calc]") {
   REQUIRE_THROWS( evaluate("40%") );
   REQUIRE_THROWS( evaluate("00%") );
   REQUIRE_THROWS( evaluate("90%") );
}