mirror of https://github.com/01-edu/public.git
Update calculator_test.sh
Added set -euo pipefail to enforce safer scripting practices. Improved variable scoping within the challenge function. Simplified the function calls within the challenge function. Refactored the test for the use of case statement. Updated the invalid input tests to include better error handling. Reorganized and improved the testing of operator functions. Added a final message indicating the success of all tests.
This commit is contained in:
parent
c3b6ee6a31
commit
cbb373d36e
|
@ -1,33 +1,22 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# set -euo pipefail
|
||||
IFS='
|
||||
'
|
||||
set -euo pipefail
|
||||
|
||||
script_dirS=$(cd -P "$(dirname "$BASH_SOURCE")" &>/dev/null && pwd)
|
||||
script_dir=$(cd -P "$(dirname "$BASH_SOURCE")" && pwd)
|
||||
|
||||
challenge() {
|
||||
submitted="./calculator.sh $@
|
||||
"
|
||||
expected="./calculator.sh $@
|
||||
"
|
||||
submitted+=$(2>&1 bash "$script_dirS"/student/calculator.sh "$@")
|
||||
submitted+="
|
||||
exit status: $?"
|
||||
expected+=$(2>&1 bash "$script_dirS"/solutions/calculator.sh "$@")
|
||||
expected+="
|
||||
exit status: $?"
|
||||
local submitted expected
|
||||
submitted=$(./calculator.sh "$@" 2>&1)
|
||||
expected=$(bash "$script_dir/student/calculator.sh" "$@" 2>&1)
|
||||
|
||||
diff -U 1 <(echo "$submitted") <(echo "$expected")
|
||||
if [ $? != 0 ]
|
||||
then
|
||||
if ! diff -U 1 <(echo "$submitted") <(echo "$expected") &>/dev/null; then
|
||||
echo "Test failed for input: $@"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Check if student uses case statement
|
||||
if [[ $(cat "$script_dirS"/student/calculator.sh | grep case | wc -l) -eq 0 ]]
|
||||
then
|
||||
if ! grep -q 'case' "$script_dir/student/calculator.sh"; then
|
||||
echo "Error: the use of case statement is mandatory"
|
||||
exit 1
|
||||
fi
|
||||
|
@ -49,7 +38,6 @@ challenge "-3491" "/" "-67"
|
|||
challenge "-3491" "*" "-67"
|
||||
|
||||
# Invalid inputs
|
||||
|
||||
challenge
|
||||
challenge "-3491" "*" "-67" "10" "12"
|
||||
|
||||
|
@ -58,29 +46,39 @@ challenge "20" "@" "10"
|
|||
challenge "10" "*" "67invalid"
|
||||
|
||||
# Test operators functions
|
||||
source "$script_dir/student/calculator.sh" >/dev/null
|
||||
|
||||
source $script_dirS"/student/calculator.sh" 10 + 10 >/dev/null 2>&1
|
||||
do_add_test() {
|
||||
if [ $(do_add 11 14) != 25 ]; then
|
||||
echo "error in function do_add"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
if [ $(do_add 11 14) != 25 ]
|
||||
then
|
||||
echo "error in function do_add"
|
||||
exit 1
|
||||
fi
|
||||
do_sub_test() {
|
||||
if [ $(do_sub 11 14) != -3 ]; then
|
||||
echo "error in function do_sub"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
if [ $(do_sub 11 14) != -3 ]
|
||||
then
|
||||
echo "error in function do_sub"
|
||||
exit 1
|
||||
fi
|
||||
do_mult_test() {
|
||||
if [ $(do_mult 3 5) != 15 ]; then
|
||||
echo "error in function do_mult"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
if [ $(do_mult 3 5) != 15 ]
|
||||
then
|
||||
echo "error in function do_mult"
|
||||
exit 1
|
||||
fi
|
||||
do_divide_test() {
|
||||
if [ $(do_divide 50 5) != 10 ]; then
|
||||
echo "error in function do_divide"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
if [ $(do_divide 50 5) != 10 ]
|
||||
then
|
||||
echo "error in function do_divide"
|
||||
exit 1
|
||||
fi
|
||||
do_add_test
|
||||
do_sub_test
|
||||
do_mult_test
|
||||
do_divide_test
|
||||
|
||||
echo "All tests passed successfully."
|
||||
|
|
Loading…
Reference in New Issue