d86a0000565adaa2fc8dce4fd1467beaefc04766
[pspp] / tests / language / data-io / dataset.at
1 dnl PSPP - a program for statistical analysis.
2 dnl Copyright (C) 2017 Free Software Foundation, Inc.
3 dnl
4 dnl This program is free software: you can redistribute it and/or modify
5 dnl it under the terms of the GNU General Public License as published by
6 dnl the Free Software Foundation, either version 3 of the License, or
7 dnl (at your option) any later version.
8 dnl
9 dnl This program is distributed in the hope that it will be useful,
10 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
11 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 dnl GNU General Public License for more details.
13 dnl
14 dnl You should have received a copy of the GNU General Public License
15 dnl along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 dnl
17 AT_BANNER([DATASET commands])
18
19 AT_SETUP([DATASET COPY])
20 AT_DATA([dataset.pspp], [dnl
21 DATASET NAME initial.
22 DATA LIST NOTABLE /x 1.
23 COMPUTE x = x + 1.
24 DATASET COPY clone.
25 BEGIN DATA.
26 1
27 2
28 3
29 4
30 5
31 END DATA.
32
33 NEW FILE.
34 DATA LIST NOTABLE /y 1.
35 BEGIN DATA.
36 6
37 7
38 8
39 END DATA.
40 LIST.
41 DATASET DISPLAY.
42
43 DATASET ACTIVATE clone.
44 DATASET DISPLAY.
45 LIST.
46
47 DATASET ACTIVATE initial.
48 DATASET DISPLAY.
49 LIST.
50
51 COMPUTE z=y.
52 DATASET COPY clone.
53
54 DATASET ACTIVATE clone.
55 LIST.
56 DATASET COPY clone.
57 DATASET DISPLAY.
58
59 DATASET CLOSE initial.
60 DATASET DISPLAY.
61 ])
62 AT_CHECK([pspp -O format=csv dataset.pspp], [0], [dnl
63 Table: Data List
64 y
65 6
66 7
67 8
68
69 Table: Datasets
70 clone
71 initial (active dataset)
72
73 Table: Datasets
74 clone (active dataset)
75 initial
76
77 Table: Data List
78 x
79 2
80 3
81 4
82 5
83 6
84
85 Table: Datasets
86 clone
87 initial (active dataset)
88
89 Table: Data List
90 y
91 6
92 7
93 8
94
95 Table: Data List
96 y,z
97 6,6.00
98 7,7.00
99 8,8.00
100
101 Table: Datasets
102 unnamed dataset (active dataset)
103 initial
104
105 Table: Datasets
106 unnamed dataset (active dataset)
107 ])
108 AT_CLEANUP
109
110 AT_SETUP([DATASET DECLARE])
111 AT_DATA([dataset.pspp], [dnl
112 DATASET DECLARE second.
113 DATASET DISPLAY.
114 DATA LIST NOTABLE/x 1.
115 BEGIN DATA.
116 1
117 END DATA.
118 LIST.
119 DATASET ACTIVATE second.
120 DATASET DISPLAY.
121 LIST.
122 ])
123 AT_CHECK([pspp -O format=csv dataset.pspp], [1], [dnl
124 Table: Datasets
125 unnamed dataset (active dataset)
126 second
127
128 Table: Data List
129 x
130 1
131
132 Table: Datasets
133 second (active dataset)
134
135 "dataset.pspp:10.1-10.4: error: LIST: LIST is allowed only after the active dataset has been defined.
136    10 | LIST.
137       | ^~~~"
138 ])
139 AT_CLEANUP
140
141 AT_SETUP([DATASET NAME deletes duplicate name])
142 AT_DATA([dataset.pspp], [dnl
143 DATASET NAME a.
144 DATASET DECLARE b.
145 DATASET DECLARE c.
146 DATASET DISPLAY.
147
148 DATASET NAME b.
149 DATASET NAME c.
150 DATASET DISPLAY.
151 ])
152 AT_CHECK([pspp -O format=csv dataset.pspp], [0], [dnl
153 Table: Datasets
154 a (active dataset)
155 b
156 c
157
158 Table: Datasets
159 c (active dataset)
160 ])
161 AT_CLEANUP
162
163 AT_SETUP([DATASET ACTIVATE deletes unnamed dataset])
164 AT_DATA([dataset.pspp], [dnl
165 DATASET DECLARE x.
166 DATASET DISPLAY.
167
168 DATASET ACTIVATE x.
169 DATASET DISPLAY.
170 ])
171 AT_CHECK([pspp -O format=csv dataset.pspp], [0], [dnl
172 Table: Datasets
173 unnamed dataset (active dataset)
174 x
175
176 Table: Datasets
177 x (active dataset)
178 ])
179 AT_CLEANUP
180
181 AT_SETUP([DATASET ACTIVATE executes pending transformations])
182 AT_DATA([dataset.pspp], [dnl
183 DATASET NAME one.
184 DATASET DECLARE another.
185 DATASET DISPLAY.
186
187 DATA LIST NOTABLE /x 1.
188 PRINT/x.
189 DATASET ACTIVATE another.
190 BEGIN DATA.
191 1
192 2
193 3
194 4
195 5
196 END DATA.
197
198 LIST.
199
200 DATASET ACTIVATE one.
201 LIST.
202 ])
203 AT_CHECK([pspp -O format=csv dataset.pspp], [1], [dnl
204 Table: Datasets
205 another
206 one (active dataset)
207
208 1 @&t@
209
210 2 @&t@
211
212 3 @&t@
213
214 4 @&t@
215
216 5 @&t@
217
218 "dataset.pspp:16.1-16.4: error: LIST: LIST is allowed only after the active dataset has been defined.
219    16 | LIST.
220       | ^~~~"
221
222 Table: Data List
223 x
224 1
225 2
226 3
227 4
228 5
229 ])
230 AT_CLEANUP
231
232 AT_SETUP([DATASET CLOSE])
233 AT_DATA([dataset.pspp], [dnl
234 DATASET DISPLAY
235 DATASET CLOSE *.
236 DATASET DISPLAY.
237
238 DATASET NAME this.
239 DATASET DISPLAY.
240 DATASET CLOSE this.
241 DATASET DISPLAY.
242
243 DATASET NAME this.
244 DATASET DISPLAY.
245 DATASET CLOSE *.
246 DATASET DISPLAY.
247
248 DATASET DECLARE that.
249 DATASET DECLARE theother.
250 DATASET DECLARE yetanother.
251 DATASET DISPLAY.
252 DATASET CLOSE ALL.
253 DATASET DISPLAY.
254
255 DATASET NAME this.
256 DATASET DECLARE that.
257 DATASET DECLARE theother.
258 DATASET DECLARE yetanother.
259 DATASET DISPLAY.
260 DATASET CLOSE ALL.
261 DATASET DISPLAY.
262 ])
263 AT_CHECK([pspp -O format=csv dataset.pspp], [0], [dnl
264 Table: Datasets
265 unnamed dataset (active dataset)
266
267 Table: Datasets
268 unnamed dataset (active dataset)
269
270 Table: Datasets
271 this (active dataset)
272
273 Table: Datasets
274 unnamed dataset (active dataset)
275
276 Table: Datasets
277 this (active dataset)
278
279 Table: Datasets
280 unnamed dataset (active dataset)
281
282 Table: Datasets
283 unnamed dataset (active dataset)
284 that
285 theother
286 yetanother
287
288 Table: Datasets
289 unnamed dataset (active dataset)
290
291 Table: Datasets
292 that
293 theother
294 this (active dataset)
295 yetanother
296
297 Table: Datasets
298 unnamed dataset (active dataset)
299 ])
300 AT_CLEANUP
301
302
303
304 dnl The bug for which the following test checks, is apparent only
305 dnl when compiled with -fsanitize=address or run under valgrind
306 AT_SETUP([DATASET heap overflow])
307 AT_DATA([dataset.pspp], [dnl
308 DATASET DECLARE initial.
309 DATA LIST /x 1.
310
311 DATASET COPY subsq.
312
313 DATA LIST /y 2-4.
314 BEGIN DATA.
315 7
316 END DATA.
317
318 DATASET ACTIVATE subsq.
319
320 LIST.
321 ])
322
323 AT_CHECK([pspp -O format=csv dataset.pspp], [0], [dnl
324 Table: Reading 1 record from INLINE.
325 Variable,Record,Columns,Format
326 x,1,1-1,F1.0
327
328 Table: Reading 1 record from INLINE.
329 Variable,Record,Columns,Format
330 y,1,2-4,F3.0
331 ])
332
333 AT_CLEANUP
334
335 AT_SETUP([DATASET syntax errors])
336 AT_DATA([dataset.sps], [dnl
337 DATASET NAME **.
338 DATASET NAME xyzzy WINDOW **.
339
340 DATASET NAME xyzzy.
341 DATASET ACTIVATE **.
342 DATASET ACTIVATE xyzzy WINDOW **.
343
344 DATASET COPY **.
345 DATASET COPY quux WINDOW **.
346
347 DATASET DECLARE **.
348 DATASET DECLARE foo WINDOW **.
349
350 DATASET CLOSE **.
351 ])
352 AT_CHECK([pspp dataset.sps], [1], [dnl
353 dataset.sps:1.14-1.15: error: DATASET NAME: Syntax error expecting identifier.
354     1 | DATASET NAME **.
355       |              ^~
356
357 dataset.sps:2.27-2.28: error: DATASET NAME: Syntax error expecting ASIS or
358 FRONT.
359     2 | DATASET NAME xyzzy WINDOW **.
360       |                           ^~
361
362 dataset.sps:5.18-5.19: error: DATASET ACTIVATE: Syntax error expecting
363 identifier.
364     5 | DATASET ACTIVATE **.
365       |                  ^~
366
367 dataset.sps:6.31-6.32: error: DATASET ACTIVATE: Syntax error expecting ASIS or
368 FRONT.
369     6 | DATASET ACTIVATE xyzzy WINDOW **.
370       |                               ^~
371
372 dataset.sps:8.14-8.15: error: DATASET COPY: Syntax error expecting identifier.
373     8 | DATASET COPY **.
374       |              ^~
375
376 dataset.sps:9.26-9.27: error: DATASET COPY: Syntax error expecting MINIMIZED,
377 FRONT, or HIDDEN.
378     9 | DATASET COPY quux WINDOW **.
379       |                          ^~
380
381 dataset.sps:11.17-11.18: error: DATASET DECLARE: Syntax error expecting
382 identifier.
383    11 | DATASET DECLARE **.
384       |                 ^~
385
386 dataset.sps:12.28-12.29: error: DATASET DECLARE: Syntax error expecting
387 MINIMIZED, FRONT, or HIDDEN.
388    12 | DATASET DECLARE foo WINDOW **.
389       |                            ^~
390
391 dataset.sps:14.15-14.16: error: DATASET CLOSE: Syntax error expecting
392 identifier.
393    14 | DATASET CLOSE **.
394       |               ^~
395 ])
396 AT_CLEANUP