Add copyright and licence notices to files which lack them.
[pspp] / tests / language / data-io / print.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 AT_BANNER([PRINT and WRITE])
17
18 dnl These tests check unusual aspects of the PRINT and WRITE
19 dnl transformations:
20 dnl
21 dnl   - PRINT puts spaces between variables, unless a format
22 dnl     is specified explicitly.
23 dnl
24 dnl   - WRITE doesn't put space between variables.
25 dnl
26 dnl   - PRINT to an external file prefixes each line with a space.
27 dnl
28 dnl   - PRINT EJECT to an external file indicates a formfeed by a "1"
29 dnl     in the first column.
30 dnl
31 dnl   - WRITE writes out spaces for system-missing values, not a period.
32 dnl
33 dnl   - When no output is specified, an empty record is output.
34
35 AT_SETUP([PRINT numeric variables])
36 AT_DATA([print.sps], [dnl
37 data list notable /x y 1-2.
38 begin data.
39 12
40 34
41  6
42 7
43 90
44 end data.
45
46 print /x y.
47 print eject /x y 1-2.
48 print /x '-' y.
49 print.
50
51 execute.
52 ])
53 AT_CHECK([pspp -O format=csv print.sps], [0], [dnl
54 1 2 @&t@
55
56
57
58 12
59
60 1 -2 @&t@
61
62
63
64 3 4 @&t@
65
66
67
68 34
69
70 3 -4 @&t@
71
72
73
74 . 6 @&t@
75
76
77
78 .6
79
80 . -6 @&t@
81
82
83
84 7 . @&t@
85
86
87
88 7.
89
90 7 -. @&t@
91
92
93
94 9 0 @&t@
95
96
97
98 90
99
100 9 -0 @&t@
101
102
103 ])
104 AT_CLEANUP
105
106 AT_SETUP([PRINT string variables])
107 AT_DATA([print.sps], [dnl
108 DATA LIST FREE /s8 (a8) s10 (a10) vl255 (a255) vl258 (a258).
109 BEGIN DATA.
110 12345678
111 AaaaaaaaaZ
112 AbbbbMaryHadALittleLambbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbZ
113 AccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccZ
114 87654321
115 AnnnnnnnnZ
116 AmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmZ
117 AoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooWhyIsItSoZ
118 END DATA.
119
120 print
121         outfile='print.txt'
122         /s10 * vl255 * vl258 *.
123
124 EXECUTE.
125 ])
126 AT_CHECK([pspp -O format=csv print.sps])
127 AT_CHECK([cat print.txt], [0], [dnl
128  AaaaaaaaaZ AbbbbMaryHadALittleLambbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbZ AccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccZ @&t@
129  AnnnnnnnnZ AmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmZ AoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooWhyIsItSoZ @&t@
130 ])
131 AT_CLEANUP
132
133 AT_SETUP([PRINT to file])
134 AT_DATA([print.sps], [dnl
135 data list notable /x y 1-2.
136 begin data.
137 12
138 34
139  6
140 7
141 90
142 end data.
143
144 print outfile='print.out' /x y.
145 print eject outfile='print.out' /x y (f1,f1).
146 print outfile='print.out' /x '-' y.
147 print outfile='print.out'.
148
149 execute.
150 ])
151 AT_CHECK([pspp -O format=csv print.sps])
152 AT_CHECK([cat print.out], [0], [dnl
153  1 2 @&t@
154 112
155  1 -2 @&t@
156  @&t@
157  3 4 @&t@
158 134
159  3 -4 @&t@
160  @&t@
161  . 6 @&t@
162 1.6
163  . -6 @&t@
164  @&t@
165  7 . @&t@
166 17.
167  7 -. @&t@
168  @&t@
169  9 0 @&t@
170 190
171  9 -0 @&t@
172  @&t@
173 ])
174 AT_CLEANUP
175
176 dnl Tests for a bug which crashed when deallocating after a bad PRINT
177 dnl command.
178 AT_SETUP([PRINT crash bug])
179 AT_DATA([print.sps], [dnl
180 DATA LIST LIST NOTABLE /a * b *.
181 BEGIN DATA.
182 1 2
183 3 4
184 END DATA.
185
186 PRINT F8.2
187 LIST.
188 ])
189 AT_CHECK([pspp -O format=csv print.sps], [1], [dnl
190 print.sps:7.7-7.10: error: PRINT: Syntax error at `F8.2': expecting a valid subcommand.
191
192 Table: Data List
193 a,b
194 1.00,2.00
195 3.00,4.00
196 ])
197 AT_CLEANUP
198
199 AT_SETUP([WRITE to file])
200 AT_DATA([write.sps], [dnl
201 data list notable /x y 1-2.
202 begin data.
203 12
204 34
205  6
206 7
207 90
208 end data.
209
210 write outfile='write.out' /x y.
211 write outfile='write.out' /x y (2(f1)).
212 write outfile='write.out' /x '-' y.
213 write outfile='write.out'.
214
215 execute.
216 ])
217 AT_CHECK([pspp -O format=csv write.sps])
218 AT_CHECK([cat write.out], [0], [dnl
219 12
220 12
221 1-2
222
223 34
224 34
225 3-4
226
227  6
228  6
229  -6
230
231 7 @&t@
232 7 @&t@
233 7- @&t@
234
235 90
236 90
237 9-0
238
239 ])
240 AT_CLEANUP
241
242 AT_SETUP([PRINT overwrites file])
243 AT_DATA([output.txt], [abcdef
244 ])
245 AT_DATA([print.sps], [dnl
246 DATA LIST NOTABLE/x 1.
247 BEGIN DATA.
248 5
249 END DATA.
250 PRINT OUTFILE='output.txt'/x.
251 EXECUTE.
252 ])
253 AT_CHECK([pspp -O format=csv print.sps])
254 AT_CHECK([cat output.txt], [0], [ 5 @&t@
255 ])
256 AT_CLEANUP
257
258 AT_SETUP([PRINT overwrites file atomically])
259 AT_DATA([output.txt], [abcdef
260 ])
261 AT_DATA([print.sps],
262 [[DATA LIST NOTABLE/x 1.
263 BEGIN DATA.
264 5
265 END DATA.
266 PRINT OUTFILE='output.txt'/x.
267 HOST COMMAND=['kill -TERM $PPID'].
268 ]])
269 AT_CHECK([pspp -O format=csv print.sps], [143], [], [ignore])
270 AT_CHECK([cat output.txt], [0], [abcdef
271 ])
272 AT_CHECK(
273   [for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done])
274 AT_CLEANUP
275
276 AT_SETUP([PRINT to same file being read])
277 AT_DATA([data.txt], [5
278 ])
279 AT_DATA([print.sps], [dnl
280 DATA LIST FILE='data.txt' NOTABLE/x 1.
281 COMPUTE y = x + 1.
282 PRINT OUTFILE='data.txt'/y.
283 EXECUTE.
284 ])
285 AT_CHECK([pspp -O format=csv print.sps])
286 AT_CHECK([cat data.txt], [0], [     6.00 @&t@
287 ])
288 AT_CHECK(
289   [for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done])
290 AT_CLEANUP
291
292 AT_SETUP([PRINT to special file])
293 AT_SKIP_IF([test ! -c /dev/null])
294 AT_CHECK([ln -s /dev/null foo.out || exit 77])
295 AT_SKIP_IF([test ! -c foo.out])
296 AT_DATA([print.sps], [dnl
297 DATA LIST NOTABLE /x 1.
298 BEGIN DATA.
299 1
300 2
301 3
302 4
303 5
304 END DATA.
305 PRINT OUTFILE='foo.out'/x.
306 PRINT OUTFILE='foo2.out'/x.
307 EXECUTE.
308 ])
309 AT_CHECK([pspp -O format=csv print.sps])
310 AT_CHECK([cat foo2.out], [0], [dnl
311  1 @&t@
312  2 @&t@
313  3 @&t@
314  4 @&t@
315  5 @&t@
316 ])
317 ls -l foo.out foo2.out
318 AT_CHECK([test -c foo.out])
319 AT_CLEANUP
320
321 AT_SETUP([PRINT with special line ends])
322 AT_DATA([print.sps], [dnl
323 FILE HANDLE lf   /NAME='lf.txt'   /ENDS=LF.
324 FILE HANDLE crlf /NAME='crlf.txt' /ENDS=CRLF.
325 DATA LIST NOTABLE /x 1.
326 BEGIN DATA.
327 1
328 2
329 3
330 4
331 5
332 END DATA.
333 PRINT OUTFILE=lf/x.
334 PRINT OUTFILE=crlf/x.
335 EXECUTE.
336 ])
337 AT_CHECK([pspp -O format=csv print.sps])
338 AT_CHECK([cat lf.txt], [0], [dnl
339  1 @&t@
340  2 @&t@
341  3 @&t@
342  4 @&t@
343  5 @&t@
344 ])
345 AT_CHECK([tr '\r' R < crlf.txt], [0], [dnl
346  1 R
347  2 R
348  3 R
349  4 R
350  5 R
351 ])
352 AT_CLEANUP