#! /bin/sh # This script tests: pnmcat # Also requires: pbmmake pgmramp ppmtoppm tmpdir=${tmpdir:-/tmp} check2x2_pbm=${tmpdir}/check2x2.pbm maze2lr_pbm=${tmpdir}/maze2lr.pbm maze2tb_pbm=${tmpdir}/maze2tb.pbm diag_pgm=${tmpdir}/diag.pgm diag_ppm=${tmpdir}/diag.ppm diag2lr_ppm=${tmpdir}/diag2lr.ppm diag2tb_ppm=${tmpdir}/diag2tb.ppm echo "Test 1. Should print a simple PBM image five times" # Check input from stdin and from designated input file # Similar to tests in stdin-p?m.test pbmmake -g 2 2 | tee ${check2x2_pbm} | pnmcat -lr -plain pnmcat -tb -plain ${check2x2_pbm} pnmcat -tb -plain < ${check2x2_pbm} pnmcat -lr -black -plain ${check2x2_pbm} cat ${check2x2_pbm} | pnmcat -tb -white -plain rm ${check2x2_pbm} echo "Test 2. Should print 2197356643 895 twice" pnmcat -lr -white maze.pbm maze.pbm | tee ${maze2lr_pbm} | cksum cat maze.pbm | pnmcat -lr -black maze.pbm - | cksum echo "Test 3. Should print 3313353797 954" pnmcat -tb maze.pbm maze.pbm | tee ${maze2tb_pbm} | cksum echo "Test 4. Should print 1731660895 1308 three times" pnmcat -lr maze.pbm maze.pbm maze.pbm | cksum pnmcat -lr ${maze2lr_pbm} maze.pbm | cksum cat ${maze2lr_pbm} | pnmcat -lr - maze.pbm | cksum echo "Test 5. Should print 2985957591 1426 three times" pnmcat -tb maze.pbm maze.pbm maze.pbm | cksum pnmcat -tb maze.pbm ${maze2tb_pbm} | cksum cat maze.pbm | pnmcat -tb - ${maze2tb_pbm} | cksum rm ${maze2lr_pbm} ${maze2tb_pbm} echo "Test 6. Should print a simple PGM image three times" # Use sed to scrape off space at line end for compatibility # with older versions of pnmcat pgmramp -diag 4 4 -maxval=3 | tee ${diag_pgm} | pnmcat -lr -plain |\ sed 's/ *$//' pnmcat -tb -plain ${diag_pgm} | sed 's/ *$//' cat ${diag_pgm} | pnmcat -tb -plain | sed 's/ *$//' rm ${diag_pgm} pgmramp -diag 8 8 -maxval 7 | ppmtoppm > ${diag_ppm} echo "Test 7. Should print 2097565808 394 twice" pnmcat -lr -black ${diag_ppm} ${diag_ppm} | tee ${diag2lr_ppm} | cksum cat ${diag_ppm} | pnmcat -lr -white ${diag_ppm} - | cksum echo "Test 8. Should print 3086569577 394" pnmcat -tb ${diag_ppm} ${diag_ppm} | tee ${diag2tb_ppm} | cksum echo "Test 9. Should print 4288335051 586 three times" pnmcat -lr ${diag_ppm} ${diag_ppm} ${diag_ppm} | cksum pnmcat -lr ${diag_ppm} ${diag2lr_ppm} | cksum cat ${diag2lr_ppm} | pnmcat -lr - ${diag_ppm} | cksum echo "Test 10. Should print 642720605 586 three times" pnmcat -tb ${diag_ppm} ${diag_ppm} ${diag_ppm} | cksum pnmcat -tb ${diag2tb_ppm} ${diag_ppm} | cksum cat ${diag_ppm} | pnmcat -tb ${diag2tb_ppm} - | cksum rm ${diag2lr_ppm} ${diag2tb_ppm} echo "Test 11. Should print 3622741282 1019 twice" pnmcat -tb -white testgrid.pbm ${diag_ppm} | cksum pnmcat -tb -jcenter -white testgrid.pbm ${diag_ppm} | cksum echo "Test 12. Should print 1401081637 1019" pnmcat -tb -jleft -white testgrid.pbm ${diag_ppm} | cksum echo "Test 13. Should print 2756501917 1019" pnmcat -tb -jright -white testgrid.pbm ${diag_ppm} | cksum echo "Test 14. Should print 587933655 107742 twice" pnmcat -lr -black testgrid.pbm testimg.ppm | cksum pnmcat -lr -jcenter -black testgrid.pbm testimg.ppm | cksum echo "Test 15. Should print 3948141157 107742" pnmcat -lr -jtop -black testgrid.pbm testimg.ppm | cksum echo "Test 16. Should print 3910239002 107742" pnmcat -lr -jbottom -black testgrid.pbm testimg.ppm | cksum rm ${diag_ppm} echo "Test Invalid" 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 # direction not specified pnmcat testgrid.pbm testimg.ppm > ${test_out} || \ printf "Expected failure 1" test -s ${test_out}; echo " "$? rm -f ${test_out} # both directions specified pnmcat -topbottom -leftright testgrid.pbm testimg.ppm > ${test_out} || \ printf "Expected failure 2" test -s ${test_out}; echo " "$? rm -f ${test_out} # both pad colors specified pnmcat -topbottom -white -black testgrid.pbm testimg.ppm > ${test_out} || \ printf "Expected failure 3" test -s ${test_out}; echo " "$? rm -f ${test_out} # justification parameters overspecified pnmcat -lr -jtop -jbottom testgrid.pbm testimg.ppm > ${test_out} || \ printf "Expected failure 4" test -s ${test_out}; echo " "$? rm -f ${test_out} pnmcat -lr -jtop -jcenter testgrid.pbm testimg.ppm > ${test_out} || \ printf "Expected failure 5" test -s ${test_out}; echo " "$? rm -f ${test_out} pnmcat -lr -jcenter -jbottom testgrid.pbm testimg.ppm > ${test_out} || \ printf "Expected failure 6" test -s ${test_out}; echo " "$? rm -f ${test_out} pnmcat -tb -jleft -jright testgrid.pbm testimg.ppm > ${test_out} || \ printf "Expected failure 7" test -s ${test_out}; echo " "$? rm -f ${test_out} pnmcat -tb -jleft -jcenter testgrid.pbm testimg.ppm > ${test_out} || \ printf "Expected failure 8" test -s ${test_out}; echo " "$? rm -f ${test_out} pnmcat -tb -jcenter -jright testgrid.pbm testimg.ppm > ${test_out} || \ printf "Expected failure 9" test -s ${test_out}; echo " "$? rm -f ${test_out} # justification parameter in the wrong direction pnmcat -lr -jleft testgrid.pbm testimg.ppm > ${test_out} || \ printf "Expected failure 10" test -s ${test_out}; echo " "$? rm -f ${test_out} pnmcat -lr -jright testgrid.pbm testimg.ppm > ${test_out} || \ printf "Expected failure 11" test -s ${test_out}; echo " "$? rm -f ${test_out} pnmcat -tb -jtop testgrid.pbm testimg.ppm > ${test_out} || \ printf "Expected failure 12" test -s ${test_out}; echo " "$? rm -f ${test_out} pnmcat -tb -jbottom testgrid.pbm testimg.ppm > ${test_out} || \ printf "Expected failure 13" test -s ${test_out}; echo " "$? rm -f ${test_out} # more than one input image from standard input cat testgrid.pbm | pnmcat -lr - - testimg.ppm > ${test_out} || \ printf "Expected failure 14" test -s ${test_out}; echo " "$? rm -f ${test_out}