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