about summary refs log tree commit diff
path: root/test/pgmnoise.test
blob: 4a6e21dd5c2d079b1b6fe4d8134cb0dc4828e4ef (plain) (blame)
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#! /bin/bash
# This script tests: pgmnoise
# Also requires: pgmhist pamvalidate pamfile

echo "Test 1."
echo "Should print: 2132901423 10015" # (Mersenne Twister)
#                   1663614689 10015 (Glibc rand())
#                   3516404574 10015 (MAC OS rand())
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 `seq 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 `seq 16` 30 31 32 254 255 256 65534 65535
  do
  echo -n ${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}
messages=${tmpdir}/messages

echo "Test 6."
echo "First column should be 2^n - 1"
# 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 `seq 35; seq 60 69; seq 120 129; seq 250 259`
  do
  pgmnoise -maxval=${maxval} -randomseed=1 -verbose 1 1 > /dev/null \
  2> ${messages}
  awk -v mval=${maxval} '/method/ && /pool/ { print mval, $0 }' ${messages}
  done

  rm ${messages}


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} || \
  echo -n "Expected failure 1"
  test -s ${test_out}; echo " "$?
  rm -f ${test_out}

pgmnoise 0 1  > ${test_out} || \
  echo -n "Expected failure 2"
  test -s ${test_out}; echo " "$?
  rm -f ${test_out}

pgmnoise 1 0  > ${test_out} || \
  echo -n "Expected failure 3"
  test -s ${test_out}; echo " "$?
  rm -f ${test_out}

pgmnoise      > ${test_out} || \
  echo -n "Expected failure 4"
  test -s ${test_out}; echo " "$?
  rm -f ${test_out}

pgmnoise 1    > ${test_out} || \
  echo -n "Expected failure 5"
  test -s ${test_out}; echo " "$?
  rm -f ${test_out}

pgmnoise 100 -1 > ${test_out} || \
  echo -n "Expected failure 6"
  test -s ${test_out}; echo " "$?
  rm -f ${test_out}

pgmnoise -randomseed=-1 100 100  > ${test_out} || \
  echo -n "Expected failure 7"
  test -s ${test_out}; echo " "$?
  rm -f ${test_out}

pgmnoise -maxval=-1 100 100  > ${test_out} || \
  echo -n "Expected failure 8"
  test -s ${test_out}; echo " "$?
  rm -f ${test_out}

pgmnoise -maxval=0 100 100  > ${test_out} || \
  echo -n "Expected failure 9"
  test -s ${test_out}; echo " "$?
  rm -f ${test_out}

pgmnoise -maxval=$((256 * 256 * 256 * 256)) 10 10 > ${test_out} || \
  echo -n "Expected failure 10"
  test -s ${test_out}; echo " "$?
  rm -f ${test_out}