4a59cf795ad80eecdecf1007c3e005a83009e415
[pspp] / tests / language / data-io / data-list.at
1 AT_BANNER([DATA LIST])
2
3 AT_SETUP([DATA LIST LIST with empty fields])
4 AT_DATA([data-list.pspp], [dnl
5 DATA LIST LIST NOTABLE /A B C (F1.0).
6 BEGIN DATA.
7 ,,
8 ,,3
9 ,2,
10 ,2,3
11 1,,
12 1,,3
13 1,2,
14 1,2,3
15 END DATA.
16
17 LIST.
18 ])
19 AT_CHECK([pspp -O format=csv data-list.pspp], [0], [dnl
20 Table: Data List
21 A,B,C
22 .,.,.
23 .,.,3
24 .,2,.
25 .,2,3
26 1,.,.
27 1,.,3
28 1,2,.
29 1,2,3
30 ])
31 AT_CLEANUP
32
33
34 AT_SETUP([DATA LIST LIST with explicit delimiters])
35 AT_DATA([data-list.pspp], [dnl
36 data list list ('|','X') /A B C D.
37 begin data.
38 1|23X45|2.03x
39 2X22|34|23|
40 3|34|34X34
41 end data.
42
43 list.
44 ])
45 AT_CHECK([pspp -O format=csv data-list.pspp], [0], [dnl
46 Table: Reading free-form data from INLINE.
47 Variable,Format
48 A,F8.0
49 B,F8.0
50 C,F8.0
51 D,F8.0
52
53 data-list.pspp:3.9-3.13: warning: Data for variable D is not valid as format F: Number followed by garbage.
54
55 Table: Data List
56 A,B,C,D
57 1.00,23.00,45.00,.  @&t@
58 2.00,22.00,34.00,23.00
59 3.00,34.00,34.00,34.00
60 ])
61 AT_CLEANUP
62
63 AT_SETUP([DATA LIST FREE with SKIP])
64 AT_DATA([data-list.pspp], [dnl
65 data list free skip=1/A B C D.
66 begin data.
67 # This record is ignored.
68 ,1,2,x
69 ,4,,5
70 6
71 7,
72 8 9
73 0,1 ,,,
74 ,,,,
75 2
76
77 3
78 4
79 5
80 end data.
81 list.
82 ])
83 AT_CHECK([pspp -O format=csv data-list.pspp], [0], [dnl
84 data-list.pspp:4.6: warning: Data for variable D is not valid as format F: Field contents are not numeric.
85
86 Table: Data List
87 A,B,C,D
88 .  ,1.00,2.00,.  @&t@
89 .  ,4.00,.  ,5.00
90 6.00,7.00,8.00,9.00
91 .00,1.00,.  ,.  @&t@
92 .  ,.  ,.  ,.  @&t@
93 2.00,3.00,4.00,5.00
94 ])
95 AT_CLEANUP
96
97 AT_SETUP([DATA LIST LIST with SKIP and tab delimiter])
98 AT_DATA([data-list.pspp], [dnl
99 data list free (tab) skip=2/A B C D.
100 begin data.
101 # These records
102 # are skipped.
103 1       2       3       4
104 1       2       3       @&t@
105 1       2               4
106 1       2               @&t@
107 1               3       4
108 1               3       @&t@
109 1                       4
110 1                       @&t@
111         2       3       4
112         2       3       @&t@
113         2               4
114         2               @&t@
115                 3       4
116                 3       @&t@
117                         4
118                         @&t@
119 end data.
120 list.
121 ])
122 AT_CHECK([pspp -O format=csv data-list.pspp], [0], [dnl
123 Table: Data List
124 A,B,C,D
125 1.00,2.00,3.00,4.00
126 1.00,2.00,3.00,.  @&t@
127 1.00,2.00,.  ,4.00
128 1.00,2.00,.  ,.  @&t@
129 1.00,.  ,3.00,4.00
130 1.00,.  ,3.00,.  @&t@
131 1.00,.  ,.  ,4.00
132 1.00,.  ,.  ,.  @&t@
133 .  ,2.00,3.00,4.00
134 .  ,2.00,3.00,.  @&t@
135 .  ,2.00,.  ,4.00
136 .  ,2.00,.  ,.  @&t@
137 .  ,.  ,3.00,4.00
138 .  ,.  ,3.00,.  @&t@
139 .  ,.  ,.  ,4.00
140 .  ,.  ,.  ,.  @&t@
141 ])
142 AT_CLEANUP
143
144 AT_SETUP([DATA LIST FIXED with multiple records per case])
145 AT_DATA([data-list.pspp], [dnl
146 data list fixed notable
147         /1 start 1-20 (adate)
148         /2 end 1-20 (adate)
149         /3 count 1-3.
150 begin data.
151 07-22-2007
152 10-06-2007
153 x
154 07-14-1789
155 08-26-1789
156 xy
157 01-01-1972
158 12-31-1999
159 682
160 end data.
161 list.
162 ])
163 AT_CHECK([pspp -O format=csv data-list.pspp], [0], [dnl
164 data-list.pspp:8.1-8.3: warning: Data for variable count is not valid as format F: Field contents are not numeric.
165
166 data-list.pspp:11.1-11.3: warning: Data for variable count is not valid as format F: Field contents are not numeric.
167
168 Table: Data List
169 start,end,count
170 07/22/2007,10/06/2007,.
171 07/14/1789,08/26/1789,.
172 01/01/1972,12/31/1999,682
173 ])
174 AT_CLEANUP
175
176 AT_SETUP([DATA LIST FIXED with empty trailing record])
177 AT_DATA([data-list.pspp], [dnl
178 data list fixed notable records=2/x 1 y 2.
179 begin data.
180 12
181
182 34
183
184 56
185
186 78
187
188 90
189
190 end data.
191 list.
192 ])
193 AT_CHECK([pspp -O format=csv data-list.pspp], [0], [dnl
194 Table: Data List
195 x,y
196 1,2
197 3,4
198 5,6
199 7,8
200 9,0
201 ])
202 AT_CLEANUP
203
204 dnl Test that PSPP accepts LF and CR LF as line ends, but
205 dnl treats isolated CR as linear whitespace.
206 AT_SETUP([DATA LIST with various line-ends])
207 AT_DATA([data-list.sps], [dnl
208 data list list notable file='input.txt'/a b c.
209 list.
210 ])
211 printf '1 2 3\n4 5 6\r\n7\r8\r9\r\n10 11 12\n13 14 15 \r\n16\r\r17\r18\n' > input.txt
212 dnl Make sure that input.txt actually received the data that we expect.
213 dnl It might not have, if we're running on a system that translates \n
214 dnl into some other sequence.
215 AT_CHECK([cksum input.txt], [0], [1732021750 50 input.txt
216 ])
217 AT_CHECK([pspp -o pspp.csv data-list.sps])
218 AT_CHECK([cat pspp.csv], [0], [dnl
219 Table: Data List
220 a,b,c
221 1.00,2.00,3.00
222 4.00,5.00,6.00
223 7.00,8.00,9.00
224 10.00,11.00,12.00
225 13.00,14.00,15.00
226 16.00,17.00,18.00
227 ])
228 AT_CLEANUP
229
230 AT_SETUP([DATA LIST properly expands tabs in input])
231 AT_DATA([data-list.sps], [dnl
232 data list notable /X 1-50 (a).
233 begin data.
234         1       12      123     1234    12345    .
235 end data.
236 print /x.
237 print outfile='print.txt' /x.
238 write outfile='write.txt' /x.
239 execute.
240 ])
241 AT_CHECK([sed -n '/12345/l' data-list.sps], [0], [dnl
242 \t1\t12\t123\t1234\t12345    .$
243 ])
244 AT_CHECK([pspp -o pspp.csv data-list.sps])
245 dnl The CSV driver drops leading spaces so they don't appear here:
246 AT_CHECK([cat pspp.csv], [0], [dnl
247 1       12      123     1234    12345    . @&t@
248 ])
249 dnl But they do appear in print.txt.  The PRINT command also puts a space
250 dnl at the beginning of the line and after the variable:
251 AT_CHECK([cat print.txt], [0], [dnl
252          1       12      123     1234    12345    . @&t@
253 ])
254 dnl WRITE doesn't add spaces at the beginning or end of lines:
255 AT_CHECK([cat write.txt], [0], [dnl
256         1       12      123     1234    12345    .
257 ])
258 AT_CLEANUP
259
260 AT_SETUP([DATA LIST FREE and LIST report missing delimiters])
261 AT_DATA([data-list.sps], [dnl
262 DATA LIST FREE NOTABLE/s (a10).
263 LIST.
264 BEGIN DATA.
265 'y'z
266 END DATA.
267 ])
268 AT_CHECK([pspp -O format=csv data-list.sps], [0], [dnl
269 data-list.sps:4: warning: Missing delimiter following quoted string.
270
271 Table: Data List
272 s
273 y         @&t@
274 z         @&t@
275 ])
276 AT_CLEANUP
277
278 AT_SETUP([DATA LIST FREE and LIST assume a width if omitted])
279 AT_DATA([data-list.sps], [dnl
280 DATA LIST FREE TABLE/s (a) d (datetime) f (f).
281 ])
282 AT_CHECK([pspp -O format=csv data-list.sps], [0], [dnl
283 Table: Reading free-form data from INLINE.
284 Variable,Format
285 s,A1
286 d,DATETIME17.0
287 f,F1.0
288 ])
289 AT_CLEANUP