#! /bin/sh # This script tests: pgmnoise # Also requires: pgmhist pamvalidate pamfile echo "Test 1." echo "Should print: 2132901423 10015" # (Mersenne Twister) pgmnoise --randomseed=0 100 100 | cksum echo "Test 2." # Output is similar to that of Test 2. of random-generator.test # The lowest four decimal digits are printed. pgmnoise --randomseed=5489 -maxval=9999 -plain 5 20 echo "Test 3." for maxval in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 255 65535 do echo ${maxval} pgmnoise -maxval=${maxval} -randomseed=1 -plain 16 1 | tr '\n' ' ' done echo echo "Test 4." # Check for maxval violation for maxval in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 \ 30 31 32 254 255 256 65534 65535 do printf "%d " ${maxval} pgmnoise -maxval=${maxval} -randomseed=1 -plain ${maxval} 10 | \ pamvalidate | pamfile done echo "Test 5." echo "Should print four identical lines" # width height values do not affect random number sequence for xysize in "1 10000" "100 100" "250 40" "1000 10" do pgmnoise --randomseed=0 ${xysize} | pgmhist -mach | cksum done tmpdir=${tmpdir:-/tmp} outfile=${tmpdir}/out echo "Test 6." echo "First column should be 2^n - 1. Last column should be 'pool'." # The "pool" method of generating pixvals is used iff maxval is # a power of 2 minus 1: 1, 3, 7, 15, 31 ... for maxval in \ 1 2 3 4 5 6 7 8 9 \ 10 11 12 13 14 15 16 17 18 19 \ 20 21 22 23 24 25 26 27 28 29 \ 30 31 32 33 60 61 62 63 64 65 \ 127 255 511 1023 65535 \ 129 142 186 219 677 1068 1788 1820 2067 2154 2301 2317 \ 5180 5321 5596 6304 7565 9525 \ 10501 14178 25797 27451 28653 do pgmnoise -maxval=${maxval} -plain -randomseed=1 -verbose 1 1 \ > /dev/null 2> ${outfile} awk -v mval=${maxval} '/method/ && /pool/ { print mval, $0 }' ${outfile} rm ${outfile} done echo "Test Invalid" test_out=${tmpdir}/test_out echo 1>&2 echo "Invalid command-line arguments." 1>&2 echo "Error messages should appear below the line." 1>&2 echo "-----------------------------------------------------------" 1>&2 pgmnoise 0 0 > ${test_out} || \ printf "Expected failure 1 " test -s ${test_out} && echo "unexpected output" || echo "(no output)" rm -f ${test_out} pgmnoise 0 1 > ${test_out} || \ printf "Expected failure 2 " test -s ${test_out} && echo "unexpected output" || echo "(no output)" rm -f ${test_out} pgmnoise 1 0 > ${test_out} || \ printf "Expected failure 3 " test -s ${test_out} && echo "unexpected output" || echo "(no output)" rm -f ${test_out} pgmnoise > ${test_out} || \ printf "Expected failure 4 " test -s ${test_out} && echo "unexpected output" || echo "(no output)" rm -f ${test_out} pgmnoise 1 > ${test_out} || \ printf "Expected failure 5 " test -s ${test_out} && echo "unexpected output" || echo "(no output)" rm -f ${test_out} pgmnoise 100 -1 > ${test_out} || \ printf "Expected failure 6 " test -s ${test_out} && echo "unexpected output" || echo "(no output)" rm -f ${test_out} pgmnoise -randomseed=-1 100 100 > ${test_out} || \ printf "Expected failure 7 " test -s ${test_out} && echo "unexpected output" || echo "(no output)" rm -f ${test_out} pgmnoise -maxval=-1 100 100 > ${test_out} || \ printf "Expected failure 8 " test -s ${test_out} && echo "unexpected output" || echo "(no output)" rm -f ${test_out} pgmnoise -maxval=0 100 100 > ${test_out} || \ printf "Expected failure 9 " test -s ${test_out} && echo "unexpected output" || echo "(no output)" rm -f ${test_out} pgmnoise -maxval=$((256 * 256 * 256 * 256)) 10 10 > ${test_out} || \ printf "Expected failure 10 " test -s ${test_out} && echo "unexpected output" || echo "(no output)" rm -f ${test_out}