#! /bin/sh
# This script tests: pamcut pbmmake
# Also requires: pamfile

echo "Test 1.  Should print 2958909756 124815"

pamcut -top 0 -left 0 -width 260 -height 160 \
  -pad testimg.ppm | cksum

echo "Test 2.  Should print 1550940962 10933"

pamcut -top 200 -left 120 -width 40 -height 40 \
  -pad testimg.ppm | cksum

echo "Test 3.  Should print 708474423 14 twice"

pamcut -top 5 -left 5 -bottom 5 -right 5 testimg.ppm | cksum
pamcut -width 1 -height 1 -bottom 5 -right 5 testimg.ppm | cksum

echo "Test 4.  Should print 659346598 80124 four times"

pamcut -croptop 10 -cropleft 10 -cropbottom 10 -cropright 10 testimg.ppm | \
  cksum
pamcut -top 10 -left 10 -bottom 138 -right 216 testimg.ppm | cksum
pamcut -top 10 -left 10 -bottom -11 -right -11 testimg.ppm | cksum
pamcut -top 10 -left 10 -width 207 -height 129 testimg.ppm | cksum

echo "Test 5. Should print 281226646 481 five times"

mazesize=$(pamfile -size maze.pbm)
width=$(echo ${mazesize} | cut -d " " -f 1)
height=$(echo ${mazesize} | cut -d " " -f 2)
 
pamcut -croptop 0 -cropleft 0 -cropbottom 0 -cropright 0 maze.pbm | \
  cksum
pamcut -top 0 -left 0 -bottom $((${height} -1)) -right $((${width} -1)) \
  maze.pbm | cksum
pamcut -top 0 -left 0 -bottom -1 -right -1 maze.pbm | cksum
pamcut -top 0 -left 0 -width ${width} -height ${height} maze.pbm | cksum
pamcut maze.pbm | cksum
 
echo "Test 6.  Should print 3412257956 129"

pbmmake -g 50 50 | pamcut 5 5 30 30 | cksum


echo "Test 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

# overspecification
pamcut -left=1 -right=1 -width=14 testgrid.pbm > ${test_out} || \
  printf "Expected failure 1 "
  test -s ${test_out} && echo "unexpected output" || echo "(no output)"
  rm -f ${test_out}

pamcut -top=1 -bottom=1 -height=16 testgrid.pbm > ${test_out} || \
  printf "Expected failure 2 "
  test -s ${test_out} && echo "unexpected output" || echo "(no output)"
  rm -f ${test_out}

pamcut -right=1 -cropright=1 testgrid.pbm > ${test_out} || \
  printf "Expected failure 3 "
  test -s ${test_out} && echo "unexpected output" || echo "(no output)"
  rm -f ${test_out}

pamcut -top=1 -croptop=1 testgrid.pbm > ${test_out} || \
  printf "Expected failure 4 "
  test -s ${test_out} && echo "unexpected output" || echo "(no output)"
  rm -f ${test_out}

pamcut -bottom=1 -cropbottom=1 testgrid.pbm > ${test_out} || \
  printf "Expected failure 5 "
  test -s ${test_out} && echo "unexpected output" || echo "(no output)"
  rm -f ${test_out}

pamcut -left=1 -cropleft=1 testgrid.pbm > ${test_out} || \
  printf "Expected failure 6 "
  test -s ${test_out} && echo "unexpected output" || echo "(no output)"
  rm -f ${test_out}

# excessive cropping
pamcut -cropleft=7 -cropright=8 testgrid.pbm > ${test_out} || \
  printf "Expected failure 7 "
  test -s ${test_out} && echo "unexpected output" || echo "(no output)"
  rm -f ${test_out}

pamcut -left=7 -right=6 testgrid.pbm > ${test_out} || \
  printf "Expected failure 8 "
  test -s ${test_out} && echo "unexpected output" || echo "(no output)"
  rm -f ${test_out}

pamcut -croptop=8 -cropbottom=8 testgrid.pbm > ${test_out} || \
  printf "Expected failure 9 "
  test -s ${test_out} && echo "unexpected output" || echo "(no output)"
  rm -f ${test_out}

pamcut -top=10 -bottom=9 testgrid.pbm > ${test_out} || \
  printf "Expected failure 6 "
  test -s ${test_out} && echo "unexpected output" || echo "(no output)"
  rm -f ${test_out}

# pad absent
pamcut -cropleft=1 -width=14 testgrid.pbm > ${test_out} || \
  printf "Expected failure 10 "
  test -s ${test_out} && echo "unexpected output" || echo "(no output)"
  rm -f ${test_out}

pamcut -croptop=1  -height=16 testgrid.pbm > ${test_out} || \
  printf "Expected failure 11 "
  test -s ${test_out} && echo "unexpected output" || echo "(no output)"
  rm -f ${test_out}

# legacy style: insufficient number of positional parameters
pamcut 5 testimg.ppm > ${test_out} || \
  printf "Expected failure 12 "
  test -s ${test_out} && echo "unexpected output" || echo "(no output)"
  rm -f ${test_out}

pamcut 5 4 testimg.ppm > ${test_out} || \
  printf "Expected failure 13 "
  test -s ${test_out} && echo "unexpected output" || echo "(no output)"
  rm -f ${test_out}

pamcut 5 5 30 testimg.ppm > ${test_out} || \
  printf "Expected failure 14 "
  test -s ${test_out} && echo "unexpected output" || echo "(no output)"
  rm -f ${test_out}
