diff options
Diffstat (limited to 'test/symmetry.test')
-rwxr-xr-x | test/symmetry.test | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/test/symmetry.test b/test/symmetry.test new file mode 100755 index 00000000..5fdb3918 --- /dev/null +++ b/test/symmetry.test @@ -0,0 +1,95 @@ +#! /bin/bash +# This script tests: pgmramp pamgauss pgmkernel pbmpscale +# Also requires: pamflip + + alias pgmramp="${PBM_TESTPREFIX}pgmramp" + alias pamgauss="${PBM_TESTPREFIX}pamgauss" + alias pgmkernel="${PBM_TESTPREFIX}pgmkernel" + alias pbmpscale="${PBM_TESTPREFIX}pbmpscale" + alias pamflip="${PBM_BINPREFIX}pamflip" + shopt -s expand_aliases + +# All tests print "ok" upon success, cksum results otherwise. +# The "$3>0" is a kludge for preventing false positives with empty files. + +# All test images are square and have the symmetries of the square (Dih4). +# The sole exception is ell.pgm which is a rectangle (Dih2, also called +# "Klein four-group".) + +# Example symmetric square PGM image: +# P2 +# 5 5 +# 6 +# 1 2 3 2 1 +# 2 4 5 4 2 +# 3 5 6 5 3 +# 2 4 5 4 2 +# 1 2 3 2 1 + +## Failure with this test indicates that a generator or editor which +## should produce symmetric output images isn't doing so. + +# Test 1. +pgmramp -rect 31 31 > ${tmpdir}/rect.pgm + +( for op in -null -tb -lr -r90 + do pamflip $op ${tmpdir}/rect.pgm | cksum + done ) | uniq -c | \ + awk '$1==4 && $3>0 { print "ok"; exit }; { print }' + +rm ${tmpdir}/rect.pgm + +# Test 2. +pgmramp -ell 63 63 > ${tmpdir}/circle.pgm + +( for op in -null -tb -lr -r90 + do pamflip $op ${tmpdir}/circle.pgm | cksum + done ) | uniq -c | \ + awk '$1==4 && $3>0 { print "ok"; exit }; { print }' + +rm ${tmpdir}/circle.pgm + +# Test 3. +pamgauss -sigma=0.1 -tupletype=GRAYSCALE 25 25 > ${tmpdir}/gauss.pam + +( for op in -null -tb -lr -r90 + do pamflip $op ${tmpdir}/gauss.pam | cksum + done ) | uniq -c | \ + awk '$1==4 && $3>0 { print "ok"; exit }; { print }' + +rm ${tmpdir}/gauss.pam + +# Test 4. +pgmkernel 15 15 > ${tmpdir}/kernel.pgm + +( for op in -null -tb -lr -r90 + do pamflip $op ${tmpdir}/kernel.pgm | cksum + done ) | uniq -c | \ + awk '$1==4 && $3>0 { print "ok"; exit }; { print }' + +rm ${tmpdir}/kernel.pgm + +# Test 5. +# Should print "ok" 7 times. +for size in `seq 1 7` +do +pbmmake -g 5 5 | pbmpscale $size > ${tmpdir}/pscale.pbm + +( for op in -null -tb -lr -r90 + do pamflip $op ${tmpdir}/pscale.pbm | cksum + done ) | uniq -c | \ + awk '$1==4 && $3>0 { print "ok"; exit }; { print }' + +rm ${tmpdir}/pscale.pbm +done + +# Test 6. +pgmramp -ell 101 33 > ${tmpdir}/ell.pgm + +( for op in -null -tb -lr + do pamflip $op ${tmpdir}/ell.pgm | cksum + done ) | uniq -c | \ + awk '$1==3 && $3>0 { print "ok"; exit }; { print }' + +rm ${tmpdir}/ell.pgm + |