1f135d9bb7ca6ebc2d0e546dd3f738c00e56219c
[pspp-builds.git] / tests / command / print.sh
1 #!/bin/sh
2
3 # This program tests the PRINT transformation
4
5 TEMPDIR=/tmp/pspp-tst-$$
6 TESTFILE=$TEMPDIR/`basename $0`.sps
7
8 here=`pwd`;
9
10 # ensure that top_srcdir is absolute
11 cd $top_srcdir; top_srcdir=`pwd`
12
13 STAT_CONFIG_PATH=$top_srcdir/config
14 export STAT_CONFIG_PATH
15
16
17 cleanup()
18 {
19      cd /
20      rm -rf $TEMPDIR
21 }
22
23
24 fail()
25 {
26     echo $activity
27     echo FAILED
28     cleanup;
29     exit 1;
30 }
31
32
33 no_result()
34 {
35     echo $activity
36     echo NO RESULT;
37     cleanup;
38     exit 2;
39 }
40
41 pass()
42 {
43     cleanup;
44     exit 0;
45 }
46
47 mkdir -p $TEMPDIR
48
49 cd $TEMPDIR
50
51 # Copy this file --- it's shared with another test
52 activity="create data"
53 cp $top_srcdir/tests/data-list.data $TEMPDIR
54 if [ $? -ne 0 ] ; then no_result ; fi
55
56
57 activity="create program"
58 cat > $TEMPDIR/print.stat << foobar
59 title 'Test PRINT transformation'.
60
61 data list free table file='$TEMPDIR/data-list.data'/A B C D.
62 print outfile="foo" table/A(f8.2) '/' B(e8.2) '/' C(n10) '/'.
63 print space a.
64 print outfile="foo" /a b c d.
65 list.
66
67 data list list table file='$TEMPDIR/data-list.data'/A B C D.
68 print table/A B C D.
69 list.
70
71 foobar
72 if [ $? -ne 0 ] ; then no_result ; fi
73
74
75 activity="run program"
76 $SUPERVISOR $here/../src/pspp --testing-mode -o raw-ascii --testing-mode $TEMPDIR/print.stat > $TEMPDIR/errs
77 # Note   vv   --- there are errors in input.  Therefore, the  command must FAIL
78 if [ $? -eq 0 ] ; then fail ; fi
79
80 activity="compare error messages"
81 diff -w $TEMPDIR/errs - <<EOF
82 $TEMPDIR/data-list.data:1: error: (columns 1-5, field type F8.0) Field does not form a valid floating-point constant.
83 $TEMPDIR/data-list.data:1: warning: LIST: The expression on PRINT SPACE evaluated to the system-missing value.
84 $TEMPDIR/data-list.data:2: error: (columns 1-8, field type F8.0) Field does not form a valid floating-point constant.
85 $TEMPDIR/data-list.data:4: warning: LIST: The expression on PRINT SPACE evaluated to the system-missing value.
86 $TEMPDIR/data-list.data:4: error: (columns 3-12, field type F8.0) Field does not form a valid floating-point constant.
87 $TEMPDIR/data-list.data:6: warning: LIST: The expression on PRINT SPACE evaluated to the system-missing value.
88 $TEMPDIR/data-list.data:1: error: (columns 1-5, field type F8.0) Field does not form a valid floating-point constant.
89 $TEMPDIR/data-list.data:2: error: (columns 1-8, field type F8.0) Field does not form a valid floating-point constant.
90 $TEMPDIR/data-list.data:2: warning: LIST: Missing value(s) for all variables from C onward.  These will be filled with the system-missing value or blanks, as appropriate.
91 $TEMPDIR/data-list.data:3: warning: LIST: Missing value(s) for all variables from B onward.  These will be filled with the system-missing value or blanks, as appropriate.
92 $TEMPDIR/data-list.data:4: error: (columns 3-12, field type F8.0) Field does not form a valid floating-point constant.
93 $TEMPDIR/data-list.data:4: warning: LIST: Missing value(s) for all variables from C onward.  These will be filled with the system-missing value or blanks, as appropriate.
94 $TEMPDIR/data-list.data:5: warning: LIST: Missing value(s) for all variables from C onward.  These will be filled with the system-missing value or blanks, as appropriate.
95 $TEMPDIR/data-list.data:6: warning: LIST: Missing value(s) for all variables from B onward.  These will be filled with the system-missing value or blanks, as appropriate.
96 EOF
97 if [ $? -ne 0 ] ; then fail ; fi
98
99
100 activity="compare output"
101 perl -pi -e s/^\s*\$//g $TEMPDIR/pspp.list
102 diff -b  $TEMPDIR/pspp.list - << EOF | perl -e 's/^\s*$//g'
103 1.1 DATA LIST.  Reading free-form data from file $TEMPDIR/data-list.data.
104 +--------+------+
105 |Variable|Format|
106 #========#======#
107 |A       |F8.0  |
108 |B       |F8.0  |
109 |C       |F8.0  |
110 |D       |F8.0  |
111 +--------+------+
112
113 2.1 PRINT.  Writing 1 record(s) to file foo.
114 +--------+------+-------+------+
115 |Variable|Record|Columns|Format|
116 #========#======#=======#======#
117 |A       |     1|  1-  8|F8.2  |
118 |"/"     |     1|  9-  9|A1    |
119 |B       |     1| 10- 17|E8.2  |
120 |"/"     |     1| 18- 18|A1    |
121 |C       |     1| 19- 28|N10.0 |
122 |"/"     |     1| 29- 29|A1    |
123 +--------+------+-------+------+
124
125
126        A        B        C        D
127 -------- -------- -------- --------
128      .       2.00     3.00     4.00 
129
130      .       6.00     7.00     8.00 
131
132      .      10.00    11.00    12.00 
133
134 3.1 DATA LIST.  Reading free-form data from file $TEMPDIR/data-list.data.
135 +--------+------+
136 |Variable|Format|
137 #========#======#
138 |A       |F8.0  |
139 |B       |F8.0  |
140 |C       |F8.0  |
141 |D       |F8.0  |
142 +--------+------+
143
144 4.1 PRINT.  Writing 1 record(s) to the listing file.
145 +--------+------+-------+------+
146 |Variable|Record|Columns|Format|
147 #========#======#=======#======#
148 |A       |     1|  1-  8|F8.2  |
149 |B       |     1| 10- 17|F8.2  |
150 |C       |     1| 19- 26|F8.2  |
151 |D       |     1| 28- 35|F8.2  |
152 +--------+------+-------+------+
153      .       2.00     3.00     4.00 
154
155        A        B        C        D
156 -------- -------- -------- --------
157      .       2.00     3.00     4.00 
158      .       6.00      .        .   
159      .       6.00      .        .   
160     7.00      .        .        .   
161     7.00      .        .        .   
162     8.00      .        .        .   
163     8.00      .        .        .   
164    10.00    11.00      .        .   
165    10.00    11.00      .        .   
166    12.00      .        .        .   
167    12.00      .        .        .   
168
169 EOF
170 if [ $? -ne 0 ] ; then fail ; fi
171
172
173 activity="compare print out"
174 diff $TEMPDIR/foo - << EOF
175      .  /2.00E+00/0000000003/
176      .       2.00     3.00     4.00 
177      .  /6.00E+00/0000000007/
178      .       6.00     7.00     8.00 
179      .  /1.00E+01/0000000011/
180      .      10.00    11.00    12.00 
181 EOF
182 if [ $? -ne 0 ] ; then fail ; fi
183
184 pass;