IVS-calculator
Loading...
Searching...
No Matches
mathlib_tests.cpp
Go to the documentation of this file.
1#include <gtest/gtest.h>
2#include "mathlib.h"
3
4using namespace mathlib;
5
6
7//=================================================================================================================================
8//ADD
9
10
11TEST(addTest, PositiveNumbers)
12{
13 EXPECT_DOUBLE_EQ(add(1.0,2.0),3.0);
14}
15
16TEST(addTest, NegativeNumbers)
17{
18 EXPECT_DOUBLE_EQ(add(-1.0,-3.0),-4.0);
19}
20
21TEST(addTest, MixedNumbersPositive)
22{
23 EXPECT_DOUBLE_EQ(add(-1.0,3.0),2.0);
24}
25
26TEST(addTest, MixedNumbersNegative)
27{
28 EXPECT_DOUBLE_EQ(add(-4.0,3.0),-1.0);
29}
30
31TEST(addTest, NumberZero)
32{
33 EXPECT_DOUBLE_EQ(add(0.0,1.0),1.0);
34}
35
36
37//=================================================================================================================================
38//SUBTRACT
39
40TEST(subtractTest, PositiveNumbers)
41{
42 EXPECT_DOUBLE_EQ(subtract(5.0,3.0),2.0);
43}
44
45TEST(subtractTest, NegativeNumbers)
46{
47 EXPECT_DOUBLE_EQ(subtract(-5.0,-1.0),-4.0);
48}
49
50TEST(subtractTest, MixedNumbersPositive)
51{
52 EXPECT_DOUBLE_EQ(subtract(1.0,-2.0),3.0);
53}
54
55TEST(subtractTest, MixedNumbersNegative)
56{
57 EXPECT_DOUBLE_EQ(subtract(-5.0,3.0),-8.0);
58}
59
60TEST(subtractTest, NumberZero)
61{
62 EXPECT_DOUBLE_EQ(subtract(0.0,3.0),-3.0);
63}
64
65
66//=================================================================================================================================
67//MULTIPLY
68
69TEST(multiplyTest, PositiveNumbers)
70{
71 EXPECT_DOUBLE_EQ(multiply(5.0,10.0),50.0);
72}
73
74TEST(multiplyTest, NegativeNumbers)
75{
76 EXPECT_DOUBLE_EQ(multiply(-3.0,-2.0),6.0);
77}
78
79TEST(multiplyTest, MixedNumbers)
80{
81 EXPECT_DOUBLE_EQ(multiply(-3.0,2.0),-6.0);
82}
83
84TEST(multiplyTest, NumberZero)
85{
86 EXPECT_DOUBLE_EQ(multiply(0.0,5.0),0.0);
87}
88
89TEST(multiplyTest, NeutralElement)
90{
91 EXPECT_DOUBLE_EQ(multiply(5.0,1.0),5.0);
92}
93
94TEST(multiplyTest, SmallDecimalNumber)
95{
96 EXPECT_DOUBLE_EQ(multiply(5.0,0.5),2.5);
97}
98
99
100//=================================================================================================================================
101//DIVIDE
102
103TEST(divideTest, PositiveNumbers)
104{
105 MathError err = OK;
106 EXPECT_DOUBLE_EQ(divide(10.0,5.0,err),2.0);
107 EXPECT_EQ(err,OK);
108
109}
110
111TEST(divideTest, NegativeNumbers)
112{
113 MathError err = OK;
114 EXPECT_DOUBLE_EQ(divide(-9.0,-3.0,err),3.0);
115 EXPECT_EQ(err,OK);
116}
117
118TEST(divideTest, MixedNumbers)
119{
120 MathError err = OK;
121 EXPECT_DOUBLE_EQ(divide(-27.0,9.0,err),-3.0);
122 EXPECT_EQ(err,OK);
123}
124
125TEST(divideTest, NeutralElement)
126{
127 MathError err = OK;
128 EXPECT_DOUBLE_EQ(divide(10.0,1.0,err),10.0);
129 EXPECT_EQ(err,OK);
130}
131
132TEST(divideTest, NumberZero)
133{
134 MathError err = OK;
135 divide(5.0,0.0,err);
136
137 EXPECT_EQ(err,DIVISION_BY_ZERO);
138}
139
140TEST(divideTest, ZeroDividend)
141{
142 MathError err = OK;
143 EXPECT_DOUBLE_EQ(divide(0.0,5.0,err),0.0);
144
145 EXPECT_EQ(err,OK);
146}
147
148
149//=================================================================================================================================
150//FACTORIAL
151
152TEST(factorialTest, PositiveNumber)
153{
154 MathError err = OK;
155 EXPECT_DOUBLE_EQ(factorial(3,err),6);
156 EXPECT_EQ(err,OK);
157}
158
159TEST(factorialTest, NegativeNumber)
160{
161 MathError err = OK;
162 factorial(-4,err);
163
164 EXPECT_EQ(err,NEGATIVE_FACTORIAL);
165}
166
167TEST(factorialTest, NumberZero)
168{
169 MathError err = OK;
170 EXPECT_DOUBLE_EQ(factorial(0,err),1);
171 EXPECT_EQ(err,OK);
172}
173
174TEST(factorialTest, NumberOne)
175{
176 MathError err = OK;
177 EXPECT_DOUBLE_EQ(factorial(1,err),1);
178
179 EXPECT_EQ(err,OK);
180}
181
182//=================================================================================================================================
183//POWER
184
185
186TEST(powerTest, PositiveNumber)
187{
188 EXPECT_DOUBLE_EQ(power(2.0,3),8.0);
189}
190
191TEST(powerTest, NeutralElement)
192{
193 EXPECT_DOUBLE_EQ(power(6.0,1),6.0);
194}
195
196TEST(powerTest, NumberZero)
197{
198 EXPECT_DOUBLE_EQ(power(15.0,0),1.0);
199}
200
201TEST(powerTest, BaseNumberOne)
202{
203 EXPECT_DOUBLE_EQ(power(1.0,50),1.0);
204}
205
206
207//=================================================================================================================================
208//ROOT
209
210TEST(rootTest, PositiveNumber)
211{
212 MathError err = OK;
213 EXPECT_DOUBLE_EQ(root(9.0,2,err),3.0);
214 EXPECT_EQ(err,OK);
215}
216
217TEST(rootTest, NegativeRootNumber)
218{
219 MathError err = OK;
220 root(25.0,-2,err);
221
222 EXPECT_EQ(err,INVALID_ROOT);
223}
224
225TEST(rootTest, NegativeBaseOddRoot)
226{
227 MathError err = OK;
228 EXPECT_DOUBLE_EQ(root(-8.0,3,err),-2.0);
229
230 EXPECT_EQ(err,OK);
231}
232
233TEST(rootTest, NegativeBaseEvenRoot)
234{
235 MathError err = OK;
236 root(-5.0,2,err);
237
238 EXPECT_EQ(err,INVALID_ARGUMENT);
239}
240
241TEST(rootTest, NumberZero)
242{
243 MathError err = OK;
244 EXPECT_DOUBLE_EQ(root(0.0,3,err),0.0);
245
246 EXPECT_EQ(err,OK);
247}
248
249TEST(rootTest, ZeroDegree)
250{
251 MathError err = OK;
252 root(10.0,0,err);
253
254 EXPECT_EQ(err, INVALID_ROOT);
255}
256
257
258//=================================================================================================================================
259//MODULO
260
261TEST(moduloTest, PositiveNumber)
262{
263 MathError err = OK;
264 EXPECT_EQ(modulo(11.0,2.0,err),1.0);
265
266 EXPECT_EQ(err,OK);
267}
268
269TEST(moduloTest, NegativeNumber)
270{
271 MathError err = OK;
272 EXPECT_EQ(modulo(-7.0,3.0,err),-1.0);
273
274 EXPECT_EQ(err,OK);
275}
276
277TEST(moduloTest, NumberZero)
278{
279 MathError err = OK;
280 modulo(13.0,0.0,err);
281
282 EXPECT_EQ(err,DIVISION_BY_ZERO);
283}
284
285TEST(moduloTest, NegativeModulo)
286{
287 MathError err = OK;
288 EXPECT_EQ(modulo(9.0,-4.0,err),1.0);
289
290 EXPECT_EQ(err,OK);
291}
Mathematical library for calculator project.
TEST(addTest, PositiveNumbers)
double root(double base, int n, MathError &err)
Implementation of function root.
Definition mathlib.cpp:85
double add(double a, double b)
Implementation of function add.
Definition mathlib.cpp:9
double multiply(double a, double b)
Implementation of function multiply.
Definition mathlib.cpp:25
double modulo(double a, double b, MathError &err)
Implementation of function modulo.
Definition mathlib.cpp:111
MathError
Definition mathlib.h:11
@ INVALID_ROOT
Definition mathlib.h:15
@ NEGATIVE_FACTORIAL
Definition mathlib.h:14
@ DIVISION_BY_ZERO
Definition mathlib.h:13
@ INVALID_ARGUMENT
Definition mathlib.h:16
double divide(double a, double b, MathError &err)
Implementation of function divide.
Definition mathlib.cpp:33
double subtract(double a, double b)
Implementation of function subtract.
Definition mathlib.cpp:17
double factorial(int a, MathError &err)
Implementation of function factorial.
Definition mathlib.cpp:47
double power(double base, int exp)
Implementation of function power.
Definition mathlib.cpp:67