#! /bin/sh
# This script tests: pgmtoppm
# Also requires: pamtopnm pnminvert pamseq pgmramp

tmpdir=${tmpdir:-/tmp}

echo "Test 1.  Should print 1767073524 779 twice, then 1676700883 779"

test_pgm=${tmpdir}/test.pgm
palette_pam=${tmpdir}/palette.pam
palette_ppm=${tmpdir}/palette.ppm

pgmramp -maxval=5 -lr 256 1 > ${test_pgm}

pgmtoppm green ${test_pgm} | cksum
pgmtoppm black-green ${test_pgm} | cksum
pgmtoppm yellow-blue ${test_pgm} | cksum


echo "Test 2.  Should print 718580145 779 twice"
pamseq 3 5 -tupletype=RGB | tee ${palette_pam} | pamtopnm > ${palette_ppm}
pgmtoppm -map=${palette_pam} ${test_pgm} | cksum
pgmtoppm -map=${palette_ppm} ${test_pgm} | cksum

rm ${palette_pam}

echo "Test 3.  Should print 718580145 779 twice"

pgmtoppm white-black ${test_pgm} | pnminvert | cksum
pnminvert ${test_pgm} | pgmtoppm white-black | cksum

rm ${test_pgm}

echo "Test 4.  Should print 829921912 685 seven times"

pgmtoppm white testgrid.pbm | cksum
pgmtoppm black-white testgrid.pbm | cksum
pgmtoppm rgb:ff/ff/ff testgrid.pbm | cksum
pgmtoppm -white=rgb-255:255/255/255 testgrid.pbm | cksum
pgmtoppm rgb:00/00/00-rgb:ff/ff/ff testgrid.pbm | cksum
pgmtoppm rgbi:0/0/0-rgbi:1/1/1 testgrid.pbm | cksum
pgmtoppm -black=rgb-255:0/0/0 -white=rgb-255:255/255/255 testgrid.pbm | cksum

echo "Test 5.  Should print 934505096 685 four times"

pgmtoppm white-black testgrid.pbm | cksum
pgmtoppm white testgrid.pbm | pnminvert| cksum
pnminvert testgrid.pbm | pgmtoppm black-white | cksum
pnminvert testgrid.pbm | pgmtoppm white | cksum

echo "Test 6. Should print 3083028153 685 three times"

pgmtoppm black testgrid.pbm | cksum
pgmtoppm black-black testgrid.pbm | cksum
pgmtoppm rgbi:0/0/0-rgbi:0/0/0 testgrid.pbm | cksum

echo "Test 7 Invalid"

tmpdir=${tmpdir:-/tmp}
test_out=${tmpdir}/test_out

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

pgmtoppm white testimg.ppm > \
  ${test_out} || \
  printf "Expected failure 1 "
  test -s ${test_out} && echo "unexpected output" || echo "(no output)"
  rm -f ${test_out}

pgmtoppm -map=/dev/null testgrid.pbm > \
  ${test_out} || \
  printf "Expected failure 2 "
  test -s ${test_out} && echo "unexpected output" || echo "(no output)"
  rm -f ${test_out}

pgmtoppm black white testgrid.pbm > \
  ${test_out} || \
  printf "Expected failure 3 "
  test -s ${test_out} && echo "unexpected output" || echo "(no output)"
  rm -f ${test_out}

pgmtoppm hwite testgrid.pbm > \
  ${test_out} || \
  printf "Expected failure 4 "
  test -s ${test_out} && echo "unexpected output" || echo "(no output)"
  rm -f ${test_out}

pgmtoppm off-color testgrid.pbm > \
  ${test_out} || \
  printf "Expected failure 5 "
  test -s ${test_out} && echo "unexpected output" || echo "(no output)"
  rm -f ${test_out}

pgmtoppm rgb-255:7/7/7 testgrid.pbm > \
  ${test_out} || \
  printf "Expected failure 6 "
  test -s ${test_out} && echo "unexpected output" || echo "(no output)"
  rm -f ${test_out}

pgmtoppm -black=black -white=white white testgrid.pbm > \
  ${test_out} || \
  printf "Expected failure 7 "
  test -s ${test_out} && echo "unexpected output" || echo "(no output)"
  rm -f ${test_out}

pgmtoppm -black=rgb:0/0/0 -map=${palette_ppm} testgrid.pbm > \
  ${test_out} || \
  printf "Expected failure 8 "
  test -s ${test_out} && echo "unexpected output" || echo "(no output)"
  rm -f ${test_out}

pgmtoppm -white=rgb:ff/ff/ff -map=${palette_ppm} testgrid.pbm > \
  ${test_out} || \
  printf "Expected failure 9 "
  test -s ${test_out} && echo "unexpected output" || echo "(no output)"
  rm -f ${test_out}

pgmtoppm rgb:ff/ff/ff -map=${palette_ppm} testgrid.pbm > \
  ${test_out} || \
  printf "Expected failure 10 "
  test -s ${test_out} && echo "unexpected output" || echo "(no output)"
  rm -f ${test_out}

pgmtoppm rgb:00/00/00-rgb:ff/ff/ff -map=${palette_ppm} testgrid.pbm > \
  ${test_out} || \
  printf "Expected failure 11 "
  test -s ${test_out} && echo "unexpected output" || echo "(no output)"
  rm -f ${test_out}

#pgmtoppm rgb-255:7/7/7 testgrid.pbm > \
#  ${test_out} || \
#  printf "Expected failure 12 "
#  test -s ${test_out} && echo "unexpected output" || echo "(no output)"
#  rm -f ${test_out}

rm -f ${palette_ppm}
