tests: Convert GET DATA /TYPE=TXT tests to use Autotest.
[pspp] / tests / language / data-io / get-data.at
1 at_BANNER([GET DATA /TYPE=TXT])
2
3 dnl These tests exercise features of GET DATA /TYPE=TXT that
4 dnl it has in common with DATA LIST, using tests drawn from
5 dnl DATA LIST.
6
7 AT_SETUP([GET DATA /TYPE=TXT with explicit delimiters])
8 AT_DATA([get-data.sps], [dnl
9 get data /type=txt /file=inline /delimiters="|X"
10  /variables=A f7.2 B f7.2 C f7.2 D f7.2.
11 begin data.
12 1|23X45|2.03
13 2X22|34|23|
14 3|34|34X34
15 end data.
16
17 list.
18 ])
19 AT_CHECK([pspp -o pspp.csv get-data.sps])
20 AT_CHECK([cat pspp.csv], [0], [dnl
21 Table: Data List
22 A,B,C,D
23 1.00,23.00,45.00,2.03
24 2.00,22.00,34.00,23.00
25 3.00,34.00,34.00,34.00
26 ])
27 AT_CLEANUP
28
29 AT_SETUP([GET DATA /TYPE=TXT with FIRSTCASE])
30 AT_DATA([get-data.sps], [dnl
31 get data /type=txt /file=inline /delimiters=', ' /delcase=variables 4
32  /firstcase=2 /variables=A f7.2 B f7.2 C f7.2 D f7.2.
33 begin data.
34 # This record is ignored.
35 ,1,2,3
36 ,4,,5
37 6
38 7,
39 8 9
40 0,1,,,
41 ,,,,
42 2
43
44 3
45 4
46 5
47 end data.
48 list.
49 ])
50 AT_CHECK([pspp -o pspp.csv get-data.sps])
51 AT_CHECK([cat pspp.csv], [0], [dnl
52 Table: Data List
53 A,B,C,D
54 .  ,1.00,2.00,3.00
55 .  ,4.00,.  ,5.00
56 6.00,7.00,.  ,8.00
57 9.00,.00,1.00,.  @&t@
58 .  ,.  ,.  ,.  @&t@
59 .  ,.  ,.  ,2.00
60 .  ,3.00,4.00,5.00
61 ])
62 AT_CLEANUP
63
64 AT_SETUP([GET DATA /TYPE=TXT with FIRSTCASE and tab delimiter])
65 AT_DATA([get-data.sps], [dnl
66 get data /type=txt /file=inline /delimiters='\t' /delcase=variables 4
67  /firstcase=3 /variables=A f7.2 B f7.2 C f7.2 D f7.2.
68 begin data.
69 # These records
70 # are skipped.
71 1       2       3       4
72 1       2       3       @&t@
73 1       2               4
74 1       2               @&t@
75 1               3       4
76 1               3       @&t@
77 1                       4
78 1                       @&t@
79         2       3       4
80         2       3       @&t@
81         2               4
82         2               @&t@
83                 3       4
84                 3       @&t@
85                         4
86                         @&t@
87 end data.
88 list.
89 ])
90 AT_CHECK([pspp -o pspp.csv get-data.sps])
91 AT_CHECK([cat pspp.csv], [0], [dnl
92 Table: Data List
93 A,B,C,D
94 1.00,2.00,3.00,4.00
95 1.00,2.00,3.00,.  @&t@
96 1.00,2.00,.  ,4.00
97 1.00,2.00,.  ,.  @&t@
98 1.00,.  ,3.00,4.00
99 1.00,.  ,3.00,.  @&t@
100 1.00,.  ,.  ,4.00
101 1.00,.  ,.  ,.  @&t@
102 .  ,2.00,3.00,4.00
103 .  ,2.00,3.00,.  @&t@
104 .  ,2.00,.  ,4.00
105 .  ,2.00,.  ,.  @&t@
106 .  ,.  ,3.00,4.00
107 .  ,.  ,3.00,.  @&t@
108 .  ,.  ,.  ,4.00
109 .  ,.  ,.  ,.  @&t@
110 ])
111 AT_CLEANUP
112
113 AT_SETUP([GET DATA /TYPE=TXT with multiple records per case])
114 AT_DATA([get-data.sps], [dnl
115 get data /type=txt /file=inline /arrangement=fixed /fixcase=3 /variables=
116         /1 start 0-19 adate
117         /2 end 0-19 adate
118         /3 count 0-2 f.
119 begin data.
120 07-22-2007
121 10-06-2007
122 321
123 07-14-1789
124 08-26-1789
125 4
126 01-01-1972
127 12-31-1999
128 682
129 end data.
130 list.
131 ])
132 AT_CHECK([pspp -o pspp.csv get-data.sps])
133 AT_CHECK([cat pspp.csv], [0], [dnl
134 Table: Data List
135 start,end,count
136 07/22/2007,10/06/2007,321
137 07/14/1789,08/26/1789,4
138 01/01/1972,12/31/1999,682
139 ])
140 AT_CLEANUP
141
142 AT_SETUP([GET DATA /TYPE=TXT with empty trailing record])
143 AT_DATA([get-data.sps], [dnl
144 get data /type=txt /file=inline /arrangement=fixed /fixcase=2 /variables=
145         /1 x 0 f 
146            y 1 f.
147 begin data.
148 12
149
150 34
151
152 56
153
154 78
155
156 90
157
158 end data.
159 list.
160 ])
161 AT_CHECK([pspp -o pspp.csv get-data.sps])
162 AT_CHECK([cat pspp.csv], [0], [dnl
163 Table: Data List
164 x,y
165 1,2
166 3,4
167 5,6
168 7,8
169 9,0
170 ])
171 AT_CLEANUP
172
173 dnl This test is a copy of an example given in the manual
174 dnl in doc/files.texi.
175 AT_SETUP([GET DATA /TYPE=TXT password example])
176 AT_DATA([passwd.data], [dnl
177 root:$1$nyeSP5gD$pDq/:0:0:,,,:/root:/bin/bash
178 blp:$1$BrP/pFg4$g7OG:1000:1000:Ben Pfaff,,,:/home/blp:/bin/bash
179 john:$1$JBuq/Fioq$g4A:1001:1001:John Darrington,,,:/home/john:/bin/bash
180 jhs:$1$D3li4hPL$88X1:1002:1002:Jason Stover,,,:/home/jhs:/bin/csh
181 ])
182 AT_DATA([passwd.sps], [dnl
183 GET DATA /TYPE=TXT /FILE='passwd.data' /DELIMITERS=':'
184         /VARIABLES=username A20
185                    password A40
186                    uid F10
187                    gid F10
188                    gecos A40
189                    home A40
190                    shell A40.
191 LIST.
192 ])
193 AT_CHECK([pspp -o pspp.csv passwd.sps])
194 AT_CHECK([cat pspp.csv], [0], [dnl
195 Table: Data List
196 username,password,uid,gid,gecos,home,shell
197 root                ,$1$nyeSP5gD$pDq/                        ,0,0,",,,                                     ",/root                                   ,/bin/bash                               @&t@
198 blp                 ,$1$BrP/pFg4$g7OG                        ,1000,1000,"Ben Pfaff,,,                            ",/home/blp                               ,/bin/bash                               @&t@
199 john                ,$1$JBuq/Fioq$g4A                        ,1001,1001,"John Darrington,,,                      ",/home/john                              ,/bin/bash                               @&t@
200 jhs                 ,$1$D3li4hPL$88X1                        ,1002,1002,"Jason Stover,,,                         ",/home/jhs                               ,/bin/csh                                @&t@
201 ])
202 AT_CLEANUP
203
204 dnl This test is a copy of an example given in the manual
205 dnl in doc/files.texi.
206 AT_SETUP([GET DATA /TYPE=TXT cars example])
207 AT_DATA([cars.data], [dnl
208 model   year    mileage price   type    age
209 Civic   2002    29883   15900   Si      2
210 Civic   2003    13415   15900   EX      1
211 Civic   1992    107000  3800    n/a     12
212 Accord  2002    26613   17900   EX      1
213 ])
214 AT_DATA([cars.sps], [dnl
215 GET DATA /TYPE=TXT /FILE='cars.data' /DELIMITERS=' ' /FIRSTCASE=2
216         /VARIABLES=model A8
217                    year F4
218                    mileage F6
219                    price F5
220                    type A4
221                    age F2.
222 LIST.
223
224 GET DATA /TYPE=TXT /FILE='cars.data' /ARRANGEMENT=FIXED /FIRSTCASE=2
225         /VARIABLES=model 0-7 A
226                    year 8-15 F
227                    mileage 16-23 F
228                    price 24-31 F
229                    type 32-39 A
230                    age 40-47 F.
231 LIST.
232 ])
233 AT_CHECK([pspp -o pspp.csv cars.sps])
234 AT_CHECK([cat pspp.csv], [0], [dnl
235 Table: Data List
236 model,year,mileage,price,type,age
237 Civic   ,2002,29883,15900,Si  ,2
238 Civic   ,2003,13415,15900,EX  ,1
239 Civic   ,1992,107000,3800,n/a ,12
240 Accord  ,2002,26613,17900,EX  ,1
241
242 Table: Data List
243 model,year,mileage,price,type,age
244 Civic   ,2002,29883,15900,Si      ,2
245 Civic   ,2003,13415,15900,EX      ,1
246 Civic   ,1992,107000,3800,n/a     ,12
247 Accord  ,2002,26613,17900,EX      ,1
248 ])
249 AT_CLEANUP
250
251 dnl This test is a copy of an example given in the manual
252 dnl in doc/files.texi.
253 AT_SETUP([GET DATA /TYPE=TXT pets example])
254 AT_DATA([pets.data], [dnl
255 'Pet''s Name', "Age", "Color", "Date Received", "Price", "Height", "Type"
256 , (Years), , , (Dollars), ,
257 "Rover", 4.5, Brown, "12 Feb 2004", 80, '1''4"', "Dog"
258 "Charlie", , Gold, "5 Apr 2007", 12.3, "3""", "Fish"
259 "Molly", 2, Black, "12 Dec 2006", 25, '5"', "Cat"
260 "Gilly", , White, "10 Apr 2007", 10, "3""", "Guinea Pig"
261 ])
262 AT_DATA([pets.sps], [dnl
263 GET DATA /TYPE=TXT /FILE='pets.data' /DELIMITERS=', ' /QUALIFIER='''"' /ESCAPE
264         /FIRSTCASE=3
265         /VARIABLES=name A10
266                    age F3.1
267                    color A5
268                    received EDATE10
269                    price F5.2
270                    height a5
271                    type a10.
272 LIST.
273 ])
274 AT_CHECK([pspp -o pspp.csv pets.sps])
275 AT_CHECK([cat pspp.csv], [0], [dnl
276 Table: Data List
277 name,age,color,received,price,height,type
278 Rover     ,4.5,Brown,12.02.2004,80.00,"1'4"" ",Dog       @&t@
279 Charlie   ,. ,Gold ,05.04.2007,12.30,"3""   ",Fish      @&t@
280 Molly     ,2.0,Black,12.12.2006,25.00,"5""   ",Cat       @&t@
281 Gilly     ,. ,White,10.04.2007,10.00,"3""   ",Guinea Pig
282 ])
283 AT_CLEANUP
284
285 AT_SETUP([GET DATA /TYPE=TXT with IMPORTCASES])
286 AT_CHECK([$PERL > test.data <<'EOF'
287 for ($i = 1; $i <= 100; $i++) {
288     printf "%02d\n", $i;
289 }
290 EOF
291 ])
292 AT_DATA([get-data.sps], [dnl
293 get data /type=txt /file='test.data' /importcases=first 10 /variables x f8.0.
294 list.
295
296 get data /type=txt /file='test.data' /importcases=percent 1 /variables x f8.0.
297 list.
298
299 get data /type=txt /file='test.data' /importcases=percent 35 /variables x f8.0.
300 list.
301
302 get data /type=txt /file='test.data' /importcases=percent 95 /variables x f8.0.
303 list.
304
305 get data /type=txt /file='test.data' /importcases=percent 100 /variables x f8.0.
306 list.
307 ])
308 AT_CHECK([pspp -o pspp.csv get-data.sps])
309 AT_CHECK([cat pspp.csv], [0], [dnl
310 Table: Data List
311 x
312 1
313 2
314 3
315 4
316 5
317 6
318 7
319 8
320 9
321 10
322
323 Table: Data List
324 x
325 1
326 2
327
328 Table: Data List
329 x
330 1
331 2
332 3
333 4
334 5
335 6
336 7
337 8
338 9
339 10
340 11
341 12
342 13
343 14
344 15
345 16
346 17
347 18
348 19
349 20
350 21
351 22
352 23
353 24
354 25
355 26
356 27
357 28
358 29
359 30
360 31
361 32
362 33
363 34
364 35
365 36
366
367 Table: Data List
368 x
369 1
370 2
371 3
372 4
373 5
374 6
375 7
376 8
377 9
378 10
379 11
380 12
381 13
382 14
383 15
384 16
385 17
386 18
387 19
388 20
389 21
390 22
391 23
392 24
393 25
394 26
395 27
396 28
397 29
398 30
399 31
400 32
401 33
402 34
403 35
404 36
405 37
406 38
407 39
408 40
409 41
410 42
411 43
412 44
413 45
414 46
415 47
416 48
417 49
418 50
419 51
420 52
421 53
422 54
423 55
424 56
425 57
426 58
427 59
428 60
429 61
430 62
431 63
432 64
433 65
434 66
435 67
436 68
437 69
438 70
439 71
440 72
441 73
442 74
443 75
444 76
445 77
446 78
447 79
448 80
449 81
450 82
451 83
452 84
453 85
454 86
455 87
456 88
457 89
458 90
459 91
460 92
461 93
462 94
463 95
464 96
465
466 Table: Data List
467 x
468 1
469 2
470 3
471 4
472 5
473 6
474 7
475 8
476 9
477 10
478 11
479 12
480 13
481 14
482 15
483 16
484 17
485 18
486 19
487 20
488 21
489 22
490 23
491 24
492 25
493 26
494 27
495 28
496 29
497 30
498 31
499 32
500 33
501 34
502 35
503 36
504 37
505 38
506 39
507 40
508 41
509 42
510 43
511 44
512 45
513 46
514 47
515 48
516 49
517 50
518 51
519 52
520 53
521 54
522 55
523 56
524 57
525 58
526 59
527 60
528 61
529 62
530 63
531 64
532 65
533 66
534 67
535 68
536 69
537 70
538 71
539 72
540 73
541 74
542 75
543 76
544 77
545 78
546 79
547 80
548 81
549 82
550 83
551 84
552 85
553 86
554 87
555 88
556 89
557 90
558 91
559 92
560 93
561 94
562 95
563 96
564 97
565 98
566 99
567 100
568 ])
569 AT_CLEANUP