-
Notifications
You must be signed in to change notification settings - Fork 0
/
test.sh
123 lines (104 loc) · 3.08 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
#!/bin/bash
TEST_COUNT=`echo tests/*.x2017 | wc -w`
TESTS_DONE=0
PASSED=0
echo "###########################"
echo "##### Assembler Tests #####"
echo "###########################"
for FILE in tests/*.x2017
do
TEST_NAME=`basename -s .x2017 $FILE`
((TESTS_DONE++))
echo '-------------------------------------'
echo "##### Test ($TESTS_DONE/$TEST_COUNT): $TEST_NAME #####"
./objdump_x2017 tests/$TEST_NAME.x2017 2>&1 | diff - tests/$TEST_NAME.asm
if [[ $? == 0 ]]
then
echo $'\nTest passed!'
((PASSED++))
else
echo $'\nTest Failed.'
fi
done
echo '-------------------------------------'
if [[ $PASSED == $TESTS_DONE ]]
then
echo "⭐ All $TESTS_DONE Assembly tests passed successfully! ⭐"
else
echo "☹ ($PASSED/$TESTS_DONE) Assembly tests passed successfully. ☹"
fi
echo ""
TEST_COUNT=`echo tests/*.x2017 | wc -w`
TESTS_DONE=0
PASSED=0
echo "###########################"
echo "######### VM Tests ########"
echo "###########################"
for FILE in tests/*.x2017
do
TEST_NAME=`basename -s .x2017 $FILE`
((TESTS_DONE++))
echo '-------------------------------------'
echo "##### Test ($TESTS_DONE/$TEST_COUNT): $TEST_NAME #####"
./vm_x2017 tests/$TEST_NAME.x2017 2>&1 | diff - tests/$TEST_NAME.out
if [[ $? == 0 ]]
then
echo $'\nTest passed!'
((PASSED++))
else
echo $'\nTest Failed.'
fi
done
echo '-------------------------------------'
if [[ $PASSED == $TESTS_DONE ]]
then
echo "⭐ All $TESTS_DONE VM tests passed successfully! ⭐"
else
echo "☹ ($PASSED/$TESTS_DONE) VM tests passed successfully. ☹"
fi
echo ""
TEST_COUNT=`echo tests/errors/*.args | wc -w`
TESTS_DONE=0
PASSED=0
echo "###########################"
echo "####### Error Tests #######"
echo "###########################"
for FILE in tests/errors/*.args
do
TEST_NAME=`basename -s .args $FILE`
((TESTS_DONE++))
echo '-------------------------------------'
echo "##### Test ($TESTS_DONE/$TEST_COUNT): $TEST_NAME #####"
if [[ -f $TEST_NAME.asm ]]
then
xargs -a tests/errors/$TEST_NAME.args ./objdump_x2017 | \
diff - tests/errors/$TEST_NAME.asm
if [[ $? != 0 ]]
then
echo $'\nTest Failed (Assembly ✖)'
continue
fi
fi
xargs -a tests/errors/$TEST_NAME.args ./vm_x2017 >/dev/null 2>&1
if [[ $? == 123 ]]
then
xargs -a tests/errors/$TEST_NAME.args ./vm_x2017 2>&1 | \
diff - tests/errors/$TEST_NAME.out
if [[ $? == 0 ]]
then
echo $'\nTest passed (Return Code ✓ Output ✓)!'
((PASSED++))
else
echo $'\nTest Failed (Return Code ✓ Output ✖)'
fi
else
echo $'\nTest Failed (Return Code ✖ Output ✖)'
fi
done
echo '-------------------------------------'
if [[ $PASSED == $TESTS_DONE ]]
then
echo "⭐ All $TESTS_DONE Error tests passed successfully! ⭐"
else
echo "☹ ($PASSED/$TESTS_DONE) Error tests passed successfully. ☹"
fi