#! /bin/sh -e

if test "$1" = ""; then
    echo "check-table, a script for testing libavl table routines."
    echo "Usage: $0 TEST-PGM"
    echo "TEST-PGM is the name of the libavl table test program"
    echo "  to run, such as \`bst-test'."
    exit 1
fi

test=$1

echo -n 'Testing with trees of various sizes'
for d in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 20 24 31 32 42 43 46 \
	47 48 49 50 63 64 65 120 126 127 128 129 175 257; do
	echo -n .
	$test --quiet --size=$d --seed=0
done
echo " done"

echo -n 'Testing different insertion and deletion orders'
for i in random ascending descending balanced zigzag asc-shifted; do
    for d in random same reverse; do
	$test --quiet --repeat=64 --size=64 --seed=0 --insert=$i --delete=$d
        echo -n .
    done
done
echo " done"

echo -n 'Testing behavior on allocation failure'
common="--quiet --seed=0 --alloc=fail-0 --incr=1 --repeat=155"
echo -n .; $test $common
echo -n .; $test $common --insert=ascending --delete=same
echo -n .; $test $common --insert=ascending --delete=reverse
echo -n .; $test $common --size=64
echo -n .; $test $common --size=64 --insert=ascending --delete=same
echo -n .; $test $common --size=64 --insert=ascending --delete=reverse
echo " done"

echo -n 'Testing overflow behavior'
for d in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 20 24 31 32 42 43 46 \
	47 48 49 50 63 64 65 120 126 127 128; do
	echo -n .
	$test --quiet --size=$d --seed=0 --test=overflow --insert=ascending
	$test --quiet --size=$d --seed=0 --test=overflow --insert=descending
	$test --quiet --size=$d --seed=0 --test=overflow --insert=zigzag
	$test --quiet --size=$d --seed=0 --test=overflow --insert=asc-shifted
done
echo " done"
