Add copyright and licence notices to files which lack them.
[pspp] / tests / output / ascii.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([ASCII driver -- rendering corner cases])
17
18 AT_SETUP([ASCII driver overwriting single-width text])
19 AT_KEYWORDS([render rendering])
20 AT_DATA([input], [dnl
21 ## overwriting rest of line
22 # plain
23 0 0 0 abc
24 1 0 0 BCD
25 # emphasized over plain
26 0 1 0 efg
27 1 1 1 FGH
28 # plain over emphasized
29 0 2 1 ijk
30 1 2 0 JKL
31 # emphasized over emphasized
32 0 3 1 mno
33 1 3 1 NOP
34
35 ## overwriting partial line
36 # plain
37 0 5 0 abcdef
38 0 5 0 A
39 2 5 0 CDE
40 # emphasized over plain
41 0 6 0 ghijkl
42 0 6 1 G
43 2 6 1 IJK
44 # plain over emphasized
45 0 7 1 mnopqr
46 0 7 0 M
47 2 7 0 OPQ
48 # emphasized over emphasized
49 0 8 1 stuvwx
50 0 8 1 S
51 2 8 1 UVW
52
53 ## overwriting rest of line with double-width characters
54 # plain
55 0 10 0 kakiku
56 2 10 0 きくけ
57 # emphasized over plain
58 0 11 0 kakiku
59 2 11 1 きくけ
60 # plain over emphasized
61 0 12 1 kakiku
62 2 12 0 きくけ
63 # emphasized over emphasized
64 0 13 1 kakiku
65 2 13 1 きくけ
66
67 ## overwriting partial line with double-width characters
68 # plain
69 0 15 0 kakikukeko
70 0 15 0 か
71 4 15 0 くけ
72 # emphasized over plain
73 0 16 0 kakikukeko
74 0 16 1 か
75 4 16 1 くけ
76 # plain over emphasized
77 0 17 1 kakikukeko
78 0 17 0 か
79 4 17 0 くけ
80 # emphasized over emphasized
81 0 18 1 kakikukeko
82 0 18 1 か
83 4 18 1 くけ
84 ])
85 AT_CHECK([render-test --draw-mode --emph=none input], [0], [dnl
86 aBCD
87 eFGH
88 iJKL
89 mNOP
90
91 AbCDEf
92 GhIJKl
93 MnOPQr
94 StUVWx
95
96 kaきくけ
97 kaきくけ
98 kaきくけ
99 kaきくけ
100
101 かkiくけko
102 かkiくけko
103 かkiくけko
104 かkiくけko
105 ])
106 AT_CHECK([render-test --draw-mode --emph=bold input], [0], [dnl
107 aBCD
108 eF\bFG\bGH\bH
109 i\biJKL
110 m\bmN\bNO\bOP\bP
111
112 AbCDEf
113 G\bGhI\bIJ\bJK\bKl
114 Mn\bnOPQr\br
115 S\bSt\btU\bUV\bVW\bWx\bx
116
117 kaきくけ
118 kaき\bきく\bくけ\b
119 k\bka\baきくけ
120 k\bka\baき\bきく\bくけ\b
121
122 かkiくけko
123\bかkiく\bくけ\bけko
124 かk\bki\biくけk\bko\bo
125\bかk\bki\biく\bくけ\bけk\bko\bo
126 ])
127 AT_CHECK([render-test --draw-mode --emph=underline input], [0], [dnl
128 aBCD
129 e_\bF_\bG_\bH
130 _\biJKL
131 _\bm_\bN_\bO_\bP
132
133 AbCDEf
134 _\bGh_\bI_\bJ_\bKl
135 M_\bnOPQ_\br
136 _\bS_\bt_\bU_\bV_\bW_\bx
137
138 kaきくけ
139 ka_\bき_\bく_\b
140 _\bk_\baきくけ
141 _\bk_\ba_\bき_\bく_\b
142
143 かkiくけko
144 _\bかki_\bく_\bけko
145 か_\bk_\biくけ_\bk_\bo
146 _\bか_\bk_\bi_\bく_\bけ_\bk_\bo
147 ])
148 AT_CLEANUP
149
150 AT_SETUP([ASCII driver overwriting double-width text])
151 AT_KEYWORDS([render rendering])
152 AT_DATA([input], [dnl
153 ## overwrite rest of line, aligned double-width over double-width
154 # plain
155 0 0 0 あいう
156 2 0 0 きくけ
157 # emphasized over plain
158 0 1 0 あいう
159 2 1 1 きくけ
160 # plain over emphasized
161 0 2 1 あいう
162 2 2 0 きくけ
163 # emphasized over emphasized
164 0 3 1 あいう
165 2 3 1 きくけ
166
167 ## overwrite rest of line, misaligned double-width over double-width
168 # plain
169 0 5 0 あいう
170 3 5 0 きくけ
171 # emphasized over plain
172 0 6 0 あいう
173 3 6 1 きくけ
174 # plain over emphasized
175 0 7 1 あいう
176 3 7 0 きくけ
177 # emphasized over emphasized
178 0 8 1 あいう
179 3 8 1 きくけ
180
181 ## overwrite partial line, aligned double-width over double-width
182 # plain
183 0 10 0 あいうえお
184 0 10 0 か
185 4 10 0 くけ
186 # emphasized over plain
187 0 11 0 あいうえお
188 0 11 1 か
189 4 11 1 くけ
190 # plain over emphasized
191 0 12 1 あいうえお
192 0 12 0 か
193 4 12 0 くけ
194 # emphasized over emphasized
195 0 13 1 あいうえお
196 0 13 1 か
197 4 13 1 くけ
198
199 ## overwrite partial line, misaligned double-width over double-width
200 # plain
201 0 15 0 あいうえおさ
202 1 15 0 か
203 5 15 0 くけ
204 # emphasized over plain
205 0 16 0 あいうえおさ
206 1 16 1 か
207 5 16 1 くけ
208 # plain over emphasized
209 0 17 1 あいうえおさ
210 1 17 0 か
211 5 17 0 くけ
212 # emphasized over emphasized
213 0 18 1 あいうえおさ
214 1 18 1 か
215 5 18 1 くけ
216
217 ## overwrite rest of line, aligned single-width over double-width
218 # plain
219 0 20 0 あいう
220 2 20 0 kikuko
221 # emphasized over plain
222 0 21 0 あいう
223 2 21 1 kikuko
224 # plain over emphasized
225 0 22 1 あいう
226 2 22 0 kikuko
227 # emphasized over emphasized
228 0 23 1 あいう
229 2 23 1 kikuko
230
231 ## overwrite rest of line, misaligned single-width over double-width
232 # plain
233 0 25 0 あいう
234 3 25 0 kikuko
235 # emphasized over plain
236 0 26 0 あいう
237 3 26 1 kikuko
238 # plain over emphasized
239 0 27 1 あいう
240 3 27 0 kikuko
241 # emphasized over emphasized
242 0 28 1 あいう
243 3 28 1 kikuko
244
245 ## overwrite partial line, aligned single-width over double-width
246 # plain
247 0 30 0 あいうえお
248 0 30 0 ka
249 4 30 0 kuke
250 # emphasized over plain
251 0 31 0 あいうえお
252 0 31 1 ka
253 4 31 1 kuke
254 # plain over emphasized
255 0 32 1 あいうえお
256 0 32 0 ka
257 4 32 0 kuke
258 # emphasized over emphasized
259 0 33 1 あいうえお
260 0 33 1 ka
261 4 33 1 kuke
262
263 ## overwrite partial line, misaligned single-width over double-width
264 # plain
265 0 35 0 あいうえおさ
266 1 35 0 a
267 5 35 0 kuke
268 # emphasized over plain
269 0 36 0 あいうえおさ
270 1 36 1 a
271 5 36 1 kuke
272 # plain over emphasized
273 0 37 1 あいうえおさ
274 1 37 0 a
275 5 37 0 kuke
276 # emphasized over emphasized
277 0 38 1 あいうえおさ
278 1 38 1 a
279 5 38 1 kuke
280 ])
281 AT_CHECK([render-test --draw-mode --emph=none input], [0], [dnl
282 あきくけ
283 あきくけ
284 あきくけ
285 あきくけ
286
287 あ?きくけ
288 あ?きくけ
289 あ?きくけ
290 あ?きくけ
291
292 かいくけお
293 かいくけお
294 かいくけお
295 かいくけお
296
297 ?か??くけ?さ
298 ?か??くけ?さ
299 ?か??くけ?さ
300 ?か??くけ?さ
301
302 あkikuko
303 あkikuko
304 あkikuko
305 あkikuko
306
307 あ?kikuko
308 あ?kikuko
309 あ?kikuko
310 あ?kikuko
311
312 kaいkukeお
313 kaいkukeお
314 kaいkukeお
315 kaいkukeお
316
317 ?aい?kuke?さ
318 ?aい?kuke?さ
319 ?aい?kuke?さ
320 ?aい?kuke?さ
321 ])
322 AT_CHECK([render-test --draw-mode --emph=bold input], [0], [dnl
323 あきくけ
324 あき\bきく\bくけ\b
325\bあきくけ
326\bあき\bきく\bくけ\b
327
328 あ?きくけ
329 あ?き\bきく\bくけ\b
330\bあ?きくけ
331\bあ?き\bきく\bくけ\b
332
333 かいくけお
334\bかいく\bくけ\bけお
335 かい\bいくけお\b
336\bかい\bいく\bくけ\bけお\b
337
338 ?か??くけ?さ
339 ?か\bか??く\bくけ\bけ?さ
340 ?か??くけ?さ\b
341 ?か\bか??く\bくけ\bけ?さ\b
342
343 あkikuko
344 あk\bki\bik\bku\buk\bko\bo
345\bあkikuko
346\bあk\bki\bik\bku\buk\bko\bo
347
348 あ?kikuko
349 あ?k\bki\bik\bku\buk\bko\bo
350\bあ?kikuko
351\bあ?k\bki\bik\bku\buk\bko\bo
352
353 kaいkukeお
354 k\bka\baいk\bku\buk\bke\beお
355 kaい\bいkukeお\b
356 k\bka\baい\bいk\bku\buk\bke\beお\b
357
358 ?aい?kuke?さ
359 ?a\baい?k\bku\buk\bke\be?さ
360 ?aい\bい?kuke?さ\b
361 ?a\baい\bい?k\bku\buk\bke\be?さ\b
362 ])
363 AT_CHECK([render-test --draw-mode --emph=underline input], [0], [dnl
364 あきくけ
365 あ_\bき_\bく_\b
366 _\bあきくけ
367 _\bあ_\bき_\bく_\b
368
369 あ?きくけ
370 あ?_\bき_\bく_\b
371 _\bあ?きくけ
372 _\bあ?_\bき_\bく_\b
373
374 かいくけお
375 _\bかい_\bく_\bけお
376 か_\bいくけ_\b
377 _\bか_\bい_\bく_\bけ_\b
378
379 ?か??くけ?さ
380 ?_\bか??_\bく_\bけ?さ
381 ?か??くけ?_\b
382 ?_\bか??_\bく_\bけ?_\b
383
384 あkikuko
385 あ_\bk_\bi_\bk_\bu_\bk_\bo
386 _\bあkikuko
387 _\bあ_\bk_\bi_\bk_\bu_\bk_\bo
388
389 あ?kikuko
390 あ?_\bk_\bi_\bk_\bu_\bk_\bo
391 _\bあ?kikuko
392 _\bあ?_\bk_\bi_\bk_\bu_\bk_\bo
393
394 kaいkukeお
395 _\bk_\baい_\bk_\bu_\bk_\beお
396 ka_\bいkuke_\b
397 _\bk_\ba_\bい_\bk_\bu_\bk_\be_\b
398
399 ?aい?kuke?さ
400 ?_\baい?_\bk_\bu_\bk_\be?さ
401 ?a_\bい?kuke?_\b
402 ?_\ba_\bい?_\bk_\bu_\bk_\be?_\b
403 ])
404 AT_CLEANUP
405
406 AT_SETUP([ASCII driver overwriting combining characters])
407 AT_KEYWORDS([render rendering])
408 AT_DATA([input], [dnl
409 ## overwriting rest of line, ordinary over combining
410 # plain
411 0 0 0 àéî
412 1 0 0 xyz
413 # emphasized over plain
414 0 1 0 àéî
415 1 1 1 xyz
416 # plain over emphasized
417 0 2 1 àéî
418 1 2 0 xyz
419 # emphasized over emphasized
420 0 3 1 àéî
421 1 3 1 xyz
422
423 ## overwriting rest of line, combining over ordinary
424 # plain
425 0 5 0 xyz
426 1 5 0 àéî
427 # emphasized over plain
428 0 6 0 xyz
429 1 6 1 àéî
430 # plain over emphasized
431 0 7 1 xyz
432 1 7 0 àéî
433 # emphasized over emphasized
434 0 8 1 xyz
435 1 8 1 àéî
436
437 ## overwriting partial line, ordinary over combining
438 # plain
439 0 10 0 àéîo̧ũẙ
440 0 10 0 a
441 2 10 0 iou
442 # emphasized over plain
443 0 11 0 àéîo̧ũẙ
444 0 11 1 a
445 2 11 1 iou
446 # plain over emphasized
447 0 12 1 àéîo̧ũẙ
448 0 12 0 a
449 2 12 0 iou
450 # emphasized over emphasized
451 0 13 1 àéîo̧ũẙ
452 0 13 1 a
453 2 13 1 iou
454
455 ## overwriting partial line, combining over ordinary
456 # plain
457 0 15 0 aeiouy
458 0 15 0 à
459 2 15 0 îo̧ũ
460 # emphasized over plain
461 0 16 0 aeiouy
462 0 16 1 à
463 2 16 1 îo̧ũ
464 # plain over emphasized
465 0 17 1 aeiouy
466 0 17 0 à
467 2 17 0 îo̧ũ
468 # emphasized over emphasized
469 0 18 1 aeiouy
470 0 18 1 à
471 2 18 1 îo̧ũ
472 ])
473 AT_CHECK([render-test --draw-mode --emph=none input], [0], [dnl
474 àxyz
475 àxyz
476 àxyz
477 àxyz
478
479 xàéî
480 xàéî
481 xàéî
482 xàéî
483
484 aéiouẙ
485 aéiouẙ
486 aéiouẙ
487 aéiouẙ
488
489 àeîo̧ũy
490 àeîo̧ũy
491 àeîo̧ũy
492 àeîo̧ũy
493 ])
494 AT_CHECK([render-test --draw-mode --emph=bold input], [0], [dnl
495 àxyz
496 àx\bxy\byz\bz
497 a\bàxyz
498 a\bàx\bxy\byz\bz
499
500 xàéî
501 xa\bàe\béi\b
502 x\bxàéî
503 x\bxa\bàe\béi\b
504
505 aéiouẙ
506 a\baéi\bio\bou\buẙ
507 ae\béiouy\b
508 a\bae\béi\bio\bou\buy\b
509
510 àeîo̧ũy
511 a\bàei\bîo\bo̧u\bũy
512 àe\beîo̧ũy\by
513 a\bàe\bei\bîo\bo̧u\bũy\by
514 ])
515 AT_CHECK([render-test --draw-mode --emph=underline input], [0], [dnl
516 àxyz
517 à_\bx_\by_\bz
518 _\bàxyz
519 _\bà_\bx_\by_\bz
520
521 xàéî
522 x_\bà_\bé_\b
523 _\bxàéî
524 _\bx_\bà_\bé_\b
525
526 aéiouẙ
527 _\baé_\bi_\bo_\buẙ
528 a_\béiou_\b
529 _\ba_\bé_\bi_\bo_\bu_\b
530
531 àeîo̧ũy
532 _\bàe_\bî_\bo̧_\bũy
533 à_\beîo̧ũ_\by
534 _\bà_\be_\bî_\bo̧_\bũ_\by
535 ])
536 AT_CLEANUP
537
538 AT_SETUP([ASCII driver u8_line_set_length])
539 AT_KEYWORDS([render rendering])
540 AT_DATA([input], [dnl
541 0 0 0 àéî
542 0 1 0 àéî
543 0 2 0 àéî
544 0 3 0 àéî
545 0 4 0 àéî
546 set-length 0 4
547 set-length 1 3
548 set-length 2 2
549 set-length 3 1
550 set-length 4 0
551
552 0 6 0 あい
553 0 7 0 あい
554 0 8 0 あい
555 0 9 0 あい
556 0 10 0 あい
557 0 11 0 あい
558 set-length 6 5
559 set-length 7 4
560 set-length 8 3
561 set-length 9 2
562 set-length 10 1
563 set-length 11 0
564 ])
565 AT_CHECK([render-test --draw-mode input], [0], [dnl
566 àéî
567 àéî
568 àé
569
570
571 あい
572 あい
573 あ?
574
575 ?
576 ])
577 AT_CLEANUP
578
579 AT_SETUP([ASCII driver Unicode box characters])
580 AT_KEYWORDS([render rendering])
581 AT_DATA([input], [3 3
582 1*2 @abc
583 2*1 @d\ne\nf
584 2*1 @g\nh\ni
585 @j
586 1*2 @klm
587 ])
588 AT_CHECK([render-test --box=unicode input], [0], [dnl
589 ╭───┬─╮
590 │abc│d│
591 ├─┬─┤e│
592 │g│j│f│
593 │h├─┴─┤
594 │i│klm│
595 ╰─┴───╯
596 ])
597 AT_CLEANUP
598
599 AT_SETUP([ASCII driver syntax printback])
600 AT_DATA([ascii.sps], [dnl
601 SET PRINTBACK=ON.
602 DATA LIST LIST /x * y * a (a23).
603 BEGIN DATA.
604 1 11 One
605 2 22 Two
606 3 33 Three
607 END DATA.
608
609 REGRESSION
610 /VARIABLES= a
611 /DEPENDENT= x y
612 /STATISTICS=COEFF R ANOVA.
613 ])
614 AT_CHECK([pspp ascii.sps], [0], [dnl
615 SET PRINTBACK=ON.
616
617 DATA LIST LIST /x * y * a (a23).
618
619 Reading free-form data from INLINE.
620 +--------+------+
621 |Variable|Format|
622 #========#======#
623 |x       |F8.0  |
624 |y       |F8.0  |
625 |a       |A23   |
626 +--------+------+
627
628 BEGIN DATA.
629 1 11 One
630 2 22 Two
631 3 33 Three
632 END DATA.
633
634 REGRESSION
635 /VARIABLES= a
636
637 ascii.sps:11: warning: REGRESSION: a is not a numeric variable.  It will not be
638 included in the variable list.
639
640 /DEPENDENT= x y
641 /STATISTICS=COEFF R ANOVA.
642 ])
643
644 AT_CLEANUP
645
646 AT_SETUP([ASCII unicode box chars])
647
648 AT_DATA([uc.sps], [dnl
649 SET FORMAT=F8.4.
650 DATA LIST NOTABLE LIST /x * .
651 BEGIN DATA.
652 1
653 2
654 3
655 END DATA.
656
657 DESCRIPTIVES X.
658 ])
659
660
661 AT_CHECK([pspp -O box=unicode uc.sps], [0], [dnl
662 Valid cases = 3; cases with missing value(s) = 0.
663 ╭────────╥─┬──────┬───────┬───────┬───────╮
664 │Variable║N│ Mean │Std Dev│Minimum│Maximum│
665 ╞════════╬═╪══════╪═══════╪═══════╪═══════╡
666 │x       ║3│2.0000│ 1.0000│ 1.0000│ 3.0000│
667 ╰────────╨─┴──────┴───────┴───────┴───────╯
668 ])
669
670 AT_CLEANUP
671
672 AT_SETUP([ASCII crash on empty line])
673
674 AT_DATA([print.sps], [dnl
675 data list notable /x y 1-2.
676 begin data.
677 12
678 end data.
679
680 print.
681
682 execute.
683 ])
684
685 AT_CHECK([pspp print.sps], [0], [ignore])
686
687 AT_CLEANUP