From 1519c13b20996e00388293676fa95f80a4050def Mon Sep 17 00:00:00 2001 From: Andreas Kapp Lindquist Date: Thu, 30 Oct 2025 09:49:12 +0100 Subject: test(test.sh): Made test work for unstable sorting algorithms using check.py --- test/test.sh | 75 ++++++++++++++++++++++++++++++++---------------------------- 1 file changed, 40 insertions(+), 35 deletions(-) (limited to 'test') diff --git a/test/test.sh b/test/test.sh index e8eac6d..bd7f430 100755 --- a/test/test.sh +++ b/test/test.sh @@ -1,41 +1,46 @@ #!/bin/sh DATA_DIR="data" - SRC_DIR="../src" -SORTER="$SRC_DIR/sorter -a isort" -REF="sort -s -n -k 2" # '-s' for using a stable algo - -total=0 -passed=0 -failed=0 - -for TEST_FILE in "$DATA_DIR"/*; do - ((total++)) - FILE_NAME=$(basename "$TEST_FILE") - DIFF_FILE="diff/$FILE_NAME.diff" - - echo "Testing $FILE_NAME ..." - - diff -u <($REF "$TEST_FILE") <($SORTER "$TEST_FILE") > "$DIFF_FILE" - if [ ! -s "$DIFF_FILE" ]; then - echo "Passed: $TEST_FILE" - ((passed++)) - rm -f "$DIFF_FILE" - else - echo "Failed: $TEST_FILE" - ((failed++)) - fi +SORTER="$SRC_DIR/sorter" + +ALGORITHMS="isort qsort" +summaries="" + +add_summary() { + summaries="$summaries +============================== +Test Summary for $1: +Total tests: $2 +Passed: $3 +Failed: $4 +==============================" +} + +for ALGORITHM in $ALGORITHMS; do + total=0 + passed=0 + failed=0 + + for TEST_FILE in "$DATA_DIR"/*; do + total=$((total + 1)) + FILE_NAME=$(basename "$TEST_FILE") + echo "Testing $FILE_NAME with $ALGORITHM ..." + + "$SORTER" -a "$ALGORITHM" "$TEST_FILE" > temp + OUTPUT=$(python ./check.py "$TEST_FILE" temp 2>&1) + + if [ -z "$OUTPUT" ]; then + echo "Passed: $FILE_NAME" + passed=$((passed + 1)) + else + echo "Failed: $FILE_NAME" + failed=$((failed + 1)) + fi + done + + add_summary "$ALGORITHM" "$total" "$passed" "$failed" done -# Summary overview -echo "==============================" -echo "Test Summary:" -echo "Total tests: $total" -echo "Passed: $passed" -echo "Failed: $failed" -echo "==============================" - -if [ $failed -ne 0 ]; then - echo "Diff files for failed tests are saved" -fi +rm temp +echo "$summaries" -- cgit v1.2.3-70-g09d2