Skip to content

Instantly share code, notes, and snippets.

@vityaman

vityaman/test.sh Secret

Created September 4, 2024 06:02
Show Gist options
  • Save vityaman/7b23d5a0fdee708929d3af66a5f42638 to your computer and use it in GitHub Desktop.
Save vityaman/7b23d5a0fdee708929d3af66a5f42638 to your computer and use it in GitHub Desktop.
YSDA Algorithms, Testing script by @vityaman
#!/usr/bin/env bash
set -o errexit
cd $(dirname -- $0)
cd ..
. ci/lib.sh --source-only
CONTEST=$1
PROBLEM=$2
print $BLUE "Running problem '$PROBLEM' of contest '$CONTEST'..."
SOURCE_FILE=./src/$CONTEST/$PROBLEM.cpp
TEST_PATH=./test/$CONTEST/$PROBLEM
OUT_PATH=./out
STDOUT_FILE=$OUT_PATH/output.txt
EXEC_FILE=$OUT_PATH/solution
mkdir -p $OUT_PATH &2> /dev/null
print $BLUE "Building an executable..."
SAN=
SAN="-fno-omit-frame-pointer -fsanitize=address,undefined -fno-sanitize-recover=all"
clang++ $SAN \
-Wall -Werror -Wextra -Wsign-compare \
-std=c++20 -O3 -g \
$SOURCE_FILE -o $EXEC_FILE
print $BLUE "Running tests..."
for filename in $TEST_PATH/*\.i; do
TEST_NUMBER=${filename%.*}
print $BLUE "Testing '$TEST_NUMBER'..."
INPUT_FILE=$TEST_NUMBER.i
OUTPUT_FILE=$TEST_NUMBER.o
time cat $INPUT_FILE | $EXEC_FILE > $STDOUT_FILE
# echo -e "[algo] On Input: \n$(cat $INPUT_FILE)"
# echo -e "[algo] Expected: \n$(cat $OUTPUT_FILE)"
# echo -e "[algo] Actual: \n$(cat $STDOUT_FILE)"
print $BLUE "Comparing 'expected' to 'actual' output..."
diff --color $OUTPUT_FILE $STDOUT_FILE
print $GREEN "Test '$TEST_NUMBER' is OK!"
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment