#include #include "CalculatorCli.hpp" TEST_CASE("CalculatorCli - can parse operations", "[calculator-challenge]") { CalculatorCli calculator; calculator.parse("a = 4 + 1"); CHECK(calculator.parse("result") == "a = 5"); calculator.parse(" a = 4 + 1"); CHECK(calculator.parse("result") == "a = 5"); calculator.parse("a = 4 + 1 "); CHECK(calculator.parse("result") == "a = 5"); calculator.parse("a = 4 + 1"); CHECK(calculator.parse("result") == "a = 5"); calculator.parse("a = 42 + 1"); CHECK(calculator.parse("result") == "a = 43"); calculator.parse("d = t + 2"); calculator.parse("t = 1 + 9"); calculator.parse("e = d + d"); CHECK(calculator.parse("result") == "e = 24"); } TEST_CASE("CalculatorCli - edge cases", "[calculator-challenge]") { CalculatorCli calculator; calculator.parse("a=31 + 2"); CHECK(calculator.parse("result") == "a = 33"); calculator.parse("b= 31+ 2"); CHECK_FALSE(calculator.parse("result") == "b = 33"); calculator.parse("c= 31 +2"); CHECK_FALSE(calculator.parse("result") == "c = 33"); // TODO: @JC do not require spaces } TEST_CASE("CalculatorCli - can undo operations", "[calculator-challenge]") { CalculatorCli calculator; calculator.parse("a = 4 + 1"); CHECK(calculator.parse("result") == "a = 5"); calculator.parse(" a = 6 + 1"); CHECK(calculator.parse("result") == "a = 7"); SECTION("simple command") { calculator.parse("undo"); CHECK(calculator.parse("result") == "a = 5"); } SECTION("two undos") { calculator.parse("undo"); CHECK(calculator.parse("result") == "a = 5"); calculator.parse("undo"); CHECK(calculator.parse("result") == "N/A"); } SECTION("with space") { calculator.parse("undo "); CHECK(calculator.parse("result") == "a = 5"); } SECTION("with zero") { calculator.parse("undo 0"); CHECK(calculator.parse("result") == "a = 7"); } } TEST_CASE("CalculatorCli - can undo multiple operations", "[calculator-challenge]") { CalculatorCli calculator; calculator.parse("a = 4 + 1"); CHECK(calculator.parse("result") == "a = 5"); calculator.parse(" a = 6 + 1"); CHECK(calculator.parse("result") == "a = 7"); calculator.parse("b = 6 + 1"); CHECK(calculator.parse("result") == "b = 7"); calculator.parse("undo 2"); CHECK(calculator.parse("result") == "a = 5"); }