#!/bin/sh

# To run the tests, run "make check" from the parent directory.
# To regenerate the outputs, run "./Run ../trueprint generate"

passed=0
TRUEPRINT=$1
shift

TP_OPTS="--N"
TP_PRINT_CMD=cat

export TP_PRINT_CMD TP_OPTS

test=1
echo -n "$test Single C source file... "
args="test1.c"
if [ "$1" = "generate" ] ; then
	$TRUEPRINT $args > test$test.out
else
	$TRUEPRINT $args | diff - test$test.out > test$test.dif
	if [ $? -ne "0" ] ; then
		echo "failed"
	else
		echo "passed" ; rm test$test.dif
		passed=`expr $passed + 1`
	fi
fi

test=2
echo -n "$test Two C source files... "
args="test1.c test2.c"
if [ "$1" = "generate" ] ; then
	$TRUEPRINT $args > test$test.out
else
	$TRUEPRINT $args | diff - test$test.out > test$test.dif
	if [ $? -ne "0" ] ; then
		echo "failed"
	else
		echo "passed" ; rm test$test.dif
		passed=`expr $passed + 1`
	fi
fi

test=3
echo -n "$test Text file followed by C source file... "
args="test3 test1.c"
if [ "$1" = "generate" ] ; then
	$TRUEPRINT $args > test$test.out
else
	$TRUEPRINT $args | diff - test$test.out > test$test.dif
	if [ $? -ne "0" ] ; then
		echo "failed"
	else
		echo "passed" ; rm test$test.dif
		passed=`expr $passed + 1`
	fi
fi

test=4
echo -n "$test Diff of two files... "
args="-O test4.old test4.new"
if [ "$1" = "generate" ] ; then
	$TRUEPRINT $args > test$test.out
else
	$TRUEPRINT $args | diff - test$test.out > test$test.dif
	if [ $? -ne "0" ] ; then
		echo "failed"
	else
		echo "passed" ; rm test$test.dif
		passed=`expr $passed + 1`
	fi
fi

test=5
echo -n "$test Another diff of two files... "
args="-O test4.new test4.old"
if [ "$1" = "generate" ] ; then
	$TRUEPRINT $args > test$test.out
else
	$TRUEPRINT $args | diff - test$test.out > test$test.dif
	if [ $? -ne "0" ] ; then
		echo "failed"
	else
		echo "passed" ; rm test$test.dif
		passed=`expr $passed + 1`
	fi
fi

test=6
echo -n "$test Diffs using a prefix... "
args="-O OLD test6.c"
if [ "$1" = "generate" ] ; then
	$TRUEPRINT $args > test$test.out
else
	$TRUEPRINT $args | diff - test$test.out > test$test.dif
	if [ $? -ne "0" ] ; then
		echo "failed"
	else
		echo "passed" ; rm test$test.dif
		passed=`expr $passed + 1`
	fi
fi

test=7
echo -n "$test Very long source line... "
args="test7"
if [ "$1" = "generate" ] ; then
	$TRUEPRINT $args > test$test.out
else
	$TRUEPRINT $args | diff - test$test.out > test$test.dif
	if [ $? -ne "0" ] ; then
		echo "failed"
	else
		echo "passed" ; rm test$test.dif
		passed=`expr $passed + 1`
	fi
fi

test=8
echo -n "$test Set interline gap & pointsize & page length -g -p -l... "
args="-g7 -p9 -l45 test1.c test3"
if [ "$1" = "generate" ] ; then
	$TRUEPRINT $args > test$test.out
else
	$TRUEPRINT $args | diff - test$test.out > test$test.dif
	if [ $? -ne "0" ] ; then
		echo "failed"
	else
		echo "passed" ; rm test$test.dif
		passed=`expr $passed + 1`
	fi
fi

test=9
echo -n "$test Change date & time in headers -X... "
args="-X Header-test test4.new test4.old"
if [ "$1" = "generate" ] ; then
	$TRUEPRINT $args > test$test.out
else
	$TRUEPRINT $args | diff - test$test.out > test$test.dif
	if [ $? -ne "0" ] ; then
		echo "failed"
	else
		echo "passed" ; rm test$test.dif
		passed=`expr $passed + 1`
	fi
fi

test=10
echo -n "$test Use login name in headers -X %l... "
args="-X %l test6.c test1.c"
if [ "$1" = "generate" ] ; then
	$TRUEPRINT $args > test$test.out
else
	$TRUEPRINT $args | diff - test$test.out > test$test.dif
	if [ $? -ne "0" ] ; then
		echo "failed"
	else
		echo "passed" ; rm test$test.dif
		passed=`expr $passed + 1`
	fi
fi

test=11
echo -n "$test Print message over page -m... "
args="-m Overprint-test test7"
if [ "$1" = "generate" ] ; then
	$TRUEPRINT $args > test$test.out
else
	$TRUEPRINT $args | diff - test$test.out > test$test.dif
	if [ $? -ne "0" ] ; then
		echo "failed"
	else
		echo "passed" ; rm test$test.dif
		passed=`expr $passed + 1`
	fi
fi

test=12
echo -n "$test Use current filename for message string -m %n... "
args="-m %n test4.new test4.old"
if [ "$1" = "generate" ] ; then
	$TRUEPRINT $args > test$test.out
else
	$TRUEPRINT $args | diff - test$test.out > test$test.dif
	if [ $? -ne "0" ] ; then
		echo "failed"
	else
		echo "passed" ; rm test$test.dif
		passed=`expr $passed + 1`
	fi
fi

test=13
echo -n "$test Use landscape mode -ol... "
args="-ol test1.c test7"
if [ "$1" = "generate" ] ; then
	$TRUEPRINT $args > test$test.out
else
	$TRUEPRINT $args | diff - test$test.out > test$test.dif
	if [ $? -ne "0" ] ; then
		echo "failed"
	else
		echo "passed" ; rm test$test.dif
		passed=`expr $passed + 1`
	fi
fi

test=14
echo -n "$test Print 2-on-1 -2... "
args="-2 test1.c test7 test6.c"
if [ "$1" = "generate" ] ; then
	$TRUEPRINT $args > test$test.out
else
	$TRUEPRINT $args | diff - test$test.out > test$test.dif
	if [ $? -ne "0" ] ; then
		echo "failed"
	else
		echo "passed" ; rm test$test.dif
		passed=`expr $passed + 1`
	fi
fi

test=15
echo -n "$test Print 4-on-1 -4... "
args="-4 test1.c test7 test6.c"
if [ "$1" = "generate" ] ; then
	$TRUEPRINT $args > test$test.out
else
	$TRUEPRINT $args | diff - test$test.out > test$test.dif
	if [ $? -ne "0" ] ; then
		echo "failed"
	else
		echo "passed" ; rm test$test.dif
		passed=`expr $passed + 1`
	fi
fi

test=16
echo -n "$test Long lines & page width -w... "
args="-w 40 test7"
if [ "$1" = "generate" ] ; then
	$TRUEPRINT $args > test$test.out
else
	$TRUEPRINT $args | diff - test$test.out > test$test.dif
	if [ $? -ne "0" ] ; then
		echo "failed"
	else
		echo "passed" ; rm test$test.dif
		passed=`expr $passed + 1`
	fi
fi

test=17
echo -n "$test Turn off intelligent linewrap -Wn... "
args="-W -w 40 test7"
if [ "$1" = "generate" ] ; then
	$TRUEPRINT $args > test$test.out
else
	$TRUEPRINT $args | diff - test$test.out > test$test.dif
	if [ $? -ne "0" ] ; then
		echo "failed"
	else
		echo "passed" ; rm test$test.dif
		passed=`expr $passed + 1`
	fi
fi

test=18
echo -n "$test Exclude braces depth count for C, line number count -in -nn... "
args="-i -n test1.c test2.c"
if [ "$1" = "generate" ] ; then
	$TRUEPRINT $args > test$test.out
else
	$TRUEPRINT $args | diff - test$test.out > test$test.dif
	if [ $? -ne "0" ] ; then
		echo "failed"
	else
		echo "passed" ; rm test$test.dif
		passed=`expr $passed + 1`
	fi
fi

test=19
echo -n "$test Print double-sided -S2... "
args="-S2 test1.c test2.c"
if [ "$1" = "generate" ] ; then
	$TRUEPRINT $args > test$test.out
else
	$TRUEPRINT $args | diff - test$test.out > test$test.dif
	if [ $? -ne "0" ] ; then
		echo "failed"
	else
		echo "passed" ; rm test$test.dif
		passed=`expr $passed + 1`
	fi
fi

test=20
echo -n "$test Suppress everything -C -F -f -B... "
args="-C -F -f -B test1.c test2.c"
if [ "$1" = "generate" ] ; then
	$TRUEPRINT $args > test$test.out
else
	$TRUEPRINT $args | diff - test$test.out > test$test.dif
	if [ $? -ne "0" ] ; then
		echo "failed"
	else
		echo "passed" ; rm test$test.dif
		passed=`expr $passed + 1`
	fi
fi

test=21
echo -n "$test Set tabsize wierdly -T5... "
args="-T5 test21"
if [ "$1" = "generate" ] ; then
	$TRUEPRINT $args > test$test.out
else
	$TRUEPRINT $args | diff - test$test.out > test$test.dif
	if [ $? -ne "0" ] ; then
		echo "failed"
	else
		echo "passed" ; rm test$test.dif
		passed=`expr $passed + 1`
	fi
fi

test=22
echo -n "$test Set headers/footers... "
args="-x Test-%%-%m-%d-%y -y %D-%L-%H-%M -z %S-%T-%j-%w -X %a-%h-%r-%p -Y %h-%r-%p-%P -Z %f-%F-%n-%N -m Login-%l test1.c test2.c"
if [ "$1" = "generate" ] ; then
	$TRUEPRINT $args > test$test.out
else
	$TRUEPRINT $args | diff - test$test.out > test$test.dif
	if [ $? -ne "0" ] ; then
		echo "failed"
	else
		echo "passed" ; rm test$test.dif
		passed=`expr $passed + 1`
	fi
fi

test=23
echo -n "$test Indent for holepunch --I... "
args="--I -ol -2 test1.c test2.c"
if [ "$1" = "generate" ] ; then
	$TRUEPRINT $args > test$test.out
else
	$TRUEPRINT $args | diff - test$test.out > test$test.dif
	if [ $? -ne "0" ] ; then
		echo "failed"
	else
		echo "passed" ; rm test$test.dif
		passed=`expr $passed + 1`
	fi
fi

test=24
echo -n "$test Suppress headers --K... "
args="--K test1.c test2.c"
if [ "$1" = "generate" ] ; then
	$TRUEPRINT $args > test$test.out
else
	$TRUEPRINT $args | diff - test$test.out > test$test.dif
	if [ $? -ne "0" ] ; then
		echo "failed"
	else
		echo "passed" ; rm test$test.dif
		passed=`expr $passed + 1`
	fi
fi

test=25
echo -n "$test Suppress footers --k... "
args="--k -ol -2 test1.c test2.c"
if [ "$1" = "generate" ] ; then
	$TRUEPRINT $args > test$test.out
else
	$TRUEPRINT $args | diff - test$test.out > test$test.dif
	if [ $? -ne "0" ] ; then
		echo "failed"
	else
		echo "passed" ; rm test$test.dif
		passed=`expr $passed + 1`
	fi
fi

test=26
echo -n "$test Stdin for default... "
args=""
if [ "$1" = "generate" ] ; then
	$TRUEPRINT $args > test$test.out < test1.c
else
	$TRUEPRINT $args < test1.c | diff - test$test.out > test$test.dif
	if [ $? -ne "0" ] ; then
		echo "failed"
	else
		echo "passed" ; rm test$test.dif
		passed=`expr $passed + 1`
	fi
fi

test=27
echo -n "$test - for stdin... "
args="test1.c - test2.c"
if [ "$1" = "generate" ] ; then
	$TRUEPRINT $args > test$test.out < test6.c
else
	$TRUEPRINT $args < test6.c | diff - test$test.out > test$test.dif
	if [ $? -ne "0" ] ; then
		echo "failed"
	else
		echo "passed" ; rm test$test.dif
		passed=`expr $passed + 1`
	fi
fi

echo "$passed out of 27 tests passed"
echo "To complete the test, print a file using trueprint"


