Rewrite PSPP output engine.
[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      if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then 
24         echo "NOT cleaning $TEMPDIR" 
25         return ; 
26      fi
27      cd /
28      rm -rf $TEMPDIR
29 }
30
31
32 fail()
33 {
34     echo $activity
35     echo FAILED
36     cleanup;
37     exit 1;
38 }
39
40
41 no_result()
42 {
43     echo $activity
44     echo NO RESULT;
45     cleanup;
46     exit 2;
47 }
48
49 pass()
50 {
51     cleanup;
52     exit 0;
53 }
54
55 mkdir -p $TEMPDIR
56
57 cd $TEMPDIR
58
59 # Create command file.
60 activity="create program"
61 cat > $TESTFILE << EOF
62 data list list ('|','X') /A B C D.
63 begin data.
64 1|23X45|2.03
65 2X22|34|23|
66 3|34|34X34
67 end data.
68
69 list.
70
71 data list free skip=1/A B C D.
72 begin data.
73 # This record is ignored.
74 ,1,2,3
75 ,4,,5
76 6
77 7,
78 8 9
79 0,1 ,,,
80 ,,,,
81 2
82
83 3
84 4
85 5
86 end data.
87 list.
88
89 data list free (tab) skip=2/A B C D.
90 begin data.
91 # These records
92 # are skipped.
93 1       2       3       4
94 1       2       3       
95 1       2               4
96 1       2               
97 1               3       4
98 1               3       
99 1                       4
100 1                       
101         2       3       4
102         2       3       
103         2               4
104         2               
105                 3       4
106                 3       
107                         4
108                         
109 end data.
110 list.
111
112 * Test DATA LIST FIXED with multiple records.
113 data list fixed notable
114         /1 start 1-20 (adate)
115         /2 end 1-20 (adate)
116         /3 count 1-3.
117 begin data.
118 07-22-2007
119 10-06-2007
120 321
121 07-14-1789
122 08-26-1789
123 4
124 01-01-1972
125 12-31-1999
126 682
127 end data.
128 list.
129
130 * Test that DATA LIST FIXED works with an empty trailing record.
131 data list fixed notable records=2/x 1 y 2.
132 begin data.
133 12
134
135 34
136
137 56
138
139 78
140
141 90
142
143 end data.
144 list.
145 EOF
146 if [ $? -ne 0 ] ; then no_result ; fi
147
148
149 activity="run program"
150 $SUPERVISOR $PSPP --testing-mode $TESTFILE
151 if [ $? -ne 0 ] ; then fail ; fi
152
153 activity="compare output"
154 diff -c $TEMPDIR/pspp.csv - << EOF
155 Table: Reading free-form data from INLINE.
156 Variable,Format
157 A,F8.0
158 B,F8.0
159 C,F8.0
160 D,F8.0
161
162 Table: Data List
163 A,B,C,D
164 1.00,23.00,45.00,2.03
165 2.00,22.00,34.00,23.00
166 3.00,34.00,34.00,34.00
167
168 Table: Data List
169 A,B,C,D
170 .  ,1.00,2.00,3.00
171 .  ,4.00,.  ,5.00
172 6.00,7.00,8.00,9.00
173 .00,1.00,.  ,.  
174 .  ,.  ,.  ,.  
175 2.00,3.00,4.00,5.00
176
177 Table: Data List
178 A,B,C,D
179 1.00,2.00,3.00,4.00
180 1.00,2.00,3.00,.  
181 1.00,2.00,.  ,4.00
182 1.00,2.00,.  ,.  
183 1.00,.  ,3.00,4.00
184 1.00,.  ,3.00,.  
185 1.00,.  ,.  ,4.00
186 1.00,.  ,.  ,.  
187 .  ,2.00,3.00,4.00
188 .  ,2.00,3.00,.  
189 .  ,2.00,.  ,4.00
190 .  ,2.00,.  ,.  
191 .  ,.  ,3.00,4.00
192 .  ,.  ,3.00,.  
193 .  ,.  ,.  ,4.00
194 .  ,.  ,.  ,.  
195
196 Table: Data List
197 start,end,count
198 07/22/2007,10/06/2007,321
199 07/14/1789,08/26/1789,4
200 01/01/1972,12/31/1999,682
201
202 Table: Data List
203 x,y
204 1,2
205 3,4
206 5,6
207 7,8
208 9,0
209 EOF
210 if [ $? -ne 0 ] ; then fail ; fi
211
212 pass;