diff options
Diffstat (limited to 'test.cc')
-rw-r--r-- | test.cc | 14 |
1 files changed, 14 insertions, 0 deletions
@@ -15,6 +15,8 @@ TEST_F(ParserTest, BasicCalc) { TEST_F(ParserTest, OperatorPriority) { EXPECT_EQ(10, SimpleParser::calculate("2+2*4")); EXPECT_EQ(4, SimpleParser::calculate("2+4/2")); + EXPECT_EQ(60, SimpleParser::calculate("100/5*3")); + EXPECT_EQ(60, SimpleParser::calculate("100*3/5")); EXPECT_EQ(42, SimpleParser::calculate("5+10*4-3")); EXPECT_EQ(17, SimpleParser::calculate("10+20/2-3")); EXPECT_EQ(261, SimpleParser::calculate("5+2^8")); @@ -31,6 +33,18 @@ TEST_F(ParserTest, BracketCalc) { EXPECT_EQ(6.25, SimpleParser::calculate("2.5*(2+3-(3/2+1))")); } +TEST_F(ParserTest, ConstantCalc) { + SimpleParser::ConstantMap constants; + constants["pi"] = 3.1415926535; + constants["answer"] = 42; + constants["g"] = 9.81; + + EXPECT_EQ(3.1415926535, SimpleParser::calculate("pi", &constants)); + EXPECT_EQ(6.283185307, SimpleParser::calculate("2*pi*1", &constants)); + EXPECT_EQ(0, SimpleParser::calculate("2*3*7-answer", &constants)); + EXPECT_EQ(1347.58, SimpleParser::calculate("1/2*(g*(-1))*answer^2+10000", &constants)); +} + int main(int argc, char **argv) { testing::InitGoogleTest(&argc, argv); |