Rewrite PSPP output engine.
[pspp-builds.git] / tests / bugs / random.sh
1 #!/bin/sh
2
3 # This program tests for a bug which caused UNIFORM(x) to always return zero.
4
5
6 TEMPDIR=/tmp/pspp-tst-$$
7 TESTFILE=$TEMPDIR/`basename $0`.sps
8
9 # ensure that top_builddir  are absolute
10 if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
11 if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
12 top_builddir=`cd $top_builddir; pwd`
13 PSPP=$top_builddir/src/ui/terminal/pspp
14
15 # ensure that top_srcdir is absolute
16 top_srcdir=`cd $top_srcdir; pwd`
17
18 STAT_CONFIG_PATH=$top_srcdir/config
19 export STAT_CONFIG_PATH
20
21
22 cleanup()
23 {
24      if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then 
25         echo "NOT cleaning $TEMPDIR" 
26         return ; 
27      fi
28      cd /
29      rm -rf $TEMPDIR
30 }
31
32
33 fail()
34 {
35     echo $activity
36     echo FAILED
37     cleanup;
38     exit 1;
39 }
40
41
42 no_result()
43 {
44     echo $activity
45     echo NO RESULT;
46     cleanup;
47     exit 2;
48 }
49
50 pass()
51 {
52     cleanup;
53     exit 0;
54 }
55
56 mkdir -p $TEMPDIR
57
58 cd $TEMPDIR
59
60 activity="create program"
61 cat > $TESTFILE <<EOF
62 set seed=10.
63 input program.
64 + loop #i = 1 to 20.
65 +    do repeat response=R1.
66 +       compute response = uniform(10).
67 +    end repeat.
68 +    end case.
69 + end loop.
70 + end file.
71 end input program.
72
73 list.
74 EOF
75 if [ $? -ne 0 ] ; then no_result ; fi
76
77 activity="run program"
78 $SUPERVISOR $PSPP --testing-mode $TESTFILE
79 if [ $? -ne 0 ] ; then no_result ; fi
80
81
82 activity="compare output"
83 perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.csv
84 diff -b  -w $TEMPDIR/pspp.csv - << EOF
85 Table: Data List
86 R1
87 7.71
88 2.99
89 .21
90 4.95
91 6.34
92 4.43
93 7.49
94 8.32
95 4.99
96 5.83
97 2.25
98 .25
99 1.98
100 7.09
101 7.61
102 2.66
103 1.69
104 2.64
105 .88
106 1.50
107 EOF
108 if [ $? -ne 0 ] ; then fail ; fi
109
110 pass;