GET DATA /TYPE=TXT: Remove obsolete IMPORTCASES subcommand.
[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 get data /type=txt /file='test.data' /importcase=percent 1 /variables x f8.0.
299 get data /type=txt /file='test.data' /importcase=percent 35 /variables x f8.0.
300 get data /type=txt /file='test.data' /importcase=percent 95 /variables x f8.0.
301 get data /type=txt /file='test.data' /importcase=percent 100 /variables x f8.0.
302 ])
303 AT_CHECK([pspp -O format=csv get-data.sps], [0], [dnl
304 get-data.sps:1: warning: GET DATA: Ignoring obsolete IMPORTCASES subcommand.  (N OF CASES or SAMPLE may be used to substitute.)
305
306 get-data.sps:2: warning: GET DATA: Ignoring obsolete IMPORTCASES subcommand.  (N OF CASES or SAMPLE may be used to substitute.)
307
308 get-data.sps:3: warning: GET DATA: Ignoring obsolete IMPORTCASES subcommand.  (N OF CASES or SAMPLE may be used to substitute.)
309
310 get-data.sps:4: warning: GET DATA: Ignoring obsolete IMPORTCASES subcommand.  (N OF CASES or SAMPLE may be used to substitute.)
311
312 get-data.sps:5: warning: GET DATA: Ignoring obsolete IMPORTCASES subcommand.  (N OF CASES or SAMPLE may be used to substitute.)
313 ])
314 AT_CLEANUP
315
316 AT_SETUP([GET DATA /TYPE=TXT with ENCODING subcommand])
317 AT_CHECK([i18n-test supports_encodings UTF-8 ISO-8859-1])
318 AT_DATA([get-data.sps], [dnl
319 set locale='utf-8'
320 get data /type=txt /file='data.txt' /encoding='iso-8859-1'
321   /delimiters="," /variables=s a8.
322 list.
323 ])
324 printf '\351' > data.txt        # é in ISO-8859-1.
325 AT_CHECK([pspp -o pspp.csv get-data.sps])
326 AT_CHECK([cat pspp.csv], [0], [dnl
327 Table: Data List
328 s
329 é      @&t@
330 ])
331 AT_CLEANUP