14 m4_define([RENDER_WEAVE_6X6],
15 [AT_DATA([input], [6 6 $1
59 m4_define([RENDER_8X8],
60 [AT_DATA([input], [8 8 $1
113 # This input is something of a counterexample, in that it could render
114 # compactly as this if the algorithm for choosing cell widths and
115 # heights were smarter:
134 m4_define([RENDER_8X8_2],
135 [AT_DATA([input], [8 8 $1
154 2*3 @MNOPQ\nRSTUV\nWXYZ0
159 AT_BANNER([output rendering -- no page breaking])
161 AT_SETUP([single cell])
162 AT_KEYWORDS([render rendering])
163 AT_DATA([input], [1 1
166 AT_CHECK([render-test input], [0], [abc
170 AT_SETUP([single cell with border])
171 AT_KEYWORDS([render rendering])
172 AT_DATA([input], [1 1
175 AT_CHECK([render-test input], [0], [dnl
182 AT_SETUP([joined columns])
183 AT_KEYWORDS([render rendering])
184 AT_DATA([input], [2 2
189 AT_CHECK([render-test input], [0], [dnl
198 AT_SETUP([3x3, joined rows and columns])
199 AT_KEYWORDS([render rendering])
200 AT_DATA([input], [3 3
207 AT_CHECK([render-test input], [0], [dnl
218 AT_SETUP([6x6, joined rows and columns])
219 AT_KEYWORDS([render rendering])
221 AT_CHECK([render-test input], [0], [dnl
238 AT_SETUP([3 rows with many joined cells])
239 AT_KEYWORDS([render rendering])
240 AT_CAPTURE_FILE([input])
241 AT_DATA([input], [3 19
242 m4_foreach([x], [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s], [x
244 m4_for([x], [2], [19], [1], [1*2 @x
247 AT_CHECK([render-test input], [0], [dnl
248 a b c d e f g h i j k l m n o p q r s
249 +-+---+---+---+---+---+---+---+---+----+
250 |1| 2| 3| 4| 5| 6| 7| 8| 9| 10|
251 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+
252 | 11| 12| 13| 14| 15| 16| 17| 18| 19|20|
253 +---+---+---+---+---+---+---+---+---+--+
257 AT_SETUP([3 columns with many joined cells])
258 AT_KEYWORDS([render rendering])
259 AT_CAPTURE_FILE([input])
260 AT_DATA([input], [3 19
261 m4_foreach([x], [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s], [x
263 m4_for([x], [2], [19], [1], [1*2 @x\nab\ncd
266 AT_CHECK([render-test --transpose input], [0], [dnl
309 AT_SETUP([joined rows])
310 AT_KEYWORDS([render rendering])
311 AT_DATA([input], [2 2
316 AT_CHECK([render-test input], [0], [dnl
325 dnl This checks for bug #31346, a segmentation fault that surfaced
326 dnl when two or more rows had no unspanned cells and no rules.
327 AT_SETUP([joined rows only, no rules])
328 AT_KEYWORDS([render rendering])
329 AT_DATA([input], [2 2
333 AT_CHECK([render-test input], [0], [dnl
340 AT_SETUP([joined columns only, no rules])
341 AT_KEYWORDS([render rendering])
342 AT_DATA([input], [2 2
346 AT_CHECK([render-test input], [0], [dnl
355 AT_SETUP([5 big narrow cells])
356 AT_KEYWORDS([render rendering])
357 AT_DATA([input], [1 5
358 @This cell has a lot of text but its minimum width is pretty narrow.
359 @This cell also has a lot of text but its minimum width is pretty narrow.
360 @A third cell with a lot of text but a pretty narrow minimum width.
361 @A fourth cell with a lot of text but a pretty narrow minimum width.
362 @A fifth cell with a lot of text but a pretty narrow minimum width.
364 AT_CHECK([render-test input], [0], [dnl
365 +---------------+---------------+--------------+---------------+--------------+
366 |This cell has a| This cell also| A third cell| A fourth cell| A fifth cell|
367 |lot of text but| has a lot of| with a lot of| with a lot of| with a lot of|
368 | its minimum| text but its| text but a| text but a| text but a|
369 |width is pretty| minimum width| pretty narrow| pretty narrow| pretty narrow|
370 | narrow.| is pretty|minimum width.| minimum width.|minimum width.|
372 +---------------+---------------+--------------+---------------+--------------+
376 AT_SETUP([9 big narrow cells])
377 AT_KEYWORDS([render rendering])
378 AT_DATA([input], [1 9
379 @This cell has a lot of text but its minimum width is pretty narrow.
380 @This cell also has a lot of text but its minimum width is pretty narrow.
381 @A third cell with a lot of text but a pretty narrow minimum width.
382 @A fourth cell with a lot of text but a pretty narrow minimum width.
383 @A fifth cell with a lot of text but a pretty narrow minimum width.
384 @A sixth cell with a lot of text but a pretty narrow minimum width.
385 @A seventh cell with a lot of text but a pretty narrow minimum width.
386 @A eighth cell with a lot of text but a pretty narrow minimum width.
387 @A ninth cell with a lot of text but a pretty narrow minimum width.
389 AT_CHECK([render-test input], [0], [dnl
390 +--------+-------+--------+--------+-------+--------+--------+-------+--------+
391 | This| This| A third|A fourth|A fifth| A sixth| A| A| A ninth|
392 |cell has| cell| cell| cell| cell| cell| seventh| eighth| cell|
393 |a lot of| also| with a| with a| with a| with a| cell| cell| with a|
394 |text but| has a| lot of| lot of| lot of| lot of| with a| with a| lot of|
395 | its| lot of|text but|text but| text|text but| lot of| lot of|text but|
396 | minimum| text|a pretty|a pretty| but a|a pretty|text but| text|a pretty|
397 |width is|but its| narrow| narrow| pretty| narrow|a pretty| but a| narrow|
398 | pretty|minimum| minimum| minimum| narrow| minimum| narrow| pretty| minimum|
399 | narrow.| width| width.| width.|minimum| width.| minimum| narrow| width.|
400 | | is| | | width.| | width.|minimum| |
401 | | pretty| | | | | | width.| |
402 | |narrow.| | | | | | | |
403 +--------+-------+--------+--------+-------+--------+--------+-------+--------+
407 AT_SETUP([2 big cells with new-lines])
408 AT_KEYWORDS([render rendering])
409 AT_DATA([input], [1 2
410 @PSPP does not place many restrictions on ordering of commands. The main restriction is that variables must be defined before they are otherwise referenced. This section describes the details of command ordering, but most users will have no need to refer to them. PSPP possesses five internal states, called initial, INPUT PROGRAM, FILE TYPE, transformation, and procedure states.
411 @PSPP includes special support\nfor unknown numeric data values.\nMissing observations are assigned\na special value, called the\n``system‑missing value''. This\n``value'' actually indicates the\nabsence of a value; it\nmeans that the actual\nvalue is unknown.
413 AT_CHECK([render-test input], [0], [dnl
414 +----------------------------------------------------------+------------------+
415 | PSPP does not place many restrictions on ordering of| PSPP includes|
416 | commands. The main restriction is that variables must be| special support|
417 | defined before they are otherwise referenced. This| for unknown|
418 | section describes the details of command ordering, but| numeric data|
419 | most users will have no need to refer to them. PSPP| values.|
420 | possesses five internal states, called initial, INPUT| Missing|
421 | PROGRAM, FILE TYPE, transformation, and procedure states.| observations are|
423 | | a special value,|
425 | | ``system‑missing|
427 | |``value'' actually|
433 | | value is unknown.|
434 +----------------------------------------------------------+------------------+
438 AT_SETUP([8x8 with many 2x2 joins])
439 AT_KEYWORDS([render rendering])
441 AT_CHECK([render-test input], [0],[dnl
467 AT_BANNER([output rendering -- horizontal page breaks])
469 AT_SETUP([breaking row of many small cells])
470 AT_KEYWORDS([render rendering])
471 AT_CAPTURE_FILE([input])
472 AT_DATA([input], [1 50
473 m4_for([x], [1], [50], [1], [@x
475 AT_CHECK([render-test input], [0], [dnl
476 +-+-+-+-+-+-+-+-+-+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
477 |1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|
478 +-+-+-+-+-+-+-+-+-+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
480 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
481 |30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|
482 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
484 AT_CHECK([render-test input -o mb0 --min-break=0], [0], [dnl
485 +-+-+-+-+-+-+-+-+-+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
486 |1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|
487 +-+-+-+-+-+-+-+-+-+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
489 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
490 |30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|
491 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
495 AT_SETUP([breaking row of many small cells, with headers])
496 AT_KEYWORDS([render rendering])
497 AT_CAPTURE_FILE([input])
498 AT_DATA([input], [1 54 2 2
501 m4_for([x], [1], [50], [1], [@x
506 AT_CHECK([render-test input], [0], [dnl
507 +--+--+-+-+-+-+-+-+-+-+-+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
508 |ha|hb|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|hc|hd|
509 +--+--+-+-+-+-+-+-+-+-+-+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
511 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
512 |ha|hb|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|hc|hd|
513 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
515 +--+--+--+--+--+--+--+
516 |ha|hb|48|49|50|hc|hd|
517 +--+--+--+--+--+--+--+
519 AT_CHECK([render-test -o mb0 --min-break=0 input], [0], [dnl
520 +--+--+-+-+-+-+-+-+-+-+-+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
521 |ha|hb|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|hc|hd|
522 +--+--+-+-+-+-+-+-+-+-+-+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
524 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
525 |ha|hb|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|hc|hd|
526 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
528 +--+--+--+--+--+--+--+
529 |ha|hb|48|49|50|hc|hd|
530 +--+--+--+--+--+--+--+
534 AT_SETUP([breaking row of many medium-size cells])
535 AT_KEYWORDS([render rendering])
536 AT_CAPTURE_FILE([input])
537 AT_DATA([input], [1 50
538 m4_for([x], [1], [50], [1], [@cell x
540 AT_CHECK([render-test input], [0], [dnl
541 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
542 |cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|
543 | 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| 11| 12| 13| 14| 15|
544 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
546 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
547 |cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|
548 | 16| 17| 18| 19| 20| 21| 22| 23| 24| 25| 26| 27| 28| 29| 30|
549 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
551 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
552 |cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|
553 | 31| 32| 33| 34| 35| 36| 37| 38| 39| 40| 41| 42| 43| 44| 45|
554 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
556 +----+----+----+----+----+
557 |cell|cell|cell|cell|cell|
558 | 46| 47| 48| 49| 50|
559 +----+----+----+----+----+
561 AT_CHECK([render-test -o mb0 --min-break=0 input], [0], [dnl
562 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+---
563 |cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cel
564 | 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| 11| 12| 13| 14| 15| 1
565 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+---
567 -+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+--
568 l|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|ce
569 6| 17| 18| 19| 20| 21| 22| 23| 24| 25| 26| 27| 28| 29| 30| 31|
570 -+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+--
572 --+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+-
573 ll|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|c
574 32| 33| 34| 35| 36| 37| 38| 39| 40| 41| 42| 43| 44| 45| 46| 47|
575 --+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+-
584 AT_SETUP([breaking row of many medium-size cells, with headers])
585 AT_KEYWORDS([render rendering])
586 AT_CAPTURE_FILE([input])
587 AT_DATA([input], [1 52 1 1
589 m4_for([x], [1], [50], [1], [@cell x
593 AT_CHECK([render-test input], [0], [dnl
594 +----+----+----+----+----+----+----+----+----+----+----+----+
595 header1|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|header2
596 | 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| 11| 12|
597 +----+----+----+----+----+----+----+----+----+----+----+----+
599 +----+----+----+----+----+----+----+----+----+----+----+----+
600 header1|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|header2
601 | 13| 14| 15| 16| 17| 18| 19| 20| 21| 22| 23| 24|
602 +----+----+----+----+----+----+----+----+----+----+----+----+
604 +----+----+----+----+----+----+----+----+----+----+----+----+
605 header1|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|header2
606 | 25| 26| 27| 28| 29| 30| 31| 32| 33| 34| 35| 36|
607 +----+----+----+----+----+----+----+----+----+----+----+----+
609 +----+----+----+----+----+----+----+----+----+----+----+----+
610 header1|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|header2
611 | 37| 38| 39| 40| 41| 42| 43| 44| 45| 46| 47| 48|
612 +----+----+----+----+----+----+----+----+----+----+----+----+
615 header1|cell|cell|header2
619 AT_CHECK([render-test -o mb0 --min-break=0 input], [0], [dnl
620 +----+----+----+----+----+----+----+----+----+----+----+----+--+
621 header1|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|ce|header2
622 | 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| 11| 12| |
623 +----+----+----+----+----+----+----+----+----+----+----+----+--+
625 +--+----+----+----+----+----+----+----+----+----+----+----+----+
626 header1|ll|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|header2
627 |13| 14| 15| 16| 17| 18| 19| 20| 21| 22| 23| 24| 25|
628 +--+----+----+----+----+----+----+----+----+----+----+----+----+
630 +----+----+----+----+----+----+----+----+----+----+----+----+--+
631 header1|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|ce|header2
632 | 26| 27| 28| 29| 30| 31| 32| 33| 34| 35| 36| 37| |
633 +----+----+----+----+----+----+----+----+----+----+----+----+--+
635 +--+----+----+----+----+----+----+----+----+----+----+----+----+
636 header1|ll|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|header2
637 |38| 39| 40| 41| 42| 43| 44| 45| 46| 47| 48| 49| 50|
638 +--+----+----+----+----+----+----+----+----+----+----+----+----+
642 AT_SETUP([breaking row of many big narrow cells])
643 AT_KEYWORDS([render rendering])
644 AT_CAPTURE_FILE([input])
645 AT_DATA([input], [1 50
646 m4_for([x], [1], [50], [1], [@This is cell x in a series of 50.
648 AT_CHECK([render-test input], [0], [dnl
649 +------+------+------+------+------+------+------+------+------+------+------+
650 | This| This| This| This| This| This| This| This| This| This| This|
651 | is| is| is| is| is| is| is| is| is| is| is|
652 |cell 1|cell 2|cell 3|cell 4|cell 5|cell 6|cell 7|cell 8|cell 9| cell| cell|
653 | in a| in a| in a| in a| in a| in a| in a| in a| in a| 10 in| 11 in|
654 |series|series|series|series|series|series|series|series|series| a| a|
655 |of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|series|series|
656 | | | | | | | | | |of 50.|of 50.|
657 +------+------+------+------+------+------+------+------+------+------+------+
659 +------+------+------+------+------+------+------+------+------+------+------+
660 | This| This| This| This| This| This| This| This| This| This| This|
661 | is| is| is| is| is| is| is| is| is| is| is|
662 | cell| cell| cell| cell| cell| cell| cell| cell| cell| cell| cell|
663 | 12 in| 13 in| 14 in| 15 in| 16 in| 17 in| 18 in| 19 in| 20 in| 21 in| 22 in|
664 | a| a| a| a| a| a| a| a| a| a| a|
665 |series|series|series|series|series|series|series|series|series|series|series|
666 |of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|
667 +------+------+------+------+------+------+------+------+------+------+------+
669 +------+------+------+------+------+------+------+------+------+------+------+
670 | This| This| This| This| This| This| This| This| This| This| This|
671 | is| is| is| is| is| is| is| is| is| is| is|
672 | cell| cell| cell| cell| cell| cell| cell| cell| cell| cell| cell|
673 | 23 in| 24 in| 25 in| 26 in| 27 in| 28 in| 29 in| 30 in| 31 in| 32 in| 33 in|
674 | a| a| a| a| a| a| a| a| a| a| a|
675 |series|series|series|series|series|series|series|series|series|series|series|
676 |of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|
677 +------+------+------+------+------+------+------+------+------+------+------+
679 +------+------+------+------+------+------+------+------+------+------+------+
680 | This| This| This| This| This| This| This| This| This| This| This|
681 | is| is| is| is| is| is| is| is| is| is| is|
682 | cell| cell| cell| cell| cell| cell| cell| cell| cell| cell| cell|
683 | 34 in| 35 in| 36 in| 37 in| 38 in| 39 in| 40 in| 41 in| 42 in| 43 in| 44 in|
684 | a| a| a| a| a| a| a| a| a| a| a|
685 |series|series|series|series|series|series|series|series|series|series|series|
686 |of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|
687 +------+------+------+------+------+------+------+------+------+------+------+
689 +------+------+------+------+------+------+
690 | This| This| This| This| This| This|
691 | is| is| is| is| is| is|
692 | cell| cell| cell| cell| cell| cell|
693 | 45 in| 46 in| 47 in| 48 in| 49 in| 50 in|
695 |series|series|series|series|series|series|
696 |of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|
697 +------+------+------+------+------+------+
699 AT_CHECK([render-test -o mb0 --min-break=0 input], [0], [dnl
700 +------+------+------+------+------+------+------+------+------+------+------+-
701 | This| This| This| This| This| This| This| This| This| This| This|
702 | is| is| is| is| is| is| is| is| is| is| is|
703 |cell 1|cell 2|cell 3|cell 4|cell 5|cell 6|cell 7|cell 8|cell 9| cell| cell|
704 | in a| in a| in a| in a| in a| in a| in a| in a| in a| 10 in| 11 in|
705 |series|series|series|series|series|series|series|series|series| a| a|
706 |of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|series|series|s
707 | | | | | | | | | |of 50.|of 50.|o
708 +------+------+------+------+------+------+------+------+------+------+------+-
710 -----+------+------+------+------+------+------+------+------+------+------+---
711 This| This| This| This| This| This| This| This| This| This| This| T
712 is| is| is| is| is| is| is| is| is| is| is|
713 cell| cell| cell| cell| cell| cell| cell| cell| cell| cell| cell| c
714 12 in| 13 in| 14 in| 15 in| 16 in| 17 in| 18 in| 19 in| 20 in| 21 in| 22 in| 23
715 a| a| a| a| a| a| a| a| a| a| a|
716 eries|series|series|series|series|series|series|series|series|series|series|ser
717 f 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of
718 -----+------+------+------+------+------+------+------+------+------+------+---
720 ---+------+------+------+------+------+------+------+------+------+------+-----
721 his| This| This| This| This| This| This| This| This| This| This| Thi
722 is| is| is| is| is| is| is| is| is| is| is| i
723 ell| cell| cell| cell| cell| cell| cell| cell| cell| cell| cell| cel
724 in| 24 in| 25 in| 26 in| 27 in| 28 in| 29 in| 30 in| 31 in| 32 in| 33 in| 34 i
725 a| a| a| a| a| a| a| a| a| a| a|
726 ies|series|series|series|series|series|series|series|series|series|series|serie
727 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50
728 ---+------+------+------+------+------+------+------+------+------+------+-----
730 -+------+------+------+------+------+------+------+------+------+------+------+
731 s| This| This| This| This| This| This| This| This| This| This| This|
732 s| is| is| is| is| is| is| is| is| is| is| is|
733 l| cell| cell| cell| cell| cell| cell| cell| cell| cell| cell| cell|
734 n| 35 in| 36 in| 37 in| 38 in| 39 in| 40 in| 41 in| 42 in| 43 in| 44 in| 45 in|
735 a| a| a| a| a| a| a| a| a| a| a| a|
736 s|series|series|series|series|series|series|series|series|series|series|series|
737 .|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|
738 -+------+------+------+------+------+------+------+------+------+------+------+
740 +------+------+------+------+------+
741 | This| This| This| This| This|
742 | is| is| is| is| is|
743 | cell| cell| cell| cell| cell|
744 | 46 in| 47 in| 48 in| 49 in| 50 in|
746 |series|series|series|series|series|
747 |of 50.|of 50.|of 50.|of 50.|of 50.|
748 +------+------+------+------+------+
752 AT_SETUP([breaking 2 rows of many small cells])
753 AT_KEYWORDS([render rendering])
754 AT_CAPTURE_FILE([input])
755 AT_DATA([input], [2 50
756 m4_for([x], [1], [100], [1], [@x
758 AT_CHECK([render-test input], [0], [dnl
759 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
760 | 1| 2| 3| 4| 5| 6| 7| 8| 9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|
761 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
762 |51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|
763 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
765 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+---+
766 |27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49| 50|
767 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+---+
768 |77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|
769 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+---+
771 AT_CHECK([render-test -o mb0 --min-break=0 input], [0], [dnl
772 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
773 | 1| 2| 3| 4| 5| 6| 7| 8| 9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|
774 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
775 |51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|
776 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
778 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+---+
779 |27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49| 50|
780 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+---+
781 |77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|
782 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+---+
786 AT_SETUP([breaking 3 rows with many joined cells])
787 AT_KEYWORDS([render rendering])
788 AT_CAPTURE_FILE([input])
789 AT_DATA([input], [3 49
790 m4_foreach([var], [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,dnl
791 A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W], [var
793 m4_for([x], [2], [49], [1], [1*2 @x
796 AT_CHECK([render-test input], [0], [dnl
797 a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M
798 +-+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
799 |1| 2| 3| 4| 5| 6| 7| 8| 9| 10| 11| 12| 13| 14| 15| 16| 17| 18| 19| 20|
800 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
801 | 26| 27| 28| 29| 30| 31| 32| 33| 34| 35| 36| 37| 38| 39| 40| 41| 42| 43| 44| 4
802 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--
805 +---+---+---+---+----+
806 | 21| 22| 23| 24| 25|
807 +-+-+-+-+-+-+-+-+-+--+
808 45| 46| 47| 48| 49|50|
809 --+---+---+---+---+--+
811 AT_CHECK([render-test -o mb0 --min-break=0 input], [0], [dnl
812 a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M
813 +-+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
814 |1| 2| 3| 4| 5| 6| 7| 8| 9| 10| 11| 12| 13| 14| 15| 16| 17| 18| 19| 20|
815 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
816 | 26| 27| 28| 29| 30| 31| 32| 33| 34| 35| 36| 37| 38| 39| 40| 41| 42| 43| 44| 4
817 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--
820 +---+---+---+---+----+
821 | 21| 22| 23| 24| 25|
822 +-+-+-+-+-+-+-+-+-+--+
823 45| 46| 47| 48| 49|50|
824 --+---+---+---+---+--+
828 AT_SETUP([horz break 6x6, joined rows and columns])
829 AT_KEYWORDS([render rendering])
831 AT_DATA([expout], [dnl
874 AT_CHECK([render-test --width=6 input], [0], [expout])
875 AT_CHECK([render-test -o mb0 --min-break=0 --width=6 input], [0], [expout])
878 AT_SETUP([horz break 6x6, joined rows and columns, left header])
879 AT_KEYWORDS([render rendering])
880 RENDER_WEAVE_6X6([1 0 0 0])
881 AT_DATA([expout], [dnl
910 AT_CHECK([render-test --width=10 input], [0], [expout])
911 AT_CHECK([render-test -o mb0 --min-break=0 --width=10 input], [0], [expout])
914 AT_SETUP([horz break 6x6, joined rows and columns, right header])
915 AT_KEYWORDS([render rendering])
916 RENDER_WEAVE_6X6([0 1 0 0])
917 AT_DATA([expout], [dnl
946 AT_CHECK([render-test --width=10 input], [0], [expout])
947 AT_CHECK([render-test -o mb0 --min-break=0 --width=10 input], [0], [expout])
950 AT_SETUP([breaking joined cells too wide for page])
951 AT_KEYWORDS([render rendering])
952 AT_DATA([input], [4 6
966 AT_CHECK([render-test --width=10 input], [0], [dnl
991 AT_CHECK([render-test -o mb0 --min-break=0 --width=10 input], [0], [dnl
1018 AT_SETUP([breaking joined cells much too wide for page])
1019 AT_KEYWORDS([render rendering])
1020 AT_DATA([input], [4 6
1021 1*6 @abc def ghi jkl
1034 AT_CHECK([render-test --width=6 input], [0], [dnl
1071 AT_CHECK([render-test -o mb0 --min-break=0 --width=6 input], [0], [dnl
1110 AT_SETUP([breaking cell too wide for page, no border])
1111 AT_KEYWORDS([render rendering])
1112 AT_CAPTURE_FILE([input])
1113 AT_DATA([input], [1 1
1114 abcdefghijklmnopqrstuvwxyz
1116 AT_CHECK([render-test --width=6 input], [0], [dnl
1127 AT_CHECK([render-test -o mb0 --min-break=0 --width=6 input], [0], [dnl
1140 AT_SETUP([breaking cell too wide for page, with border])
1141 AT_KEYWORDS([render rendering])
1142 AT_CAPTURE_FILE([input])
1143 AT_DATA([input], [1 1
1144 @abcdefghijklmnopqrstuvwxyz
1146 AT_DATA([expout], [dnl
1167 AT_CHECK([render-test --width=6 input], [0], [expout])
1168 AT_CHECK([render-test -o mb0 --min-break=0 --width=6 input], [0], [expout])
1171 AT_SETUP([horz break 8x8 with many 2x2 joins])
1172 AT_KEYWORDS([render rendering])
1174 AT_CHECK([render-test --width=8 input], [0],[dnl
1246 AT_CHECK([render-test -o mb0 --min-break=0 --width=8 input], [0],[dnl
1319 AT_BANNER([output rendering -- vertical page breaks])
1321 AT_SETUP([breaking column of many small cells])
1322 AT_KEYWORDS([render rendering])
1323 AT_CAPTURE_FILE([input])
1324 AT_DATA([input], [20 1
1325 m4_for([x], [1], [20], [1], [@x
1327 AT_CHECK([render-test --length=10 input], [0], [dnl
1378 AT_CHECK([render-test -o mb0 --min-break=0 --length=10 input], [0], [dnl
1431 AT_SETUP([breaking column of many small cells, with headers])
1432 AT_KEYWORDS([render rendering])
1433 AT_CAPTURE_FILE([input])
1434 AT_DATA([input], [17 1 0 0 1 1
1436 m4_for([x], [1], [15], [1], [@x
1439 AT_CHECK([render-test --length=13 input], [0], [dnl
1494 AT_CHECK([render-test -o mb0 --min-break=0 --length=13 input], [0], [dnl
1551 AT_SETUP([disabling too-big headers])
1552 AT_KEYWORDS([render rendering])
1553 AT_CAPTURE_FILE([input])
1554 AT_DATA([input], [17 1 0 0 1 1
1556 m4_for([x], [1], [15], [1], [@x
1559 AT_DATA([expout], [dnl
1604 AT_CHECK([render-test --length=10 input], [0], [expout])
1605 AT_CHECK([render-test -o mb0 --min-break=0 --length=10 input], [0], [expout])
1608 AT_SETUP([breaking column of many medium-size cells])
1609 AT_KEYWORDS([render rendering])
1610 AT_CAPTURE_FILE([input])
1611 AT_DATA([input], [20 1
1612 m4_for([x], [1], [20], [1], [@top x\ncell x\nbottom x
1614 AT_CHECK([render-test --length 10 input], [0], [dnl
1715 AT_CHECK([render-test -o mb0 --min-break=0 --length 10 input], [0], [dnl
1810 AT_SETUP([breaking 3 columns with many joined cells])
1811 AT_KEYWORDS([render rendering])
1812 AT_CAPTURE_FILE([input])
1852 AT_DATA([input], [3 19
1853 m4_foreach([x], [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s], [x
1855 m4_for([x], [2], [19], [1], [1*2 @x\nab\ncd
1858 AT_DATA([expout], [dnl
1917 AT_CHECK([render-test --length=6 --transpose input], [0], [expout])
1918 AT_CHECK([render-test -o mb0 --min-break=0 --length=6 --transpose input],
1922 AT_SETUP([vert break 6x6, joined rows and columns])
1923 AT_KEYWORDS([render rendering])
1925 AT_CHECK([render-test --length=6 input], [0], [dnl
1944 AT_CHECK([render-test -o mb0 --min-break=0 --length=6 input], [0], [dnl
1965 AT_SETUP([breaking joined cells too tall for page])
1966 AT_KEYWORDS([render rendering])
1967 AT_DATA([input], [4 6
1968 1*6 @abc\ndef\nghi\njkl\nmno\npqr\nstu\nvwx\nyzA\nBCD\nEFG
1969 1*3 @HIJ\nKLM\nOPQ\nRST\nUVW
1970 1*3 @XYZ\n012\n345\n678\n90a
1981 AT_CHECK([render-test --transpose --length=6 input], [0], [dnl
2000 AT_CHECK([render-test -o mb0 --min-break=0 --transpose --length=6 input], [0], [dnl
2021 AT_SETUP([breaking cell too tall for page, no border])
2022 AT_KEYWORDS([render rendering])
2023 AT_CAPTURE_FILE([input])
2024 AT_DATA([input], [1 1
2025 abc defg hij klmn opq rstu vwx yz ABCDE FGH I JK LMNOP QR STU VWXYZ
2027 AT_CHECK([render-test --width=6 --length=6 input], [0], [dnl
2044 AT_CHECK([render-test -o mb0 --min-break=0 --width=6 --length=6 input], [0], [dnl
2063 AT_SETUP([breaking cell too tall for page, with border])
2064 AT_KEYWORDS([render rendering])
2065 AT_CAPTURE_FILE([input])
2066 AT_DATA([input], [1 1
2067 @abc defg hij klmn opq rstu vwx yz ABCDE FGH I JK LMNOP QR STU VWXYZ
2069 AT_DATA([expout], [dnl
2090 AT_CHECK([render-test --width=7 --length=6 input], [0], [expout])
2091 AT_CHECK([render-test -o mb0 --min-break=0 --width=7 --length=6 input],
2095 AT_BANNER([output rendering -- double page breaks])
2097 AT_SETUP([double break 6x6, joined rows and columns])
2098 AT_KEYWORDS([render rendering])
2100 AT_CHECK([render-test --width=6 --length=6 input], [0], [dnl
2155 AT_CHECK([render-test -o mb0 --min-break=0 --width=6 --length=6 input], [0], [dnl
2212 AT_SETUP([double break 8x8, with joins, left and right headers])
2213 AT_KEYWORDS([render rendering])
2214 RENDER_8X8([1 1 0 0])
2215 AT_CHECK([render-test input --width=14 --length=14], [0], [dnl
2256 AT_CHECK([render-test -o mb0 --min-break=0 input --width=14 --length=14], [0], [dnl
2299 AT_SETUP([double break 8x8, with joins, top and bottom headers])
2300 AT_KEYWORDS([render rendering])
2301 RENDER_8X8([0 0 1 1])
2302 AT_CHECK([render-test input --width=14 --length=14], [0], [dnl
2353 AT_CHECK([render-test -o mb0 --min-break=0 input --width=14 --length=14], [0], [dnl
2406 AT_SETUP([double break 8x8, with joins, all headers])
2407 AT_KEYWORDS([render rendering])
2408 RENDER_8X8([1 1 1 1])
2409 AT_CHECK([render-test input --width=14 --length=14], [0], [dnl
2460 AT_CHECK([render-test -o mb0 --min-break=0 input --width=14 --length=14], [0], [dnl
2513 AT_SETUP([double break joined cells too big for page])
2514 AT_KEYWORDS([render rendering])
2515 AT_DATA([input], [7 7
2524 6*6 @The MISSING subcommand determines the handling of missing variables. If INCLUDE is set, then user‑missing values are included in the calculations. If NOINCLUDE is set, which is the default, user‑missing values are excluded.
2531 AT_CHECK([render-test --width=15 --length=15 input], [0], [dnl
2588 AT_CHECK([render-test -o mb0 --min-break=0 --width=15 --length=15 input], [0], [dnl
2646 AT_BANNER([output rendering -- problematic procedures])
2648 dnl LIST used to put columns right up next to each other without any
2649 dnl intervening space, so this checks for regression.
2650 AT_SETUP([LIST puts space between columns])
2651 AT_KEYWORDS([render rendering])
2652 AT_DATA([list.sps], [dnl
2653 DATA LIST LIST NOTABLE /x y z (F1.0).
2661 AT_CHECK([pspp list.sps], [0], [dnl
2671 # Long string variables tend to end in lots of spaces. The ASCII
2672 # driver didn't handle this very well: it would essentially produce
2673 # one blank line in a cell for each trailing space. This test
2674 # checks for regression. See bug #38672.
2675 AT_SETUP([ASCII driver renders end of line spaces reasonably])
2676 AT_KEYWORDS([render rendering])
2677 AT_DATA([input], [dnl
2689 AT_CHECK([render-test --width=15 --length=15 input], [0], [dnl
2700 # There was a bug that, when multiple cells spanned a single column
2701 # (or row), only the dimensions of the cell nearest the bottom of the
2702 # table were actually considered. This checks for regression. (This
2703 # problem was most easily observed with SYSFILE INFO, which uses lots
2704 # of spanned cells).
2706 # Without the fix, the output looks like this:
2713 AT_SETUP([multiple spanned cells all contribute to dimensions])
2714 AT_KEYWORDS([render rendering])
2715 AT_DATA([input], [dnl
2717 1*2 @A long text string.
2720 AT_CHECK([render-test --width=30 --length=15 input], [0], [dnl
2721 +-------------------+
2722 |A long text string.|
2723 +-------------------+
2725 +-------------------+