about summary refs log tree commit diff
path: root/test/pnmpad-extend-enlarge.test
diff options
context:
space:
mode:
Diffstat (limited to 'test/pnmpad-extend-enlarge.test')
-rwxr-xr-xtest/pnmpad-extend-enlarge.test177
1 files changed, 177 insertions, 0 deletions
diff --git a/test/pnmpad-extend-enlarge.test b/test/pnmpad-extend-enlarge.test
new file mode 100755
index 00000000..fde609a6
--- /dev/null
+++ b/test/pnmpad-extend-enlarge.test
@@ -0,0 +1,177 @@
+#! /bin/sh
+# This script tests: pnmpad pamenlarge
+# Also requires: pamcat pamcut pamenlarge pbmmake pbmnoise pgmmake pgmnoise
+# Also requires: ppmmake ppmpat
+
+# If the padding function for -extend-edge is altered, make sure to run this
+# test in a more thorough form.  Replace "for leftpad in 0 1 7 9 16"
+# with "for leftpad in `seq 0 16`".
+
+tmpdir=${tmpdir:-/tmp}
+test_pnm=${tmpdir}/test.pnm
+
+padded_pnm=${tmpdir}/padded.pnm
+#middle_pnm=${tmpdir}/middle.pnm
+left_pnm=${tmpdir}/left.pnm
+right_pnm=${tmpdir}/right.pnm
+top_pnm=${tmpdir}/top.pnm
+bottom_pnm=${tmpdir}/bottom.pnm
+
+echo "Test 1.  Should print match forty-eight (24x2) times"
+
+for generator in "pbmnoise -randomseed=100 17 17" \
+                 "ppmpat -tartan -randomseed=100 11 11"          
+    do
+    ${generator} > ${test_pnm}
+    for leftpad in 0 1 7 9 16
+    do
+        for rightpad in  0 1 8
+        do
+            pnmpad -extend-edge -l=${leftpad} -r=${rightpad} ${test_pnm} > ${padded_pnm}
+            pamcut -left=0 -width=1 ${test_pnm} |\
+                pamenlarge -xscale=$(( ${leftpad} + 1 )) > ${left_pnm}
+            pamcut -right=-1 -width=1  ${test_pnm} |\
+                pamenlarge -xscale=$(( ${rightpad} + 1 )) > ${right_pnm}
+            pamcut -cropleft=1 -cropright=1 ${test_pnm} |\
+                pamcat -lr ${left_pnm} - ${right_pnm} |\
+                cmp -s - ${padded_pnm} && echo "match" ||\
+                    echo "no match: lr ${generator} ${leftpad} ${rightpad}";
+            rm ${left_pnm} ${right_pnm} ${padded_pnm}
+        done
+    done
+    
+    for toppad in 0 2 5
+    do
+        for bottompad in  0 1 10
+        do
+            pnmpad -extend-edge -t=${toppad} -b=${bottompad} ${test_pnm} > ${padded_pnm}
+            pamcut -top=0 -height=1 ${test_pnm} |\
+                pamenlarge -yscale=$(( ${toppad} + 1 )) > ${top_pnm}
+            pamcut -bottom=-1 -height=1  ${test_pnm} |\
+                pamenlarge -yscale=$(( ${bottompad} + 1 )) > ${bottom_pnm}
+            pamcut -croptop=1 -cropbottom=1 ${test_pnm} |\
+            pamcat -tb ${top_pnm} - ${bottom_pnm} |\
+                cmp -s - ${padded_pnm} && echo "match" ||\
+                    echo "no match: tb ${generator} ${toppad} ${bottompad}";
+            rm ${top_pnm} ${bottom_pnm} ${padded_pnm}
+        done
+    done
+    rm ${test_pnm}
+done
+
+
+echo "Test 2.  Should print match thirty-six (18x2) times"
+
+for generator in "pbmnoise -randomseed=100 17 17" \
+                 "ppmpat -tartan -randomseed=100 11 11"
+    do
+    ${generator} > ${test_pnm}
+    for leftpad in 0 1 2
+    do
+        for rightpad in  0 1 3
+        do
+            pnmpad -extend-edge -l=${leftpad} -r=${rightpad} ${test_pnm} > ${padded_pnm}
+            pamcut -left=0 -width=1 ${test_pnm} |\
+                pamenlarge -xscale=$(( ${leftpad} + 1 )) > ${left_pnm}
+            pamcut -right=-1 -width=1  ${test_pnm} |\
+                pamenlarge -xscale=$(( ${rightpad} + 1 )) > ${right_pnm}
+            pamcut -cropleft=1 -cropright=1 ${test_pnm} |\
+                pamcat -lr ${left_pnm} - ${right_pnm} |\
+                cmp -s - ${padded_pnm} && echo "match" ||\
+                    echo "no match: lr ${generator} ${leftpad} ${rightpad}";
+            rm ${left_pnm} ${right_pnm} ${padded_pnm}
+        done
+    done
+    
+    for toppad in 0 1 12
+    do
+        for bottompad in 0 1 5
+        do
+            pnmpad -extend-edge -t=${toppad} -b=${bottompad} ${test_pnm} > ${padded_pnm}
+            pamcut -top=0 -height=1 ${test_pnm} |\
+                pamenlarge -yscale=$(( ${toppad} + 1 )) > ${top_pnm}
+            pamcut -bottom=-1 -height=1  ${test_pnm} |\
+                pamenlarge -yscale=$(( ${bottompad} + 1 )) > ${bottom_pnm}
+            pamcut -croptop=1 -cropbottom=1 ${test_pnm} |\
+                pamcat -tb ${top_pnm} - ${bottom_pnm} |\
+                cmp -s - ${padded_pnm} && echo "match" ||\
+                    echo "no match: tb ${generator} ${toppad} ${bottompad}";
+            rm ${top_pnm} ${bottom_pnm} ${padded_pnm}
+        done
+    done
+    rm ${test_pnm}
+done
+
+
+echo "Test 3.  Should print match twenty-four (4x6) times"
+
+stretch_pnm=${tmpdir}/stretch.pnm
+
+for generator in "pbmmake -b 1 1" \
+                 "pbmmake -b 1 11" \
+                 "pbmmake -w 1 1" \
+                 "pbmmake -w 1 8" \
+                 "pbmnoise -randomseed=100 1 17" \
+                 "pgmnoise -randomseed=100 1 12"                 
+    do
+        ${generator} > ${test_pnm}
+     pamenlarge -xscale=17 ${test_pnm} > ${stretch_pnm} 
+        
+    for leftpad in 0 1 7 16
+    do
+        pnmpad -extend-edge -l=${leftpad} -r=$((16 - ${leftpad})) ${test_pnm} |\
+                cmp -s - ${stretch_pnm} && echo "match" ||\
+                    echo "no match: ${generator} ${leftpad}";
+    done
+    rm ${stretch_pnm} ${test_pnm}
+done
+
+
+echo "Test 4.  Should print match eighteen (3x6) times"
+
+stretch_pnm=${tmpdir}/stretch.pnm
+
+for generator in "pbmmake -b 1 1" \
+                 "pbmmake -b 8 1" \
+                 "pbmmake -w 1 1" \
+                 "pbmmake -w 3 1" \
+                 "pbmnoise -randomseed=100 17 1" \
+                 "pgmnoise -randomseed=100 8 1"          
+    do
+        ${generator} > ${test_pnm}
+     pamenlarge -yscale=15 ${test_pnm} > ${stretch_pnm} 
+        
+    for toppad in  0 1 14
+    do
+        pnmpad -extend-edge -t=${toppad} -b=$((14 - ${toppad})) ${test_pnm} |\
+                cmp -s - ${stretch_pnm} && echo "match" ||\
+                    echo "no match: ${generator} ${toppad}";
+    done
+    rm ${stretch_pnm} ${test_pnm}
+done
+
+
+echo "Test 5.  Should print match thirty-two (8x4) times"
+
+stretch_pnm=${tmpdir}/stretch.pnm
+
+for generator in "pbmmake -b 1 1" \
+                 "pbmmake -w 1 1" \
+                 "pgmmake 0.3 1 1" \
+                 "ppmmake rgbi:0.5/0.3/0.8 1 1"
+    do
+        ${generator} > ${test_pnm}
+        pamenlarge -xscale=66 -yscale=10 ${test_pnm} > ${stretch_pnm}
+        
+    for toppad in  0 8
+    do
+    for leftpad in  0 1 15 64
+    do
+        pnmpad -extend-edge -t=${toppad} -b=$((9 - ${toppad})) \
+         -l=${leftpad} -r=$((65 - ${leftpad})) ${test_pnm} |\
+                cmp -s - ${stretch_pnm} && echo "match" ||\
+                echo "no match: ${generator} ${toppad} ${leftpad}"
+    done
+    done
+    rm ${stretch_pnm} ${test_pnm}
+done