~f-riccardo87/ubuntu-calculator-app/new-design

6.1.1 by Dalius
unit-tests for getFormulaTexts
1
import QtQuick 2.0
2
import QtTest 1.0
3
import "../engine.js" as CALC
4
5
TestCase{
6
    name: "Get Formula Texts"
7
8
    function test_brackets_data(){
9
        return [
10
                    {
11
                    operation: "bracket after number",
12
                    prev: {engine: '5', type: 'number'},
13
                    visual: "(", engine: "(", type: 'group', brackets_count: 0,
6.1.2 by Dalius
Adding multiplication is now left for engine's handling.
14
                    expected: [' ( ', '(', 'group', 1]
6.1.1 by Dalius
unit-tests for getFormulaTexts
15
                    },
16
                    {
17
                    operation: "bracket after real",
18
                    prev: {engine: '5', type: 'real'},
19
                    visual: "(", engine: "(", type: 'group', brackets_count: 0,
6.1.2 by Dalius
Adding multiplication is now left for engine's handling.
20
                    expected: [' ( ', '(', 'group', 1]
6.1.1 by Dalius
unit-tests for getFormulaTexts
21
                    },
22
                    {
23
                    operation: "bracket after const",
24
                    prev: {engine: 'e', type: 'const'},
25
                    visual: "(", engine: "(", type: 'group', brackets_count: 0,
26
                    expected: [' ( ', '*(', 'group', 1]
27
                    },
28
                    {
29
                    operation: "bracket after operation",
30
                    prev: {engine: '*', type: 'operation'},
31
                    visual: "(", engine: "(", type: 'group', brackets_count: 0,
32
                    expected: [' ( ', '(', 'group', 1]
33
                    },
34
                    {
35
                    operation: "bracket after operation",
36
                    prev: {engine: '*', type: 'operation'},
37
                    visual: "(", engine: "(", type: 'group', brackets_count: 0,
38
                    expected: [' ( ', '(', 'group', 1]
39
                    },
40
                    {
41
                    operation: "closing bracket after number",
42
                    prev: {engine: '5', type: 'number'},
43
                    visual: ")", engine: ")", type: 'group', brackets_count: 1,
44
                    expected: [' ) ', ')', 'group', 0]
45
                    },
46
                    {
47
                    operation: "closing bracket after operation",
48
                    prev: {engine: '*', type: 'operation'},
49
                    visual: ")", engine: ")", type: 'group', brackets_count: 1,
50
                    expected: [null, null, 'group', 1]
51
                    },
52
                    {
53
                    operation: "closing bracket after function",
54
                    prev: {engine: 'sin(', type: 'function'},
55
                    visual: ")", engine: ")", type: 'group', brackets_count: 1,
56
                    expected: [null, null, 'group', 1]
57
                    },
58
               ]
59
    }
60
61
    function test_numbers_and_consts_data(){
62
        return [
63
                    {
64
                    operation: "number after number",
65
                    prev: {engine: '5', type: 'number'},
66
                    visual: "3", engine: "3", type: 'number', brackets_count: 0,
67
                    expected: ['3', '3', 'number', 0]
68
                    },
69
                    {
70
                    operation: "number after constant",
71
                    prev: {engine: 'e', type: 'const'},
72
                    visual: "3", engine: "3", type: 'number', brackets_count: 0,
6.1.2 by Dalius
Adding multiplication is now left for engine's handling.
73
                    expected: ['3', '3', 'number', 0]
6.1.1 by Dalius
unit-tests for getFormulaTexts
74
                    },
75
                    {
76
                    operation: "number after real",
77
                    prev: {engine: '.', type: 'real'},
78
                    visual: "3", engine: "3", type: 'number', brackets_count: 0,
79
                    expected: ['3', '3', 'real', 0]
80
                    },
81
                    {
82
                    operation: "real after number",
83
                    prev: {engine: '5', type: 'number'},
84
                    visual: ".", engine: ".", type: 'real', brackets_count: 0,
85
                    expected: ['.', '.', 'real', 0]
86
                    },
87
                    {
88
                    operation: "real after const",
89
                    prev: {engine: 'e', type: 'const'},
90
                    visual: ".", engine: ".", type: 'real', brackets_count: 0,
6.1.2 by Dalius
Adding multiplication is now left for engine's handling.
91
                    expected: ['.', '.', 'real', 0]
6.1.1 by Dalius
unit-tests for getFormulaTexts
92
                    },
93
                    {
94
                    operation: "real after real",
95
                    prev: {engine: '.', type: 'real'},
96
                    visual: ".", engine: ".", type: 'real', brackets_count: 0,
97
                    expected: [null, null, 'real', 0]
98
                    },
99
                    {
100
                    operation: "const after number",
101
                    prev: {engine: '5', type: 'number'},
102
                    visual: "e", engine: "e", type: 'const', brackets_count: 0,
6.1.2 by Dalius
Adding multiplication is now left for engine's handling.
103
                    expected: ['e', 'e', 'const', 0]
6.1.1 by Dalius
unit-tests for getFormulaTexts
104
                    },
105
                    {
106
                    operation: "const after real",
107
                    prev: {engine: '5', type: 'real'},
108
                    visual: "e", engine: "e", type: 'const', brackets_count: 0,
6.1.2 by Dalius
Adding multiplication is now left for engine's handling.
109
                    expected: ['e', 'e', 'const', 0]
6.1.1 by Dalius
unit-tests for getFormulaTexts
110
                    },
111
                    {
112
                    operation: "const after const",
113
                    prev: {engine: 'e', type: 'const'},
114
                    visual: "e", engine: "e", type: 'const', brackets_count: 0,
6.1.2 by Dalius
Adding multiplication is now left for engine's handling.
115
                    expected: ['e', 'e', 'const', 0]
6.1.1 by Dalius
unit-tests for getFormulaTexts
116
                    },
117
                    {
118
                    operation: "const after function",
119
                    prev: {engine: 'sin(', type: 'function'},
120
                    visual: "e", engine: "e", type: 'const', brackets_count: 0,
121
                    expected: ['e', 'e', 'const', 0]
122
                    },
123
               ]
124
    }
125
126
    function test_operations_data(){
127
        return [
128
                    {
129
                    operation: "operation after number",
130
                    prev: {engine: '5', type: 'number'},
131
                    visual: "-", engine: "-", type: 'operation', brackets_count: 0,
132
                    expected: [' - ', '-', 'operation', 0]
133
                    },
134
                    {
135
                    operation: "operation (multiplication) after number",
136
                    prev: {engine: '5', type: 'number'},
137
                    visual: "*", engine: "*", type: 'operation', brackets_count: 0,
138
                    expected: [' * ', '*', 'operation', 0]
139
                    },
140
                    {
141
                    operation: "operation (multiplication) after real",
142
                    prev: {engine: '5', type: 'real'},
143
                    visual: "*", engine: "*", type: 'operation', brackets_count: 0,
144
                    expected: [' * ', '*', 'operation', 0]
145
                    },
146
                    {
147
                    operation: "operation (multiplication) after const",
148
                    prev: {engine: 'e', type: 'const'},
149
                    visual: "*", engine: "*", type: 'operation', brackets_count: 0,
150
                    expected: [' * ', '*', 'operation', 0]
151
                    },
152
                    {
153
                    operation: "operation (multiplication) after closing bracket",
154
                    prev: {engine: ')', type: 'group'},
155
                    visual: "*", engine: "*", type: 'operation', brackets_count: 0,
156
                    expected: [' * ', '*', 'operation', 0]
157
                    },
158
                    {
159
                    operation: "operation (multiplication) after operation",
160
                    prev: {engine: '*', type: 'operation'},
161
                    visual: "*", engine: "*", type: 'operation', brackets_count: 0,
162
                    expected: [null, null, 'operation', 0]
163
                    },
164
                    {
165
                    operation: "operation (division) after operation",
166
                    prev: {engine: '*', type: 'operation'},
167
                    visual: "/", engine: "/", type: 'operation', brackets_count: 0,
168
                    expected: [null, null, 'operation', 0]
169
                    },
170
                    {
171
                    operation: "operation (division) after function",
172
                    prev: {engine: 'sin(', type: 'function'},
173
                    visual: "/", engine: "/", type: 'operation', brackets_count: 0,
174
                    expected: [null, null, 'operation', 0]
175
                    },
176
                    {
177
                    operation: "operation (multiplication) after opening bracket",
178
                    prev: {engine: '(', type: 'group'},
179
                    visual: "*", engine: "*", type: 'operation', brackets_count: 0,
180
                    expected: [null, null, 'operation', 0]
181
                    },
7.1.18 by Dalius
Factorial fixed.
182
                    {
183
                    operation: "operation (factorial) after operation (minus)",
184
                    prev: {engine: '-', type: 'operation'},
185
                    visual: "!", engine: "!", type: 'operation', brackets_count: 0,
186
                    expected: [null, null, 'operation', 0]
187
                    },
188
                    {
189
                    operation: "operation (factorial) after operation (multiplication)",
190
                    prev: {engine: '*', type: 'operation'},
191
                    visual: "!", engine: "!", type: 'operation', brackets_count: 0,
192
                    expected: [null, null, 'operation', 0]
193
                    },
194
                    {
195
                    operation: "operation (factorial) after operation (factorial)",
196
                    prev: {engine: '!', type: 'operation'},
197
                    visual: "!", engine: "!", type: 'operation', brackets_count: 0,
198
                    expected: [' ! ', '!', 'operation', 0]
199
                    },
6.1.1 by Dalius
unit-tests for getFormulaTexts
200
               ]
201
    }
202
203
    function test_functions_data(){
204
        return [
205
                    {
206
                    operation: "function after number",
207
                    prev: {engine: '5', type: 'number'},
208
                    visual: "sin", engine: "sin", type: 'function', brackets_count: 0,
6.1.2 by Dalius
Adding multiplication is now left for engine's handling.
209
                    expected: [' sin( ', 'sin(', 'function', 1]
6.1.1 by Dalius
unit-tests for getFormulaTexts
210
                    },
211
                    {
212
                    operation: "function after real",
213
                    prev: {engine: '5', type: 'real'},
214
                    visual: "sin", engine: "sin", type: 'function', brackets_count: 0,
6.1.2 by Dalius
Adding multiplication is now left for engine's handling.
215
                    expected: [' sin( ', 'sin(', 'function', 1]
6.1.1 by Dalius
unit-tests for getFormulaTexts
216
                    },
217
                    {
218
                    operation: "function after const",
219
                    prev: {engine: 'e', type: 'const'},
220
                    visual: "sin", engine: "sin", type: 'function', brackets_count: 0,
6.1.2 by Dalius
Adding multiplication is now left for engine's handling.
221
                    expected: [' sin( ', 'sin(', 'function', 1]
6.1.1 by Dalius
unit-tests for getFormulaTexts
222
                    },
223
                    {
224
                    operation: "function after operation",
225
                    prev: {engine: '*', type: 'operation'},
226
                    visual: "sin", engine: "sin", type: 'function', brackets_count: 0,
227
                    expected: ['sin( ', 'sin(', 'function', 1]
228
                    },
229
                    {
230
                    operation: "function after function",
231
                    prev: {engine: 'sin(', type: 'function'},
232
                    visual: "sin", engine: "sin", type: 'function', brackets_count: 0,
233
                    expected: ['sin( ', 'sin(', 'function', 1]
234
                    },
235
               ]
236
    }
237
238
    function test_brackets(data) {
239
        compare(CALC.getFormulaTexts(data.prev, data.visual, data.engine, data.type, data.brackets_count),
240
                    data.expected,
241
                    data.operation);
242
    }
243
244
    function test_numbers_and_consts(data) {
245
        compare(CALC.getFormulaTexts(data.prev, data.visual, data.engine, data.type, data.brackets_count),
246
                    data.expected,
247
                    data.operation);
248
    }
249
250
    function test_operations(data) {
251
        compare(CALC.getFormulaTexts(data.prev, data.visual, data.engine, data.type, data.brackets_count),
252
                    data.expected,
253
                    data.operation);
254
    }
255
256
    function test_functions(data) {
257
        compare(CALC.getFormulaTexts(data.prev, data.visual, data.engine, data.type, data.brackets_count),
258
                    data.expected,
259
                    data.operation);
260
    }
261
}