generated from roman-mazur/architecture-lab-2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathimplementation_test.go
168 lines (142 loc) · 4.02 KB
/
implementation_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
package lab2
import (
"fmt"
"testing"
"github.com/stretchr/testify/assert"
)
func TestCalculatePostfix_EmptyParameter(t *testing.T) {
_, err := CalculatePostfix("")
assert.Error(t, err, "Calling CalculatePostfix with empty string should return error")
}
func TestCalculatePostfixn_InvalidParameters(t *testing.T) {
_, err := CalculatePostfix("abc")
assert.Error(t, err, "Calling CalculatePostfix with invalid characters should return error")
}
func TestCalculatePostfix_Adding_Integers(t *testing.T) {
res, err := CalculatePostfix("4 7 + 6 +")
if assert.Nil(t, err) {
assert.Equal(t, 17., res)
}
}
func TestCalculatePostfix_Adding_Floats(t *testing.T) {
res, err := CalculatePostfix("2.5 5.1 +")
if assert.Nil(t, err) {
assert.Equal(t, 7.6, res)
}
}
func TestCalculatePostfix_Adding_Negatives(t *testing.T) {
res, err := CalculatePostfix("-3 -11 +")
if assert.Nil(t, err) {
assert.Equal(t, -14., res)
}
}
func TestCalculatePostfix_Subtracting_Integers(t *testing.T) {
res, err := CalculatePostfix("5 18 -")
if assert.Nil(t, err) {
assert.Equal(t, -13., res)
}
}
func TestCalculatePostfix_Subtracting_Floats(t *testing.T) {
res, err := CalculatePostfix("3.4 5.1 - 2.6 -")
if assert.Nil(t, err) {
assert.Equal(t, -4.3, res)
}
}
func TestCalculatePostfix_Subtracting_Negatives(t *testing.T) {
res, err := CalculatePostfix("-6 -3 - -5 -")
if assert.Nil(t, err) {
assert.Equal(t, 2., res)
}
}
func TestCalculatePostfix_Multiplying_Integers(t *testing.T) {
res, err := CalculatePostfix("5 18 * 2 *")
if assert.Nil(t, err) {
assert.Equal(t, 180., res)
}
}
func TestCalculatePostfix_Multiplying_Floats(t *testing.T) {
res, err := CalculatePostfix("6.25 5.8 *")
if assert.Nil(t, err) {
assert.Equal(t, 36.25, res)
}
}
func TestCalculatePostfix_Multiplying_Negatives(t *testing.T) {
res, err := CalculatePostfix("-9 11 *")
if assert.Nil(t, err) {
assert.Equal(t, -99., res)
}
}
func TestCalculatePostfix_Multiplying_ByZero(t *testing.T) {
res, err := CalculatePostfix("13 0 *")
if assert.Nil(t, err) {
assert.Equal(t, 0., res)
}
}
func TestCalculatePostfix_Dividing_Integers(t *testing.T) {
res, err := CalculatePostfix("18 5 / 2 /")
if assert.Nil(t, err) {
assert.Equal(t, 1.8, res)
}
}
func TestCalculatePostfix_Dividing_Floats(t *testing.T) {
res, err := CalculatePostfix("9.5 8.0 /")
if assert.Nil(t, err) {
assert.Equal(t, 1.1875, res)
}
}
func TestCalculatePostfix_Dividing_Negatives(t *testing.T) {
res, err := CalculatePostfix("-45 -15 / -3 /")
if assert.Nil(t, err) {
assert.Equal(t, -1., res)
}
}
func TestCalculatePostfix_Dividing_ByZero(t *testing.T) {
_, err := CalculatePostfix("13 0 /")
assert.Error(t, err, "String with dividing by zero should return error")
}
func TestCalculatePostfix_Exponentiating_IntegerExponent(t *testing.T) {
res, err := CalculatePostfix("6 3 ^")
if assert.Nil(t, err) {
assert.Equal(t, 216., res)
}
}
func TestCalculatePostfix_Exponentiating_FloatExponent(t *testing.T) {
res, err := CalculatePostfix("0.64 0.5 ^")
if assert.Nil(t, err) {
assert.Equal(t, 0.8, res)
}
}
func TestCalculatePostfix_Exponentiating_NegativeExponent(t *testing.T) {
res, err := CalculatePostfix("2 -5 ^")
if assert.Nil(t, err) {
assert.Equal(t, 0.03125, res)
}
}
func TestCalculatePostfix_Exponentiating_ZeroExponent(t *testing.T) {
res, err := CalculatePostfix("14 0 ^")
if assert.Nil(t, err) {
assert.Equal(t, 1., res)
}
}
func TestCalculatePostfix_ComplexExpression_1(t *testing.T) {
res, err := CalculatePostfix("6 10 + 4 - 1 1 2 * + / 1 +")
if assert.Nil(t, err) {
assert.Equal(t, 5., res)
}
}
func TestCalculatePostfix_ComplexExpression_2(t *testing.T) {
_, err := CalculatePostfix("3 7 - 6 + 2 2 - /")
assert.Error(t, err, "String with dividing by zero should return error")
}
func TestCalculatePostfix_ComplexExpression_3(t *testing.T) {
res, err := CalculatePostfix("5 8 + 3 - 2 ^ 5 2 * /")
if assert.Nil(t, err) {
assert.Equal(t, 10., res)
}
}
func ExampleCalculatePostfix() {
res, _ := CalculatePostfix("7 5 - 8 + -1 -5 * /")
fmt.Println(res)
// Output:
// 2
}