GET DATA: Improve coding style and tests.
[pspp] / tests / language / data-io / get-data.at
1 AT_BANNER([GET DATA])
2
3 AT_SETUP([GET DATA syntax errors])
4 AT_DATA([get-data.sps], [dnl
5 GET DATA **.
6 GET DATA / **.
7 GET DATA /TYPE **.
8
9 GET DATA /TYPE=TXT **.
10 GET DATA /TYPE=TXT/ **.
11 GET DATA /TYPE=TXT/FILE **.
12 GET DATA /TYPE=TXT/FILE='x.txt' **.
13 GET DATA /TYPE=TXT/FILE='x.txt' /ENCODING=**.
14 GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=**.
15 GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /ARRANGEMENT=DELIMITED.
16 GET DATA /TYPE=TXT/FILE='x.txt' /FIRSTCASE=**.
17 GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /DELCASE=LINE.
18 GET DATA /TYPE=TXT/FILE='x.txt' /DELCASE=VARIABLES **.
19 GET DATA /TYPE=TXT/FILE='x.txt' /DELCASE=**.
20 GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=DELIMITED /FIXCASE=1.
21 GET DATA /TYPE=TXT/FILE='x.txt' /FIXCASE=**.
22 GET DATA /TYPE=TXT/FILE='x.txt' /IMPORTCASES=FIRST **.
23 GET DATA /TYPE=TXT/FILE='x.txt' /IMPORTCASES=PERCENT **.
24 GET DATA /TYPE=TXT/FILE='x.txt' /IMPORTCASES=ALL.
25 GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /DELIMITERS=' '.
26 GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /QUALIFIER='"'.
27 GET DATA /TYPE=TXT/FILE='x.txt' /QUALIFIER='"' + "'".
28 GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /VARIABLES / **.
29 GET DATA /TYPE=TXT/FILE='x.txt' /VARIABLES **.
30 GET DATA /TYPE=TXT/FILE='x.txt' /VARIABLES a_very_long_name_that_exceeds_the_64_byte_limit_for_variable_names.
31 GET DATA /TYPE=TXT/FILE='x.txt' /VARIABLES x **.
32 GET DATA /TYPE=TXT/FILE='x.txt' /VARIABLES x F1.2.
33 GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /VARIABLES x **.
34 GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /VARIABLES x 1-5 **.
35 GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /VARIABLES x 1-5 FOO.
36 GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /VARIABLES x 1-5 DATE.
37 GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /VARIABLES x 1-5 DOLLAR1.2.
38 GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /VARIABLES x 1-5 F x 6-10 F.
39
40 GET DATA /TYPE=PSQL **.
41 GET DATA /TYPE=PSQL/ **.
42 GET DATA /TYPE=PSQL/CONNECT **.
43 GET DATA /TYPE=PSQL/CONNECT='db'/ASSUMEDSTRWIDTH=**.
44 GET DATA /TYPE=PSQL/CONNECT='db'/BSIZE=**.
45 GET DATA /TYPE=PSQL/CONNECT='db'/SQL=**.
46
47 GET DATA /TYPE=GNM **.
48 GET DATA /TYPE=GNM/ **.
49 GET DATA /TYPE=GNM/FILE **.
50 GET DATA /TYPE=GNM/FILE= **.
51 GET DATA /TYPE=GNM/FILE='x.gnumeric'/ASSUMEDSTRWIDTH=**.
52 GET DATA /TYPE=GNM/FILE='x.gnumeric'/SHEET=NAME **.
53 GET DATA /TYPE=GNM/FILE='x.gnumeric'/SHEET=INDEX **.
54 GET DATA /TYPE=GNM/FILE='x.gnumeric'/SHEET=**.
55 GET DATA /TYPE=GNM/FILE='x.gnumeric'/CELLRANGE=RANGE **.
56 GET DATA /TYPE=GNM/FILE='x.gnumeric'/CELLRANGE=**.
57 GET DATA /TYPE=GNM/FILE='x.gnumeric'/READNAMES=**.
58 GET DATA /TYPE=GNM/FILE='x.gnumeric'/ **.
59 ])
60 AT_DATA([insert.sps], [dnl
61 INSERT FILE='get-data.sps' ERROR=IGNORE.
62 ])
63 AT_CHECK([pspp -x compatible --testing-mode -O format=csv insert.sps], [1], [dnl
64 "get-data.sps:1.10-1.11: error: GET DATA: Syntax error expecting `/TYPE='.
65     1 | GET DATA **.
66       |          ^~"
67
68 "get-data.sps:2.10-2.13: error: GET DATA: Syntax error expecting `/TYPE='.
69     2 | GET DATA / **.
70       |          ^~~~"
71
72 "get-data.sps:3.10-3.17: error: GET DATA: Syntax error expecting `/TYPE='.
73     3 | GET DATA /TYPE **.
74       |          ^~~~~~~~"
75
76 "get-data.sps:5.20-5.21: error: GET DATA: Syntax error expecting `/FILE='.
77     5 | GET DATA /TYPE=TXT **.
78       |                    ^~"
79
80 "get-data.sps:6.19-6.22: error: GET DATA: Syntax error expecting `/FILE='.
81     6 | GET DATA /TYPE=TXT/ **.
82       |                   ^~~~"
83
84 "get-data.sps:7.19-7.26: error: GET DATA: Syntax error expecting `/FILE='.
85     7 | GET DATA /TYPE=TXT/FILE **.
86       |                   ^~~~~~~~"
87
88 "get-data.sps:8.33-8.34: error: GET DATA: Syntax error expecting `/'.
89     8 | GET DATA /TYPE=TXT/FILE='x.txt' **.
90       |                                 ^~"
91
92 "get-data.sps:9.43-9.44: error: GET DATA: Syntax error expecting string.
93     9 | GET DATA /TYPE=TXT/FILE='x.txt' /ENCODING=**.
94       |                                           ^~"
95
96 "get-data.sps:10.46-10.47: error: GET DATA: Syntax error expecting FIXED or DELIMITED.
97    10 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=**.
98       |                                              ^~"
99
100 get-data.sps:11: error: GET DATA: FIXED and DELIMITED arrangements are mutually exclusive.
101
102 "get-data.sps:11.53-11.73: note: GET DATA: This syntax requires DELIMITED arrangement.
103    11 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /ARRANGEMENT=DELIMITED.
104       |                                                     ^~~~~~~~~~~~~~~~~~~~~"
105
106 "get-data.sps:11.34-11.50: note: GET DATA: This syntax requires FIXED arrangement.
107    11 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /ARRANGEMENT=DELIMITED.
108       |                                  ^~~~~~~~~~~~~~~~~"
109
110 "get-data.sps:12.44-12.45: error: GET DATA: Syntax error expecting positive integer for FIRSTCASE.
111    12 | GET DATA /TYPE=TXT/FILE='x.txt' /FIRSTCASE=**.
112       |                                            ^~"
113
114 get-data.sps:13: error: GET DATA: FIXED and DELIMITED arrangements are mutually exclusive.
115
116 "get-data.sps:13.53-13.59: note: GET DATA: This syntax requires DELIMITED arrangement.
117    13 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /DELCASE=LINE.
118       |                                                     ^~~~~~~"
119
120 "get-data.sps:13.34-13.50: note: GET DATA: This syntax requires FIXED arrangement.
121    13 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /DELCASE=LINE.
122       |                                  ^~~~~~~~~~~~~~~~~"
123
124 "get-data.sps:14.52-14.53: error: GET DATA: Syntax error expecting integer.
125    14 | GET DATA /TYPE=TXT/FILE='x.txt' /DELCASE=VARIABLES **.
126       |                                                    ^~"
127
128 "get-data.sps:15.42-15.43: error: GET DATA: Syntax error expecting LINE or VARIABLES.
129    15 | GET DATA /TYPE=TXT/FILE='x.txt' /DELCASE=**.
130       |                                          ^~"
131
132 get-data.sps:16: error: GET DATA: FIXED and DELIMITED arrangements are mutually exclusive.
133
134 "get-data.sps:16.57-16.63: note: GET DATA: This syntax requires FIXED arrangement.
135    16 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=DELIMITED /FIXCASE=1.
136       |                                                         ^~~~~~~"
137
138 "get-data.sps:16.34-16.54: note: GET DATA: This syntax requires DELIMITED arrangement.
139    16 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=DELIMITED /FIXCASE=1.
140       |                                  ^~~~~~~~~~~~~~~~~~~~~"
141
142 "get-data.sps:17.42-17.43: error: GET DATA: Syntax error expecting positive integer for FIXCASE.
143    17 | GET DATA /TYPE=TXT/FILE='x.txt' /FIXCASE=**.
144       |                                          ^~"
145
146 "get-data.sps:18.52-18.53: error: GET DATA: Syntax error expecting integer.
147    18 | GET DATA /TYPE=TXT/FILE='x.txt' /IMPORTCASES=FIRST **.
148       |                                                    ^~"
149
150 "get-data.sps:19.54-19.55: error: GET DATA: Syntax error expecting integer.
151    19 | GET DATA /TYPE=TXT/FILE='x.txt' /IMPORTCASES=PERCENT **.
152       |                                                      ^~"
153
154 "get-data.sps:20.34-20.48: warning: GET DATA: Ignoring obsolete IMPORTCASES subcommand.  (N OF CASES or SAMPLE may be used to substitute.).
155    20 | GET DATA /TYPE=TXT/FILE='x.txt' /IMPORTCASES=ALL.
156       |                                  ^~~~~~~~~~~~~~~"
157
158 "get-data.sps:20.49: error: GET DATA: Syntax error expecting `/'.
159    20 | GET DATA /TYPE=TXT/FILE='x.txt' /IMPORTCASES=ALL.
160       |                                                 ^"
161
162 get-data.sps:21: error: GET DATA: FIXED and DELIMITED arrangements are mutually exclusive.
163
164 "get-data.sps:21.53-21.62: note: GET DATA: This syntax requires DELIMITED arrangement.
165    21 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /DELIMITERS=' '.
166       |                                                     ^~~~~~~~~~"
167
168 "get-data.sps:21.34-21.50: note: GET DATA: This syntax requires FIXED arrangement.
169    21 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /DELIMITERS=' '.
170       |                                  ^~~~~~~~~~~~~~~~~"
171
172 get-data.sps:22: error: GET DATA: FIXED and DELIMITED arrangements are mutually exclusive.
173
174 "get-data.sps:22.53-22.61: note: GET DATA: This syntax requires DELIMITED arrangement.
175    22 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /QUALIFIER='""'.
176       |                                                     ^~~~~~~~~"
177
178 "get-data.sps:22.34-22.50: note: GET DATA: This syntax requires FIXED arrangement.
179    22 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /QUALIFIER='""'.
180       |                                  ^~~~~~~~~~~~~~~~~"
181
182 "get-data.sps:23.44-23.52: error: GET DATA: In compatible syntax mode, the QUALIFIER string must contain exactly one character.
183    23 | GET DATA /TYPE=TXT/FILE='x.txt' /QUALIFIER='""' + ""'"".
184       |                                            ^~~~~~~~~"
185
186 "get-data.sps:24.65-24.66: error: GET DATA: Syntax error expecting integer.
187    24 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /VARIABLES / **.
188       |                                                                 ^~"
189
190 "get-data.sps:25.44-25.45: error: GET DATA: Syntax error expecting identifier.
191    25 | GET DATA /TYPE=TXT/FILE='x.txt' /VARIABLES **.
192       |                                            ^~"
193
194 "get-data.sps:26.44-26.109: error: GET DATA: Identifier `a_very_long_name_that_exceeds_the_64_byte_limit_for_variable_names' exceeds 64-byte limit.
195    26 | GET DATA /TYPE=TXT/FILE='x.txt' /VARIABLES a_very_long_name_that_exceeds_the_64_byte_limit_for_variable_names.
196       |                                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
197
198 "get-data.sps:27.46-27.47: error: GET DATA: Syntax error expecting valid format specifier.
199    27 | GET DATA /TYPE=TXT/FILE='x.txt' /VARIABLES x **.
200       |                                              ^~"
201
202 "get-data.sps:28.46-28.49: error: GET DATA: Input format F1.2 specifies 2 decimal places, but width 1 allows at most 1 decimals.
203    28 | GET DATA /TYPE=TXT/FILE='x.txt' /VARIABLES x F1.2.
204       |                                              ^~~~"
205
206 "get-data.sps:29.65-29.66: error: GET DATA: Syntax error expecting integer.
207    29 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /VARIABLES x **.
208       |                                                                 ^~"
209
210 "get-data.sps:30.69-30.70: error: GET DATA: Syntax error expecting valid format specifier.
211    30 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /VARIABLES x 1-5 **.
212       |                                                                     ^~"
213
214 "get-data.sps:31.69-31.71: error: GET DATA: Unknown format type `FOO'.
215    31 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /VARIABLES x 1-5 FOO.
216       |                                                                     ^~~"
217
218 "get-data.sps:32.65-32.72: error: GET DATA: Input format DATE5 specifies width 5, but DATE requires a width between 8 and 40.
219    32 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /VARIABLES x 1-5 DATE.
220       |                                                                 ^~~~~~~~"
221
222 "get-data.sps:33.65-33.77: error: GET DATA: Output format DOLLAR1.2 specifies width 1, but DOLLAR requires a width between 2 and 40.
223    33 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /VARIABLES x 1-5 DOLLAR1.2.
224       |                                                                 ^~~~~~~~~~~~~"
225
226 "get-data.sps:34.71: error: GET DATA: x is a duplicate variable name.
227    34 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /VARIABLES x 1-5 F x 6-10 F.
228       |                                                                       ^"
229
230 "get-data.sps:36.21-36.22: error: GET DATA: Syntax error expecting `/CONNECT='.
231    36 | GET DATA /TYPE=PSQL **.
232       |                     ^~"
233
234 "get-data.sps:37.20-37.23: error: GET DATA: Syntax error expecting `/CONNECT='.
235    37 | GET DATA /TYPE=PSQL/ **.
236       |                    ^~~~"
237
238 "get-data.sps:38.20-38.30: error: GET DATA: Syntax error expecting `/CONNECT='.
239    38 | GET DATA /TYPE=PSQL/CONNECT **.
240       |                    ^~~~~~~~~~~"
241
242 "get-data.sps:39.50-39.51: error: GET DATA: Syntax error expecting integer between 1 and 32767 for ASSUMEDSTRWIDTH.
243    39 | GET DATA /TYPE=PSQL/CONNECT='db'/ASSUMEDSTRWIDTH=**.
244       |                                                  ^~"
245
246 "get-data.sps:40.40-40.41: error: GET DATA: Syntax error expecting positive integer for BSIZE.
247    40 | GET DATA /TYPE=PSQL/CONNECT='db'/BSIZE=**.
248       |                                        ^~"
249
250 "get-data.sps:41.38-41.39: error: GET DATA: Syntax error expecting string.
251    41 | GET DATA /TYPE=PSQL/CONNECT='db'/SQL=**.
252       |                                      ^~"
253
254 "get-data.sps:43.20-43.21: error: GET DATA: Syntax error expecting `/FILE='.
255    43 | GET DATA /TYPE=GNM **.
256       |                    ^~"
257
258 "get-data.sps:44.19-44.22: error: GET DATA: Syntax error expecting `/FILE='.
259    44 | GET DATA /TYPE=GNM/ **.
260       |                   ^~~~"
261
262 "get-data.sps:45.19-45.26: error: GET DATA: Syntax error expecting `/FILE='.
263    45 | GET DATA /TYPE=GNM/FILE **.
264       |                   ^~~~~~~~"
265
266 "get-data.sps:46.26-46.27: error: GET DATA: Syntax error expecting string.
267    46 | GET DATA /TYPE=GNM/FILE= **.
268       |                          ^~"
269
270 "get-data.sps:47.54-47.55: error: GET DATA: Syntax error expecting integer between 1 and 32767 for ASSUMEDSTRWIDTH.
271    47 | GET DATA /TYPE=GNM/FILE='x.gnumeric'/ASSUMEDSTRWIDTH=**.
272       |                                                      ^~"
273
274 "get-data.sps:48.49-48.50: error: GET DATA: Syntax error expecting string.
275    48 | GET DATA /TYPE=GNM/FILE='x.gnumeric'/SHEET=NAME **.
276       |                                                 ^~"
277
278 "get-data.sps:49.50-49.51: error: GET DATA: Syntax error expecting positive integer for INDEX.
279    49 | GET DATA /TYPE=GNM/FILE='x.gnumeric'/SHEET=INDEX **.
280       |                                                  ^~"
281
282 "get-data.sps:50.44-50.45: error: GET DATA: Syntax error expecting NAME or INDEX.
283    50 | GET DATA /TYPE=GNM/FILE='x.gnumeric'/SHEET=**.
284       |                                            ^~"
285
286 "get-data.sps:51.54-51.55: error: GET DATA: Syntax error expecting string.
287    51 | GET DATA /TYPE=GNM/FILE='x.gnumeric'/CELLRANGE=RANGE **.
288       |                                                      ^~"
289
290 "get-data.sps:52.48-52.49: error: GET DATA: Syntax error expecting FULL or RANGE.
291    52 | GET DATA /TYPE=GNM/FILE='x.gnumeric'/CELLRANGE=**.
292       |                                                ^~"
293
294 "get-data.sps:53.48-53.49: error: GET DATA: Syntax error expecting ON or OFF.
295    53 | GET DATA /TYPE=GNM/FILE='x.gnumeric'/READNAMES=**.
296       |                                                ^~"
297
298 "get-data.sps:54.39-54.40: error: GET DATA: Syntax error expecting ASSUMEDSTRWIDTH, SHEET, CELLRANGE, or READNAMES.
299    54 | GET DATA /TYPE=GNM/FILE='x.gnumeric'/ **.
300       |                                       ^~"
301 ])
302 AT_CLEANUP