(main): When testing mode is enabled, use a built-in output driver
[pspp-builds.git] / tests / command / data-list.sh
1 #!/bin/sh
2
3 # This program tests the DATA LIST input program.
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 # Create command file.
56 activity="create program"
57 cat > $TESTFILE << EOF
58 data list list ('|','X') /A B C D.
59 begin data.
60 1|23X45|2.03
61 2X22|34|23|
62 3|34|34X34
63 end data.
64
65 list.
66
67 data list free skip=1/A B C D.
68 begin data.
69 # This record is ignored.
70 ,1,2,3
71 ,4,,5
72 6
73 7,
74 8 9
75 0,1,,,
76 ,,,,
77 2
78
79 3
80 4
81 5
82 end data.
83 list.
84
85 data list free (tab) skip=2/A B C D.
86 begin data.
87 # These records
88 # are skipped.
89 1       2       3       4
90 1       2       3       
91 1       2               4
92 1       2               
93 1               3       4
94 1               3       
95 1                       4
96 1                       
97         2       3       4
98         2       3       
99         2               4
100         2               
101                 3       4
102                 3       
103                         4
104                         
105 end data.
106 list.
107
108 * Test DATA LIST FIXED with multiple records.
109 data list fixed notable
110         /1 start 1-20 (adate)
111         /2 end 1-20 (adate)
112         /3 count 1-3.
113 begin data.
114 07-22-2007
115 10-06-2007
116 321
117 07-14-1789
118 08-26-1789
119 4
120 01-01-1972
121 12-31-1999
122 682
123 end data.
124 list.
125
126 * Test that DATA LIST FIXED works with an empty trailing record.
127 data list fixed notable records=2/x 1 y 2.
128 begin data.
129 12
130
131 34
132
133 56
134
135 78
136
137 90
138
139 end data.
140 list.
141 EOF
142 if [ $? -ne 0 ] ; then no_result ; fi
143
144
145 activity="run program"
146 $SUPERVISOR $PSPP --testing-mode $TESTFILE
147 if [ $? -ne 0 ] ; then fail ; fi
148
149 activity="compare output"
150 perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.list
151 diff -b  $TEMPDIR/pspp.list - << EOF
152 1.1 DATA LIST.  Reading free-form data from INLINE.
153 +--------+------+
154 |Variable|Format|
155 #========#======#
156 |A       |F8.0  |
157 |B       |F8.0  |
158 |C       |F8.0  |
159 |D       |F8.0  |
160 +--------+------+
161        A        B        C        D
162 -------- -------- -------- --------
163     1.00    23.00    45.00     2.03 
164     2.00    22.00    34.00    23.00 
165     3.00    34.00    34.00    34.00 
166        A        B        C        D
167 -------- -------- -------- --------
168      .       1.00     2.00     3.00 
169      .       4.00      .       5.00 
170     6.00     7.00     8.00     9.00 
171      .00     1.00      .        .   
172      .        .        .        .   
173     2.00     3.00     4.00     5.00 
174        A        B        C        D
175 -------- -------- -------- --------
176     1.00     2.00     3.00     4.00 
177     1.00     2.00     3.00      .   
178     1.00     2.00      .       4.00 
179     1.00     2.00      .        .   
180     1.00      .       3.00     4.00 
181     1.00      .       3.00      .   
182     1.00      .        .       4.00 
183     1.00      .        .        .   
184      .       2.00     3.00     4.00 
185      .       2.00     3.00      .   
186      .       2.00      .       4.00 
187      .       2.00      .        .   
188      .        .       3.00     4.00 
189      .        .       3.00      .   
190      .        .        .       4.00 
191      .        .        .        .   
192                start                  end count
193 -------------------- -------------------- -----
194           07/22/2007           10/06/2007   321
195           07/14/1789           08/26/1789     4
196           01/01/1972           12/31/1999   682
197 x y
198 - -
199 1 2
200 3 4
201 5 6
202 7 8
203 9 0
204 EOF
205 if [ $? -ne 0 ] ; then fail ; fi
206
207 pass;