3ba508c7c44420a0d6b2e0e8a81e866b2e315f77
[pspp] / get-data-txt.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 adate8
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/07,10/06/2007,321
137 ********,08/26/1789,4
138 01/01/72,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 dnl " (fixes Emacs highlighting)
285
286 AT_SETUP([GET DATA /TYPE=TXT with IMPORTCASES])
287 AT_CHECK([$PERL > test.data <<'EOF'
288 for ($i = 1; $i <= 100; $i++) {
289     printf "%02d\n", $i;
290 }
291 EOF
292 ])
293 AT_DATA([get-data.sps], [dnl
294 get data /type=txt /file='test.data' /importcases=first 10 /variables x f8.0.
295 list.
296
297 get data /type=txt /file='test.data' /importcases=percent 1 /variables x f8.0.
298 list.
299
300 get data /type=txt /file='test.data' /importcases=percent 35 /variables x f8.0.
301 list.
302
303 get data /type=txt /file='test.data' /importcases=percent 95 /variables x f8.0.
304 list.
305
306 get data /type=txt /file='test.data' /importcases=percent 100 /variables x f8.0.
307 list.
308 ])
309 AT_CHECK([pspp -o pspp.csv get-data.sps])
310 AT_CHECK([cat pspp.csv], [0], [dnl
311 Table: Data List
312 x
313 1
314 2
315 3
316 4
317 5
318 6
319 7
320 8
321 9
322 10
323
324 Table: Data List
325 x
326 1
327 2
328
329 Table: Data List
330 x
331 1
332 2
333 3
334 4
335 5
336 6
337 7
338 8
339 9
340 10
341 11
342 12
343 13
344 14
345 15
346 16
347 17
348 18
349 19
350 20
351 21
352 22
353 23
354 24
355 25
356 26
357 27
358 28
359 29
360 30
361 31
362 32
363 33
364 34
365 35
366 36
367
368 Table: Data List
369 x
370 1
371 2
372 3
373 4
374 5
375 6
376 7
377 8
378 9
379 10
380 11
381 12
382 13
383 14
384 15
385 16
386 17
387 18
388 19
389 20
390 21
391 22
392 23
393 24
394 25
395 26
396 27
397 28
398 29
399 30
400 31
401 32
402 33
403 34
404 35
405 36
406 37
407 38
408 39
409 40
410 41
411 42
412 43
413 44
414 45
415 46
416 47
417 48
418 49
419 50
420 51
421 52
422 53
423 54
424 55
425 56
426 57
427 58
428 59
429 60
430 61
431 62
432 63
433 64
434 65
435 66
436 67
437 68
438 69
439 70
440 71
441 72
442 73
443 74
444 75
445 76
446 77
447 78
448 79
449 80
450 81
451 82
452 83
453 84
454 85
455 86
456 87
457 88
458 89
459 90
460 91
461 92
462 93
463 94
464 95
465 96
466
467 Table: Data List
468 x
469 1
470 2
471 3
472 4
473 5
474 6
475 7
476 8
477 9
478 10
479 11
480 12
481 13
482 14
483 15
484 16
485 17
486 18
487 19
488 20
489 21
490 22
491 23
492 24
493 25
494 26
495 27
496 28
497 29
498 30
499 31
500 32
501 33
502 34
503 35
504 36
505 37
506 38
507 39
508 40
509 41
510 42
511 43
512 44
513 45
514 46
515 47
516 48
517 49
518 50
519 51
520 52
521 53
522 54
523 55
524 56
525 57
526 58
527 59
528 60
529 61
530 62
531 63
532 64
533 65
534 66
535 67
536 68
537 69
538 70
539 71
540 72
541 73
542 74
543 75
544 76
545 77
546 78
547 79
548 80
549 81
550 82
551 83
552 84
553 85
554 86
555 87
556 88
557 89
558 90
559 91
560 92
561 93
562 94
563 95
564 96
565 97
566 98
567 99
568 100
569 ])
570 AT_CLEANUP
571
572 AT_SETUP([GET DATA /TYPE=TXT with ENCODING subcommand])
573 AT_CHECK([i18n-test supports_encodings UTF-8 ISO-8859-1])
574 AT_DATA([get-data.sps], [dnl
575 set locale='utf-8'
576 get data /type=txt /file='data.txt' /encoding='iso-8859-1'
577   /delimiters="," /variables=s a8.
578 list.
579 ])
580 printf '\351' > data.txt        # é in ISO-8859-1.
581 AT_CHECK([pspp -o pspp.csv get-data.sps])
582 AT_CHECK([cat pspp.csv], [0], [dnl
583 Table: Data List
584 s
585 é      @&t@
586 ])
587 AT_CLEANUP