diff options
Diffstat (limited to 'test/pbmnoise2.test')
-rwxr-xr-x | test/pbmnoise2.test | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/test/pbmnoise2.test b/test/pbmnoise2.test new file mode 100755 index 00000000..8845e3b8 --- /dev/null +++ b/test/pbmnoise2.test @@ -0,0 +1,85 @@ +#! /bin/sh +# This script tests: pbmnoise +# Also requires: pgmhist + +# Expected value and variance of binominal distribution: +# Pb: probability of getting a black pixel (=ratio) +# Pw: probability of getting a white pixel (= 1 - Pb = 1 - ratio) +# +# E(width, height, Pb, Pw) = width * height * Pb +# V(width, height, Pb, Pw) = width * height * Pb * Pw +# +# When width * height is large and Pb is not too near edges +# approximate with normal distribution + +echo "Test 1. Should print OK 1, then OK 2 three times" + +args1="-endian=big -randomseed=1" + +( pbmnoise ${args1} 320 200 | pgmhist + pbmnoise -ratio=1/2 ${args1} 160 400 | pgmhist + pbmnoise -ratio=2/4 ${args1} 64000 1 | pgmhist + pbmnoise -pack ${args1} 10 6400 | pgmhist ) | \ + awk 'BEGIN { pixels=64000; Pb=Pw=0.5; + average=pixels*Pb; + sd=sqrt(pixels*Pb*Pw); # standard deviation + sl=1.96 # significance level + limit1 = average - sd * sl; + limit2 = average + sd * sl + count=-1 # initial value + } + $1!=0 { next } + { v=1 } # initial value + limit1 < $2 && $2 < limit2 { v=0 } + v==0 {print "OK", (count==prev)+1} + v==1 {print "NG" $0} + {prev=count}' + + + +echo "Test 2. Should print OK 1, then OK 2 three times" + +args2="-endian=big -randomseed=2" + +( pbmnoise -ratio=11/32 ${args1} 32 119 | pgmhist + pbmnoise -ratio=11/32 ${args1} 224 17 | pgmhist + pbmnoise -ratio=22/64 ${args1} 3808 1 | pgmhist + pbmnoise -ratio=44/128 -pack ${args1} 1904 2 | pgmhist ) | \ + awk 'BEGIN {pixels=32*119; Pb=11/32; Pw=1-Pb; + average=pixels*Pb; + sd=sqrt(pixels*Pb*Pw); # standard deviation + sl=1.96 # significance level + limit1 = average - sd * sl; + limit2 = average + sd * sl + count=-1 # initial value + } + $1!=0 { next } + { v=1 } # initial value + limit1 < $2 && $2 < limit2 { v=0 } + v==0 {print "OK", (count==prev)+1} + v==1 {print "NG" $0} + {prev=count}' + + + + +echo "Test 3-black. Should print 255 384 100% 100% four times" + +pbmnoise -ratio=0/1 -randomseed=1 128 3 | pgmhist | \ + awk '$1==0 || $1==255' +pbmnoise -ratio=0/1024 -randomseed=1 64 6 | pgmhist | \ + awk '$1==0 || $1==255' +pbmnoise -ratio=0/8192 -randomseed=1 32 12 | pgmhist | \ + awk '$1==0 || $1==255' +pbmnoise -ratio=0/65536 -randomseed=1 -pack 1 384 | pgmhist | \ + awk '$1==0 || $1==255' + +echo "Test 3-white. Should print 0 320 100% 100% three times" + +pbmnoise -ratio=1/1 -randomseed=1 64 5 | pgmhist | \ + awk '$1==0 || $1==255' +pbmnoise -ratio=8/8 -randomseed=1 32 10 | pgmhist | \ + awk '$1==0 || $1==255' +pbmnoise -ratio=65536/65536 -randomseed=1 -pack 2 160 | pgmhist | \ + awk '$1==0 || $1==255' + |