Skip to content

Commit 218cece

Browse files
committed
added test-script for expr
1 parent 0112928 commit 218cece

File tree

1 file changed

+87
-0
lines changed

1 file changed

+87
-0
lines changed
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
#!/bin/bash
2+
3+
# check if file is present and executable
4+
if [ ! -f expr ]; then
5+
echo "File 'expr' found!"
6+
exit 1
7+
fi
8+
9+
if [ ! -x expr ]; then
10+
echo "File 'expr' not executable!"
11+
exit 1
12+
fi
13+
14+
echo "=== Testing expr calculator ==="
15+
16+
# Test 1: Simple addition
17+
T=1
18+
result=$(./expr 2 3 +)
19+
expected="result: 5.000"
20+
if [[ "$result" == "$expected" ]]; then
21+
echo "Test $T PASS: 2 + 3 = 5"
22+
else
23+
echo "Test $T FAIL: Expected '$expected', got '$result'"
24+
fi
25+
26+
# Test 2: Commutativity of addition
27+
T=2
28+
result=$(./expr 3 2 +)
29+
expected="result: 5.000"
30+
if [[ "$result" == "$expected" ]]; then
31+
echo "Test $T PASS: 3 + 2 = 5"
32+
else
33+
echo "Test $T FAIL: Expected '$expected', got '$result'"
34+
fi
35+
36+
# Test 3: Subtraction
37+
T=3
38+
result=$(./expr 10 3 -)
39+
expected="result: 7.000"
40+
if [[ "$result" == "$expected" ]]; then
41+
echo "Test $T PASS: 10 - 3 = 7"
42+
else
43+
echo "Test $T FAIL: Expected '$expected', got '$result'"
44+
fi
45+
46+
# Test 4: Complex expression
47+
T=4
48+
# ------------------------------------
49+
# Expected:
50+
# 5 --> [5]
51+
# 1 --> [5, 1]
52+
# 2 --> [5, 1, 2]
53+
# + --> (1 + 2 = 3) --> [5, 3]
54+
# 4 --> [5, 3, 4]
55+
# * --> (3 * 4 = 12) --> [5, 12]
56+
# + --> (5 + 12 = 17) --> [17]
57+
# 3 --> [17, 3]
58+
# - --> (17 - 3 = 14) --> [14]
59+
# ------------------------------------
60+
result=$(./expr 5 1 2 + 4 \* + 3 -)
61+
expected="result: 14.000"
62+
if [[ "$result" == "$expected" ]]; then
63+
echo "Test $T PASS: Complex RPN expression"
64+
else
65+
echo "Test $T FAIL: Expected '$expected', got '$result'"
66+
fi
67+
68+
# Test 5: Division by zero
69+
T=5
70+
result=$(./expr 5 0 / 2>&1)
71+
if [[ "$result" == *"division by zero"* ]]; then
72+
echo "Test $T PASS: Division by zero detected"
73+
else
74+
echo "Test $T FAIL: Should detect division by zero"
75+
fi
76+
77+
# Test 6: Missing operator
78+
T=6
79+
result=$(./expr 5 1)
80+
expected="Error: Operator is missing!"
81+
if [[ "$result" == "$expected" ]]; then
82+
echo "Test $T PASS: Missing operator"
83+
else
84+
echo "Test $T FAIL: Expected '$expected', got '$result'"
85+
fi
86+
87+
echo "=== Tests Complete ==="

0 commit comments

Comments
 (0)