#!/bin/sh
# Test matho-primes by comparing output with the BSD Games primes utility.
# Only run this if matho-primes and the bsdgames package are installed.
# The comparison is performed in parallel, to save time.
# The whole test takes 30 seconds on a fast, dual-core computer.
#
# Checks the first 50,000,000 primes for gaps or errors.
# It simply compares their output up to 1,000,000,000.
#
# Usage: testprimes [ primes_utility_name ]

echo Testing matho-primes by comparing output with bsdgames primes...
if ! matho-primes 0 0
then
	echo Mathomatic Prime Number Tools not installed.
	echo Cannot find matho-primes
	exit 1
fi

PRIMES=${1-primes}
if ! $PRIMES 0 0
then
	PRIMES=/usr/games/primes
	if $PRIMES 0 0
	then
		echo Using $PRIMES
	else
		echo bsdgames package not installed.
		echo Cannot find primes utility.
		exit 1
	fi
fi

TESTOUT1=`mktemp /tmp/test.XXXXXXXXXX` || exit 1
TESTOUT2=`mktemp /tmp/test.XXXXXXXXXX` || exit 1
echo Starting and timing matho-primes
time -p matho-primes 1 1000000000 >$TESTOUT1 &
echo Starting $PRIMES
$PRIMES 1 1000000000 >$TESTOUT2 && echo -n Word count: && wc $TESTOUT2 &
wait
echo Output files to compare,
echo matho-primes output:
ls -l $TESTOUT1
echo primes output:
ls -l $TESTOUT2
echo Comparing:
diff -uq --strip-trailing-cr $TESTOUT1 $TESTOUT2 && echo Files are identical. && echo "Test passed 100% correctly." && rm $TESTOUT1 $TESTOUT2 && exit 0
echo
echo Test failed.
rm -f $TESTOUT1 $TESTOUT2
exit 1
