#! /bin/bash
# This script tests: ppmtorgb3 rgb3toppm
# Also requires: pgmtopbm pgmtopgm ppmtopgm


# Break an image into three monochrome planes, reassemble the
# image from them and check whether the resulting output is
# identical to the original input.

tmpdir=${tmpdir:-/tmp}

# Test 1.  PPM (color) input
echo "Test 1.  Should print 1926073387 101484"
rose_ppm=${tmpdir}/rose.ppm
rose_red=${tmpdir}/rose.red
rose_grn=${tmpdir}/rose.grn
rose_blu=${tmpdir}/rose.blu

cp testimg.ppm ${rose_ppm} &&
ppmtorgb3 ${rose_ppm} &&
rgb3toppm ${rose_red} ${rose_grn} ${rose_blu} | cksum

# Simple cat of three planes
echo "Test 2.  Should print 3744829044 101514"
cat ${rose_red} ${rose_grn} ${rose_blu} | cksum

rm ${rose_ppm} ${rose_red} ${rose_grn} ${rose_blu}

# Test 3.  PBM (monochrome) input
echo "Test 3.  Should print 281226646 481 twice"
maze_pbm=${tmpdir}/maze.pbm
maze_red=${tmpdir}/maze.red
maze_grn=${tmpdir}/maze.grn
maze_blu=${tmpdir}/maze.blu

cp maze.pbm ${tmpdir} &&
ppmtorgb3 ${maze_pbm} &&
rgb3toppm ${maze_red} ${maze_grn} ${maze_blu} | \
  ppmtopgm | pgmtopbm -th -val=0.5 | cksum
pgmtopbm -th -val=0.5 ${maze_red} | cksum

# Test 4.
# With PGM or PBM input, the three monochrome planes should be
# identical.  Test for this.

echo "Test 4.  Should print 0 twice"
cmp -s ${maze_red} ${maze_grn} ; echo $?
cmp -s ${maze_grn} ${maze_blu} ; echo $?

echo "Test 5.  Should print 0 0 : 0"
pgmtopgm < maze.pbm | cmp -s - ${maze_red}
  echo ${PIPESTATUS[@]} ":" $?

rm ${maze_pbm} ${maze_red} ${maze_grn} ${maze_blu}
