Skip to content
Snippets Groups Projects
test.cpp 1.61 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

TEST_CASE( "Div by zero not allowed", "[calc]") {
//   REQUIRE_THROWS( evaluate("40/") );
//   REQUIRE_THROWS( evaluate("00/") );
//   REQUIRE_THROWS( evaluate("90/") );
}
Lisa's avatar
Lisa committed

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

TEST_CASE( "Misalignments of commands and parameters test", "[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", "[calc]") {
  //REQUIRE_THROWS( evaluate("11+3-+4") );
  //REQUIRE_THROWS( evaluate("11/3*+4") );
}