81 lines
2.1 KiB
C++
81 lines
2.1 KiB
C++
#include <catch2/catch_test_macros.hpp>
|
|
|
|
#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");
|
|
}
|
|
|
|
TEST_CASE("CalculatorCli - edge cases", "[calculator-challenge]")
|
|
{
|
|
CalculatorCli calculator;
|
|
|
|
calculator.parse("a=31+2");
|
|
CHECK_FALSE(calculator.parse("result") == "a = 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");
|
|
}
|