#! /bin/sh
# This script tests: pamslice pamdeinterlace
# Also requires: pamfile pamcut pamtopnm pamflip

echo "Test 1.  Should print 139976034 137 twice"
# Slice rows, one by one, out of maze.pbm.
# Add header and reconstruct pbm image.
# Note that in pamslice output 0 is white and 1 is black: opposite of PBM

mwidth=$(pamfile -size maze.pbm | cut -d " " -f 1)
height=16

pamcut -top=0 -left=0 -height=${height} maze.pbm | cksum

(echo "P1"
 echo "${mwidth} ${height}"
 for i in `seq 0 $((${height}-1))` 
     do
     pamslice -row=$i maze.pbm
     done | cut -d" " -f2- | sed 'y/01/10/' ) \
 | pamtopnm | cksum


echo "Test 2.  Should print 1624460505 574 three times"
# Slice rows, one by one, out of ppm test image
# We take a part out of testimg.ppm with pamcut for processing the
# whole image takes much time.
# Add header and reconstruct ppm image.

tmpdir=${tmpdir:-/tmp}
test1711_ppm=${tmpdir}/test1711.ppm

pamcut -left=50 -top=50 -width=17 -height=11 testimg.ppm | \
  tee ${test1711_ppm} | cksum

(echo "P3"
 echo "17 11"
 echo "255"
 for i in 0 1 2 3 4 5 6 7 8 9 10   # for i in `seq 0 10`
     do
     pamslice -row=${i} ${test1711_ppm}
     done | cut -d" " -f2- ) \
 | pamtopnm | cksum

# Same as above test 2, but take cols instead of rows.

(echo "P3"
 echo "11 17"
 echo "255"
 for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16    # for i in `seq 0 16`
     do
     pamslice -col=${i} ${test1711_ppm}
     done | cut -d " " -f2- ) | pamflip -xy | cksum

echo "Test 3.  Should print 1624460505 574"
# Divide input image into two with pamdeinterlace and recombine.

testeven_ppm=${tmpdir}/testeven.ppm
testodd_ppm=${tmpdir}/testodd.ppm

pamdeinterlace -takeodd ${test1711_ppm} > ${testodd_ppm}
pamdeinterlace -takeeven ${test1711_ppm} > ${testeven_ppm}

( echo "P3"
  echo "17 11"
  echo "255"
  ( for i in  0 1 2 3 4 
        do
        pamslice -row=${i} ${testeven_ppm}
        pamslice -row=${i} ${testodd_ppm}
        done
        pamslice -row=5 ${testeven_ppm};
  ) | cut -d" " -f2- ) | pamtopnm | cksum

rm ${test1711_ppm} ${testodd_ppm} ${testeven_ppm}
