Kalkulacka  1.0.0
Jednoduchýkalkulátor
backendTest.cpp
Zobrazit dokumentaci tohoto souboru.
1 
9 #include "../Equation.h"
10 #include "../math/Number.h"
11 #include "TestConstants.h"
12 #include <gtest/gtest.h>
13 #include <string>
14 
15 namespace team22{ namespace Test {namespace Backend {
16  using std::stringstream;
17  using namespace Calc;
19  using std::cout;
20  using std::endl;
21  using std::string;
22 
24  {
25  public:
27 
29 
31 
32  stringstream strEquation;
33 
34  InterpretException *error = nullptr;
35 
36  Number result = {0};
37 
39  : equation(lexicalAnalyzer, &interpret)
40  {
41  lexicalAnalyzer.registrLexCallback(&interpret);
42  interpret.registrResultCallback(this);
43  equation.registrEquationObserver(this);
44  }
45 
46  void onEquationChange() override
47  {
48  strEquation.str("");
49  strEquation << equation;
50  }
51 
52  void onError(InterpretException exception) override
53  {
54  error = new InterpretException(exception);
55  }
56 
57  void onResultChange(team22::Math::Number result) override
58  {
59  this->result = result;
60  }
61 
62  virtual ~BackendTester()
63  {
64  delete error;
65  }
66 
67  };
68 
69  TEST(test, test1)
70  {
71  //12+34BS=BS5-BS*6=
72  BackendTester testr;
73 
74  testr.equation.pushSymbol('1');
75  EXPECT_EQ(testr.strEquation.str(), "1");
77  EXPECT_EQ(testr.error, nullptr);
78 
79  testr.equation.pushSymbol('2');
80  EXPECT_EQ(testr.strEquation.str(), "12");
82  EXPECT_EQ(testr.error, nullptr);
83 
84  testr.equation.pushSymbol('+');
85  EXPECT_EQ(testr.strEquation.str(), "12+");
87  EXPECT_EQ(testr.error, nullptr);
88 
89  testr.equation.pushSymbol('3');
90  EXPECT_EQ(testr.strEquation.str(), "12+3");
92  EXPECT_EQ(testr.error, nullptr);
93 
94  testr.equation.pushSymbol('4');
95  EXPECT_EQ(testr.strEquation.str(), "12+34");
97  EXPECT_EQ(testr.error, nullptr);
98 
99  testr.equation.pushSymbol('B');
100  EXPECT_EQ(testr.strEquation.str(), "12+34");
102  EXPECT_EQ(testr.error, nullptr);
103 
104  testr.equation.pushSymbol('S');
105  EXPECT_EQ(testr.strEquation.str(), "12+3");
107  EXPECT_EQ(testr.error, nullptr);
108 
109  testr.equation.pushSymbol('=');
110  EXPECT_EQ(testr.strEquation.str(), "");
112  EXPECT_EQ(testr.error, nullptr);
113 
114  testr.equation.pushSymbol('B');
115  EXPECT_EQ(testr.strEquation.str(), "");
117  EXPECT_EQ(testr.error, nullptr);
118 
119  testr.equation.pushSymbol('S');
120  EXPECT_EQ(testr.strEquation.str(), "1");
122  EXPECT_EQ(testr.error, nullptr);
123 
124  testr.equation.pushSymbol('5');
125  EXPECT_EQ(testr.strEquation.str(), "15");
127  EXPECT_EQ(testr.error, nullptr);
128 
129  testr.equation.pushSymbol('-');
130  EXPECT_EQ(testr.strEquation.str(), "15-");
132  EXPECT_EQ(testr.error, nullptr);
133 
134  testr.equation.pushSymbol('B');
135  EXPECT_EQ(testr.strEquation.str(), "15-");
137  EXPECT_EQ(testr.error, nullptr);
138 
139  testr.equation.pushSymbol('S');
140  EXPECT_EQ(testr.strEquation.str(), "15");
142  EXPECT_EQ(testr.error, nullptr);
143 
144  testr.equation.pushSymbol('*');
145  EXPECT_EQ(testr.strEquation.str(), "15*");
147  EXPECT_EQ(testr.error, nullptr);
148 
149  testr.equation.pushSymbol('6');
150  EXPECT_EQ(testr.strEquation.str(), "15*6");
152  EXPECT_EQ(testr.error, nullptr);
153 
154  testr.equation.pushSymbol('=');
155  EXPECT_EQ(testr.strEquation.str(), "");
157  EXPECT_EQ(testr.error, nullptr);
158 
159  }
160 }}}
void registrResultCallback(ResultObserver *resultCallbackObject)
Definition: Interpret.cpp:131
Třída reprezentující rovnici.
Definition: Equation.h:30
void registrLexCallback(LexIdentificationObserver *lexCallbackObject)
void pushSymbol(char symbol)
Definition: Equation.cpp:45
#define DELTA
Definition: Number.h:20
void registrEquationObserver(EquationObserver *equationObservers)
Definition: Equation.cpp:95
#define T22_NUMBER_EXPECT_NEAR(actual, expect, delta)
Definition: TestConstants.h:33
void onResultChange(team22::Math::Number result) override
Definition: backendTest.cpp:57
void onError(InterpretException exception) override
Definition: backendTest.cpp:52