-
Notifications
You must be signed in to change notification settings - Fork 2
/
test.sh
executable file
·336 lines (283 loc) · 8.15 KB
/
test.sh
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
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
#!/bin/bash
#Eyyy, this script can be used for testing IZPproj1 @VUTFIT2017
#you can do arbitrary edits in this file. Enjoy hacking!
RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m' # No Color
success=true
echo "Testing proj1.c file existence..."
if [ ! -f ./proj1.c ]; then
echo "File proj1.c not found!"
echo -e "${RED}[FAILED]${NC}"
success=false
exit 1
else
echo -e "${GREEN}[OK]${NC}"
fi
echo
echo "Looking into proj1.c for forbidden functions..." #i should use regex, i know, i know...shhh
# bad luck if you use these words in comments
if grep -q "malloc" proj1.c || grep -q "fopen" proj1.c || grep -q "fscanf" proj1.c || grep -q "qsort" proj1.c || grep -q "lsearch" proj1.c || grep -q "bsearch" proj1.c || grep -q "hsearch" proj1.c; then
echo -e "${RED}[FAILED]${NC}"
success=false
else
echo -e "${GREEN}[OK]${NC}"
fi
echo
echo "Cleaning folder..."
rm -fv proj1
echo
echo "Trying to build proj1..."
make -s
if [ $? -eq 0 ]; then
echo -e "${GREEN}[OK]${NC}"
else
echo -e "${RED}[FAILED]${NC}"
success=false
exit 1
fi
echo
echo "Creating DB..."
rm cities.txt
touch cities.txt
echo "Prcice" >> cities.txt
echo "Praha" >> cities.txt
echo "Prachatice" >> cities.txt
echo "Brno" >> cities.txt
echo "Bratislava" >> cities.txt
echo "brankovice" >> cities.txt
echo "liberec" >> cities.txt
echo "LOuny" >> cities.txt
echo "Adamov" >> cities.txt
echo "As" >> cities.txt
echo "ASASAS" >> cities.txt
echo "Teplice" >> cities.txt
echo "Olomouc" >> cities.txt
echo "Zilina je krasna" >> cities.txt
echo "zilina je hezka" >> cities.txt
echo -e "${GREEN}[OK]${NC}"
echo
echo "Running without parameter..."
echo "Expected output: \"Enable: ABLOPTZ\""
OUTPUT="$(./proj1 < cities.txt)"
echo -n "Your output: "
echo "\"$OUTPUT\""
if [ "$OUTPUT" == "Enable: ABLOPTZ" ]; then
echo -e "${GREEN}[OK]${NC}"
else
echo -e "${RED}[FAILED]${NC}"
success=false
fi
echo
echo "Running with parameter \"a\"..."
echo "Expected output: \"Enable: DS\""
OUTPUT="$(./proj1 a < cities.txt)"
echo -n "Your output: "
echo "\"$OUTPUT\""
if [ "$OUTPUT" == "Enable: DS" ]; then
echo -e "${GREEN}[OK]${NC}"
else
echo -e "${RED}[FAILED]${NC}"
success=false
fi
echo
echo "Running with parameter \"praha-mesto\" (testing parameter longer than word)..."
echo "Expected output: \"Not found\""
OUTPUT="$(./proj1 praha-mesto < cities.txt)"
echo -n "Your output: "
echo "\"$OUTPUT\""
if [ "$OUTPUT" == "Not found" ]; then
echo -e "${GREEN}[OK]${NC}"
else
echo -e "${RED}[FAILED]${NC}"
success=false
fi
echo
echo "Running with parameter \"pr\" (testing if output is sorted and each char is present just once)"
echo "Expected output: \"Enable: AC\""
OUTPUT="$(./proj1 pr < cities.txt)"
echo -n "Your output: "
echo "\"$OUTPUT\""
if [ "$OUTPUT" == "Enable: AC" ]; then
echo -e "${GREEN}[OK]${NC}"
else
echo -e "${RED}[FAILED]${NC}"
success=false
fi
echo
echo "Running with parameter \"PR\" (testing case insensivity)"
echo "Expected output: \"Enable: AC\""
OUTPUT="$(./proj1 PR < cities.txt)"
echo -n "Your output: "
echo "\"$OUTPUT\""
if [ "$OUTPUT" == "Enable: AC" ]; then
echo -e "${GREEN}[OK]${NC}"
else
echo -e "${RED}[FAILED]${NC}"
success=false
fi
echo
echo "Running with parameter \"l\" (testing case insencivity)"
echo "Expected output: \"Enable: IO\""
OUTPUT="$(./proj1 l < cities.txt)"
echo -n "Your output: "
echo "\"$OUTPUT\""
if [ "$OUTPUT" == "Enable: IO" ]; then
echo -e "${GREEN}[OK]${NC}"
else
echo -e "${RED}[FAILED]${NC}"
success=false
fi
echo
# this test may be wrong. Output should be all caps (OLOMOUC).
echo "Running with parameter \"o\" (testing single appearance of first letter)"
echo "Expected output: \"Found: OLOMOUC\""
OUTPUT="$(./proj1 o < cities.txt)"
echo -n "Your output: "
echo "\"$OUTPUT\""
if [ "$OUTPUT" == "Found: OLOMOUC" ]; then
echo -e "${GREEN}[OK]${NC}"
else
echo -e "${RED}[FAILED]${NC}"
success=false
fi
echo
echo "Running with parameter \"bran\" (testing single appearance of prefix)"
echo "Expected output: \"Found: BRANKOVICE\""
OUTPUT="$(./proj1 bran < cities.txt)"
echo -n "Your output: "
echo "\"$OUTPUT\""
if [ "$OUTPUT" == "Found: BRANKOVICE" ]; then
echo -e "${GREEN}[OK]${NC}"
else
echo -e "${RED}[FAILED]${NC}"
success=false
fi
echo
echo "Running with parameter \"f\" (testing no existence of first letter)"
echo "Expected output: \"Not found\""
OUTPUT="$(./proj1 f < cities.txt)"
echo -n "Your output: "
echo "\"$OUTPUT\""
if [ "$OUTPUT" == "Not found" ]; then
echo -e "${GREEN}[OK]${NC}"
else
echo -e "${RED}[FAILED]${NC}"
success=false
fi
echo
echo "Running with parameter \"zilina\" (testing space in city name)"
echo "Expected output: \"Enable: \""
OUTPUT="$(./proj1 'zilina' < cities.txt)"
echo -n "Your output: "
echo "\"$OUTPUT\""
if [ "$OUTPUT" == "Enable: " ]; then
echo -e "${GREEN}[OK]${NC}"
else
echo -e "${RED}[FAILED]${NC}"
success=false
fi
echo
echo "Running with parameter \"zilina \" (testing space in city name)"
echo "Expected output: \"Enable: J\""
OUTPUT="$(./proj1 'zilina ' < cities.txt)"
echo -n "Your output: "
echo "\"$OUTPUT\""
if [ "$OUTPUT" == "Enable: J" ]; then
echo -e "${GREEN}[OK]${NC}"
else
echo -e "${RED}[FAILED]${NC}"
success=false
fi
echo
echo "Running with parameter \"zilina j\" (testing space in city name)"
echo "Expected output: \"Enable: E\""
OUTPUT="$(./proj1 'zilina j' < cities.txt)"
echo -n "Your output: "
echo "\"$OUTPUT\""
if [ "$OUTPUT" == "Enable: E" ]; then
echo -e "${GREEN}[OK]${NC}"
else
echo -e "${RED}[FAILED]${NC}"
success=false
fi
echo
echo "Running with parameter \"zilina je\" (testing space in city name)"
echo "Expected output: \"Enable: \""
OUTPUT="$(./proj1 'zilina je' < cities.txt)"
echo -n "Your output: "
echo "\"$OUTPUT\""
if [ "$OUTPUT" == "Enable: " ]; then
echo -e "${GREEN}[OK]${NC}"
else
echo -e "${RED}[FAILED]${NC}"
success=false
fi
echo
echo "Running with parameter \"zilina je \" (testing space in city name)"
echo "Expected output: \"Enable: HK\""
OUTPUT="$(./proj1 'zilina je ' < cities.txt)"
echo -n "Your output: "
echo "\"$OUTPUT\""
if [ "$OUTPUT" == "Enable: HK" ]; then
echo -e "${GREEN}[OK]${NC}"
else
echo -e "${RED}[FAILED]${NC}"
success=false
fi
echo
echo "Not Running with parameter \"as\" (testing city name is prefix of another city name, idk what should happen)"
echo "Expected output: not defined"
#OUTPUT="$(./proj1 as < cities.txt)"
#if [ "$OUTPUT" == "Not found" ]; then
# echo -e "${GREEN}[OK]${NC}"
#else
# echo -e "${RED}[FAILED]${NC}"
#fi
echo
echo "XmestoSpresne100znakyVnazvuabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789abcdefgijklm" >> cities.txt
echo "Running without parameter (testing city name len == 100)"
echo "Expected output: \"Enable: ABLOPTXZ\""
OUTPUT="$(./proj1 < cities.txt)"
echo -n "Your output: "
echo "\"$OUTPUT\""
if [ "$OUTPUT" == "Enable: ABLOPTXZ" ]; then
echo -e "${GREEN}[OK]${NC}"
else
echo -e "${RED}[FAILED]${NC}"
success=false
fi
echo
echo "YmestoSviceNEZ100znakyVnazvuabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789abcdefgijklm" >> cities.txt
echo "Running without parameter (testing city name len > 100)"
echo "Expected output: Enable: ABLOPTXYZ"
OUTPUT="$(./proj1 < cities.txt)"
echo -n "Your output: "
echo "\"$OUTPUT\""
if [ "$OUTPUT" == "Enable: ABLOPTXYZ" ]; then
echo -e "${GREEN}[OK]${NC}"
else
echo -e "${RED}[FAILED]${NC}"
success=false
fi
echo
# could anybody doublecheck this?
echo "Running without parameter (testing city name len > 100, cutting name)"
echo "Expected output: Found: YMESTOSVICENEZ100ZNAKYVNAZVUABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ123456789ABCDEFGIJKL"
OUTPUT="$(./proj1 Y < cities.txt)"
echo -n "Your output: "
echo "\"$OUTPUT\""
if [ "$OUTPUT" == "Found: YMESTOSVICENEZ100ZNAKYVNAZVUABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ123456789ABCDEFGIJKL" ]; then
echo -e "${GREEN}[OK]${NC}"
else
echo -e "${RED}[FAILED]${NC}"
success=false
fi
echo
if [ "$success" = true ] ; then
echo -e "${GREEN}All tests [OK]${NC}"
echo "Good job"
else
echo -e "${RED}Some test [FAILED]${NC}"
echo "Fix your code!"
fi