#! /bin/sh
# This script tests: pnmcrop
# Also requires: pnmpad pnmmargin pamcut

tmpdir=${tmpdir:-/tmp}

test_pbm=${tmpdir}/maze.pbm
test_ppm=${tmpdir}/rose.ppm

pnmmargin -white 7 maze.pbm | pnmpad -black -bottom=2  > ${test_pbm}
pnmmargin -white 6 testimg.ppm  | pnmpad -black -right=11  > ${test_ppm}

#Test 1
echo Test 1

for input_file in ${test_pbm} ${test_ppm}
  do
  bfile=`basename ${input_file}`
  for option in "" "-white" "-black" "-sides" \
              "-top" "-bottom" "-left" "-right" "-top -bottom" \
              "-bottom -bg-corner=bottomright" \
              "-right -bg-corner=bottomright" \
              "-bg-color=white" "-bg-color=black" "-bg-color=red"
    do
    echo "file: ${bfile} option: ${option}"
    pnmcrop -reportfull ${option} ${input_file} || echo fail
    done
  done

#Test 2
echo "Test 2.  Should print 0 six times"

out_pnm=${tmpdir}/out.pnm

for input_file in ${test_pbm} ${test_ppm}
  do
  bfile=`basename ${input_file}`
  for option in "" "-white" "-top"
    do
    echo file: ${bfile} option: ${option}
    # Normal crop operation
    pnmcrop ${option} ${input_file} > ${out_pnm}

    # Compute edge extents with pnmcrop; let pamcut do the actual cropping
    pamcut ${input_file} `pnmcrop -reportsize ${option} ${input_file} | \
        awk 'NF==6 && NR==1 && \
             $1<=0 && $2<=0 && $3<=0 && $4<=0 && $5>=0 && $6>=0 \
             { printf("-cropleft=%d -cropright=%d ", -$1, -$2);
               printf("-croptop=%d -cropbottom=%d ", -$3, -$4) }' ` | \
        cmp -s - ${out_pnm}
    echo $?
    rm ${out_pnm}
    done
  done

rm ${test_pbm} ${test_ppm}

# Test 3
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

for option in "-reportfull -reportsize" \
              "-reportfull -borderfile=testgrid.pbm" \
              "-reportsize -borderfile=testgrid.pbm" \
              "-black -white" \
              "-black -sides" \
              "-white -bg-color=red" \
              "-white -bg-corner=topleft" \
              "-white -bg-corner=top" \
              "-blank-image=pasturize" \
              "-bg-color=black -closeness=-1" \
              "-bg-color=black -closeness=101"
    do
    pnmcrop -reportfull ${option} testgrid.pbm > ${test_out} || \
        printf "Expected failure:  %s" "${option} "
        test -s ${test_out} && echo "unexpected output" || echo "(no output)"	
        rm ${test_out}
    done
