blob: 920f09b91f96e187c40c5e271c0fdeada928180d (
plain)
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
|
#!/bin/sh
REF_OUT="ref.out"
TEST_OUT="test.out"
testrpn()
{
echo "$2" > "$REF_OUT"
echo "Evaluating '$1' in RPN notation..."
echo "$1" | ./evalexpr -rpn > "$TEST_OUT"
diff "$REF_OUT" "$TEST_OUT" && echo "Success"
}
testeval()
{
echo "$1" | bc 2> /dev/null > "$REF_OUT"
echo "Evaluating '$1' in standard notation..."
echo "$1" | ./evalexpr > "$TEST_OUT"
diff "$REF_OUT" "$TEST_OUT" && echo "Success"
}
testerror()
{
echo "Testing error code '$2'..."
echo "$1" | ./evalexpr
error="$(echo $?)"
[ "$2" -eq "$error" ] && echo "Succesful failure" || echo "Wrong error $error"
}
clean()
{
rm "$REF_OUT" "$TEST_OUT"
}
# RPN
echo "Tests for RPN:"
echo "======"
testrpn "1 1 +" 2
testrpn "5 2 2 ^ 3 + *" 35
testrpn "10 6 9 3 + 0 11 - * / * 17 + 5 +" 22
testrpn "3 4 5 * 3 + -" "-20"
testrpn "3 2 % 9 3 1 2 + * / -" 0
echo
echo "============================================="
echo
# Standard
echo "Tests for standard notation:"
echo "======"
testeval "1 + 1"
testeval " 1 + 1 +1 "
testeval "2 * 2"
testeval "5 * (2 + 4)"
testeval "5 * (2 % 4)"
testeval " 5 *(2 ^4) "
testeval " 5 *(2 ^4 "
echo
echo "============================================="
echo
# Errors
echo "Error tests:"
echo "======"
testerror "" 0
testerror "a+1" 1
testerror "1%0" 3
echo "Testing error code '4'..."
./evalexpr --toto 2> /dev/null
echo $?
# Cleanup
clean
|