#! /bin/sh
# This script tests: pnmindex
# Also requires: pamcat pamscale pbmtext pnmcolormap pnmindex
# Also requires: pnminvert pnmquant pnmremap 

echo "Test 1. Should print 3391481002 889"
pnmindex maze.pbm | cksum

echo "Test 2. Should print 1998876959 5290 twice"
pnmindex maze.pbm maze.pbm maze.pbm maze.pbm maze.pbm maze.pbm | cksum
pnmindex -noquant maze.pbm maze.pbm maze.pbm maze.pbm maze.pbm maze.pbm | cksum

echo "Test 3. Should print 3099638253 5290"
pnmindex -black maze.pbm maze.pbm maze.pbm maze.pbm maze.pbm maze.pbm | cksum

echo "Test 4. Should print 1397700642 3160"
pnmindex -size 20 -across=3 testgrid.pbm testgrid.pbm testgrid.pbm \
         testgrid.pbm testgrid.pbm testgrid.pbm | cksum

echo "Test 5. Should print 2303488589 28514"
pnmindex testimg.ppm | cksum

echo "Test 6. Should print 1706277976 100455"
pnmindex -size 50 -across=2 testimg.ppm testimg.ppm testimg.ppm \
         testimg.ppm testimg.ppm testimg.ppm | cksum

echo "Test 7. Should print 801388440 100455"
pnmindex -size 50 -across=2 -noquant testimg.ppm testimg.ppm testimg.ppm \
         testimg.ppm testimg.ppm testimg.ppm | cksum


echo "Test Invalid"

test_out=${tmpdir}/test_out
n=1

# define function
invalidCmd () { $1 > ${test_out} && printf "Unexpected success $n " || \
  printf "Expected failure $n "
  test -s ${test_out} && echo "(unexpected output)" || echo "(no output)"
  rm -f ${test_out}
  n=$(($n + 1)); }

echo 1>&2
echo "Invalid command-line arguments." 1>&2
echo "Error messages should appear below the line." 1>&2
echo "-----------------------------------------------------------" 1>&2

invalidCmd "pnmindex -size -1 testgrid.pbm"
invalidCmd "pnmindex -size  0 testgrid.pbm"
invalidCmd "pnmindex -size    testgrid.pbm"
invalidCmd "pnmindex -across -1 testgrid.pbm"
invalidCmd "pnmindex -across  0 testgrid.pbm"
invalidCmd "pnmindex -across    testgrid.pbm"
invalidCmd "pnmindex -colors -1 testgrid.pbm"
invalidCmd "pnmindex -colors  0 testgrid.pbm"
invalidCmd "pnmindex -colors    testgrid.pbm"
invalidCmd "pnmindex -quant -noquant testgrid.pbm"
invalidCmd "pnmindex -colors 100 -noquant testgrid.pbm"
invalidCmd "pnmindex"
