03120299d0cf93f8793462d465017334a81d1c1d
[pspp-builds.git] / tests / command / loop.sh
1 #!/bin/sh
2
3 # This program tests the LOOP command
4
5 TEMPDIR=/tmp/pspp-tst-$$
6 TESTFILE=$TEMPDIR/`basename $0`.sps
7
8 # ensure that top_builddir  are absolute
9 if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
10 if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
11 top_builddir=`cd $top_builddir; pwd`
12 PSPP=$top_builddir/src/ui/terminal/pspp
13
14 # ensure that top_srcdir is absolute
15 top_srcdir=`cd $top_srcdir; pwd`
16
17 STAT_CONFIG_PATH=$top_srcdir/config
18 export STAT_CONFIG_PATH
19
20
21 cleanup()
22 {
23      cd /
24      rm -rf $TEMPDIR
25 }
26
27
28 fail()
29 {
30     echo $activity
31     echo FAILED
32     cleanup;
33     exit 1;
34 }
35
36
37 no_result()
38 {
39     echo $activity
40     echo NO RESULT;
41     cleanup;
42     exit 2;
43 }
44
45 pass()
46 {
47     cleanup;
48     exit 0;
49 }
50
51 mkdir -p $TEMPDIR
52
53 cd $TEMPDIR
54
55 activity="create prog"
56 cat > $TEMPDIR/loop.stat <<EOF
57 data list /X 1 Y 2 ZOOLOGICAL 3.
58 begin data.
59 125
60 256
61 397
62 401
63 end data.
64 loop iterative_Variable=y to zoological by abs(zoological-y)/(zoological-y).
65 print /x iterative_Variable.
66 break.          /* Generates warning.
67 end loop.
68 execute.
69 EOF
70 if [ $? -ne 0 ] ; then no_result ; fi
71
72 activity="run program"
73 $SUPERVISOR $PSPP --testing-mode -o raw-ascii $TEMPDIR/loop.stat > $TEMPDIR/stdout
74 if [ $? -ne 0 ] ; then no_result ; fi
75
76 activity="compare stdout"
77 perl -pi -e 's/^\s*$//g' $TEMPDIR/stdout
78 diff -b $TEMPDIR/stdout  - <<EOF
79 EOF
80 if [ $? -ne 0 ] ; then fail ; fi
81
82 activity="compare results"
83 perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.list
84 diff  -b $TEMPDIR/pspp.list  - <<EOF
85 1.1 DATA LIST.  Reading 1 record from INLINE.
86 +----------+------+-------+------+
87 | Variable |Record|Columns|Format|
88 #==========#======#=======#======#
89 |X         |     1|  1-  1|F1.0  |
90 |Y         |     1|  2-  2|F1.0  |
91 |ZOOLOGICAL|     1|  3-  3|F1.0  |
92 +----------+------+-------+------+
93 1     2.00 
94 2     5.00 
95 3     9.00 
96 4      .00 
97 EOF
98 if [ $? -ne 0 ] ; then fail ; fi
99
100
101 pass;