Skip to content

Instantly share code, notes, and snippets.

@0xJchen
Created September 17, 2023 05:04
Show Gist options
  • Save 0xJchen/9693396ef7b8139014825478b3e8ba6e to your computer and use it in GitHub Desktop.
Save 0xJchen/9693396ef7b8139014825478b3e8ba6e to your computer and use it in GitHub Desktop.
AVL-Tree Testcase Generator
#!/bin/bash
# Function to generate a single test file
generate_test_file() {
local filename=$1
local num_commands=$2
> "$filename"
# Generate random 'i' and 'd' commands with random numbers
for (( j=0; j<$num_commands; j++ )); do
cmd_type=$(($RANDOM % 2))
num=$(($RANDOM % 1000))
if [ $cmd_type -eq 0 ]; then
echo -n "i$num " >> "$filename"
else
echo -n "d$num " >> "$filename"
fi
done
for (( j=0; j<$num_commands; j++ )); do
cmd_type=$(($RANDOM % 2))
num=$(($RANDOM % 100))
echo -n "d$num " >> "$filename"
done
for (( j=0; j<$num_commands; j++ )); do
cmd_type=$(($RANDOM % 2))
num=$(($RANDOM % 100))
echo -n "i$num " >> "$filename"
done
# Add a 'p' at the end of each file
echo "p" >> "$filename"
}
# Generate N test files
for i in {1..5}; do
echo "Generating test file $i..."
generate_test_file "testfile_$i.avl" 5000
done
# Run tests for each file and collect coverage data
for i in {1..5}; do
echo "Running test with test file $i..."
coverage run -a avl.py "testfile_$i.avl"
done
# Generate the coverage report
echo "Generating coverage report..."
coverage report
# Generate an HTML report, if desired
coverage html
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment