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

tmpdir=${tmpdir:-/tmp}

test_pbm=${tmpdir}/test.pbm
test_ppm=${tmpdir}/test.ppm

pnmmargin -white 7 testgrid.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
  echo `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 ${option}
    pnmcrop -reportfull ${option} ${input_file} || echo fail
    done
  done

#Test 2
echo Test 2

for input_file in ${test_pbm} ${test_ppm}
  do
  echo `basename ${input_file}`
  for option in "" "-white" "-top"
    do
    echo ${option}
    # Normal crop operation
    pnmcrop ${option} ${input_file} | cksum

    # 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) }' ` | cksum
    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
    echo ${option}
    pnmcrop -reportfull ${option} testgrid.pbm > ${test_out} || \
        echo -n "Expected failure: " ${option}; test -s ${test_out}; echo " "$?
        rm ${test_out} 
    done
