ascii: Add support for multibyte characters.
[pspp-builds.git] / tests / output / render.at
1 m4_define([RENDER_WEAVE_6X6],
2   [AT_DATA([input], [6 6 $1
3 @a
4 1*2 @bcd
5 @e
6 2*1 @f\ng\nh
7 @i
8 2*1 @j\nk\nl
9 @m
10 1*2 @nop
11 2*1 @q\nr\ns
12 2*1 @t\nu\nv
13 @w
14 1*2 @xyz
15 @A
16 2*1 @B\nC\nD
17 @E
18 1*2 @FGH
19 1*2 @IJK
20 2*1 @L\nM\nN
21 @O
22 @P
23 @Q
24 1*2 @RST
25 @U
26 @V
27 ])])
28
29 m4_define([RENDER_8X8],
30   [AT_DATA([input], [8 8 $1
31 @a
32 @b
33 @c
34 @d
35 @e
36 @f
37 @g
38 @h
39 @i
40 1*2 @jkl
41 @m
42 1*2 @nop
43 2*1 @q\nr\ns
44 @t
45 @u
46 @v
47 1*2 @wxy
48 @z
49 2*1 @A\nB\nC
50 @D
51 @E
52 2*1 @F\nG\nH
53 @I
54 1*2 @JKL
55 2*1 @M\nN\nO
56 @P
57 @Q
58 2*1 @R\nS\nT
59 1*2 @UVW
60 @X
61 @Y
62 @Z
63 2*1 @0\n1\n2
64 @3
65 1*2 @456
66 @7
67 @8
68 @9
69 1*2 @abc
70 @d
71 1*2 @efg
72 @h
73 @i
74 @j
75 @k
76 @l
77 @m
78 @n
79 @o
80 @p
81 ])])
82
83 # This input is something of a counterexample, in that it could render
84 # compactly as this if the algorithm for choosing cell widths and
85 # heights were smarter:
86 #
87 # +---+---+---+-+-+
88 # |abc|jkl|mno|v|x|
89 # |def+---+pqr+-+-+
90 # |ghi|yzA|stu|HIJ|
91 # +-+-+BCD+-+-+KLM|
92 # |Q|V|EFG|W|Z|NOP|
93 # |R+-+-+-+X+-+-+-+
94 # |S|012|9|Y|abc|j|
95 # |T|345+-+-+def|k|
96 # |U|678|opq|ghi|l|
97 # +-+-+-+rst+---+m|
98 # |xyz|G|uvw|JKL|n|
99 # |ABC|H+---+-+-+-+
100 # |DEF|I|MNOPQ|123|
101 # +---+-+RSTUV|456|
102 # |abcde|WXYZ0|789|
103 # +-----+-----+---+
104 m4_define([RENDER_8X8_2],
105   [AT_DATA([input], [8 8 $1
106 2*2 @abc\ndef\nghi
107 1*2 @jkl
108 2*2 @mno\npqr\nstu
109 1*2 @vwx
110 2*2 @yzA\nBCD\nEFG
111 2*2 @HIJ\nKLM\nNOP
112 3*1 @Q\nR\nS\nT\nU
113 @V
114 2*1 @W\nX\nY
115 @Z
116 2*2 @012\n345\n678
117 @9
118 2*2 @abc\ndef\nghi
119 3*1 @j\nk\nl\nm\nn
120 2*2 @opq\nrst\nuvw
121 2*2 @xyz\nABC\nDEF
122 2*1 @G\nH\nI
123 1*2 @JKL
124 2*3 @MNOPQ\nRSTUV\nWXYZ0
125 2*2 @123\n456\n789
126 1*3 @abcde
127 ])])
128 \f
129 AT_BANNER([output rendering -- no page breaking])
130
131 AT_SETUP([single cell])
132 AT_KEYWORDS([render rendering])
133 AT_DATA([input], [1 1
134 abc
135 ])
136 AT_CHECK([render-test input], [0], [abc
137 ])
138 AT_CLEANUP
139
140 AT_SETUP([single cell with border])
141 AT_KEYWORDS([render rendering])
142 AT_DATA([input], [1 1
143 @abc
144 ])
145 AT_CHECK([render-test input], [0], [dnl
146 +---+
147 |abc|
148 +---+
149 ])
150 AT_CLEANUP
151
152 AT_SETUP([joined columns])
153 AT_KEYWORDS([render rendering])
154 AT_DATA([input], [2 2
155 1*2 @abcdefg
156 @hij
157 @klm
158 ])
159 AT_CHECK([render-test input], [0], [dnl
160 +-------+
161 |abcdefg|
162 +---+---+
163 |hij|klm|
164 +---+---+
165 ])
166 AT_CLEANUP
167
168 AT_SETUP([3x3, joined rows and columns])
169 AT_KEYWORDS([render rendering])
170 AT_DATA([input], [3 3
171 1*2 @abc
172 2*1 @d\ne\nf
173 2*1 @g\nh\ni
174 @j
175 1*2 @klm
176 ])
177 AT_CHECK([render-test input], [0], [dnl
178 +---+-+
179 |abc|d|
180 +-+-+e|
181 |g|j|f|
182 |h+-+-+
183 |i|klm|
184 +-+---+
185 ])
186 AT_CLEANUP
187
188 AT_SETUP([6x6, joined rows and columns])
189 AT_KEYWORDS([render rendering])
190 RENDER_WEAVE_6X6
191 AT_CHECK([render-test input], [0], [dnl
192 +-+---+-+-+-+
193 |a|bcd|e|f|i|
194 +-+-+-+-+g+-+
195 |j|m|nop|h|q|
196 |k+-+-+-+-+r|
197 |l|t|w|xyz|s|
198 +-+u+-+-+-+-+
199 |A|v|B|E|FGH|
200 +-+-+C+-+-+-+
201 |IJK|D|L|O|P|
202 +-+-+-+M+-+-+
203 |Q|RST|N|U|V|
204 +-+---+-+-+-+
205 ])
206 AT_CLEANUP
207
208 AT_SETUP([3 rows with many joined cells])
209 AT_KEYWORDS([render rendering])
210 AT_CAPTURE_FILE([input])
211 AT_DATA([input], [3 19
212 m4_foreach([x], [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s], [x
213 ])@1
214 m4_for([x], [2], [19], [1], [1*2 @x
215 ])@20
216 ])
217 AT_CHECK([render-test input], [0], [dnl
218  a b c d e f g h i j k l m n o p q r  s
219 +-+---+---+---+---+---+---+---+---+----+
220 |1|  2|  3|  4|  5|  6|  7|  8|  9|  10|
221 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+
222 | 11| 12| 13| 14| 15| 16| 17| 18| 19|20|
223 +---+---+---+---+---+---+---+---+---+--+
224 ])
225 AT_CLEANUP
226
227 AT_SETUP([3 columns with many joined cells])
228 AT_KEYWORDS([render rendering])
229 AT_CAPTURE_FILE([input])
230 AT_DATA([input], [3 19
231 m4_foreach([x], [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s], [x
232 ])@1
233 m4_for([x], [2], [19], [1], [1*2 @x\nab\ncd
234 ])@20
235 ])
236 AT_CHECK([render-test --transpose input], [0], [dnl
237  +--+--+
238 a| 1|11|
239  +--+ab|
240 b| 2|cd|
241  |ab+--+
242 c|cd|12|
243  +--+ab|
244 d| 3|cd|
245  |ab+--+
246 e|cd|13|
247  +--+ab|
248 f| 4|cd|
249  |ab+--+
250 g|cd|14|
251  +--+ab|
252 h| 5|cd|
253  |ab+--+
254 i|cd|15|
255  +--+ab|
256 j| 6|cd|
257  |ab+--+
258 k|cd|16|
259  +--+ab|
260 l| 7|cd|
261  |ab+--+
262 m|cd|17|
263  +--+ab|
264 n| 8|cd|
265  |ab+--+
266 o|cd|18|
267  +--+ab|
268 p| 9|cd|
269  |ab+--+
270 q|cd|19|
271  +--+ab|
272 r|10|cd|
273  |ab+--+
274 s|cd|20|
275  +--+--+
276 ])
277 AT_CLEANUP
278
279 AT_SETUP([joined rows])
280 AT_KEYWORDS([render rendering])
281 AT_DATA([input], [2 2
282 2*1 @ab\ncd\nef
283 @hij
284 @klm
285 ])
286 AT_CHECK([render-test input], [0], [dnl
287 +--+---+
288 |ab|hij|
289 |cd+---+
290 |ef|klm|
291 +--+---+
292 ])
293 AT_CLEANUP
294
295 dnl This checks for bug #31346, a segmentation fault that surfaced
296 dnl when two or more rows  had no unspanned cells and no rules.
297 AT_SETUP([joined rows only, no rules])
298 AT_KEYWORDS([render rendering])
299 AT_DATA([input], [2 2
300 2*1 ab\ncd\nef
301 2*1 hij\nklm\nnop
302 ])
303 AT_CHECK([render-test input], [0], [dnl
304 ab hij
305 cd klm
306 ef nop
307 ])
308 AT_CLEANUP
309
310 AT_SETUP([joined columns only, no rules])
311 AT_KEYWORDS([render rendering])
312 AT_DATA([input], [2 2
313 1*2 abc\ndef
314 1*2 hij\nklm\nnop
315 ])
316 AT_CHECK([render-test input], [0], [dnl
317 abc
318 def
319 hij
320 klm
321 nop
322 ])
323 AT_CLEANUP
324
325 AT_SETUP([5 big narrow cells])
326 AT_KEYWORDS([render rendering])
327 AT_DATA([input], [1 5
328 @This cell has a lot of text but its minimum width is pretty narrow.
329 @This cell also has a lot of text but its minimum width is pretty narrow.
330 @A third cell with a lot of text but a pretty narrow minimum width.
331 @A fourth cell with a lot of text but a pretty narrow minimum width.
332 @A fifth cell with a lot of text but a pretty narrow minimum width.
333 ])
334 AT_CHECK([render-test input], [0], [dnl
335 +---------------+---------------+--------------+---------------+--------------+
336 |This cell has a| This cell also|  A third cell|  A fourth cell|  A fifth cell|
337 |lot of text but|   has a lot of| with a lot of|  with a lot of| with a lot of|
338 |    its minimum|   text but its|    text but a|     text but a|    text but a|
339 |width is pretty|  minimum width| pretty narrow|  pretty narrow| pretty narrow|
340 |        narrow.|      is pretty|minimum width.| minimum width.|minimum width.|
341 |               |        narrow.|              |               |              |
342 +---------------+---------------+--------------+---------------+--------------+
343 ])
344 AT_CLEANUP
345
346 AT_SETUP([9 big narrow cells])
347 AT_KEYWORDS([render rendering])
348 AT_DATA([input], [1 9
349 @This cell has a lot of text but its minimum width is pretty narrow.
350 @This cell also has a lot of text but its minimum width is pretty narrow.
351 @A third cell with a lot of text but a pretty narrow minimum width.
352 @A fourth cell with a lot of text but a pretty narrow minimum width.
353 @A fifth cell with a lot of text but a pretty narrow minimum width.
354 @A sixth cell with a lot of text but a pretty narrow minimum width.
355 @A seventh cell with a lot of text but a pretty narrow minimum width.
356 @A eighth cell with a lot of text but a pretty narrow minimum width.
357 @A ninth cell with a lot of text but a pretty narrow minimum width.
358 ])
359 AT_CHECK([render-test input], [0], [dnl
360 +--------+-------+--------+--------+-------+--------+--------+-------+--------+
361 |    This|   This| A third|A fourth|A fifth| A sixth|       A|      A| A ninth|
362 |cell has|   cell|    cell|    cell|   cell|    cell| seventh| eighth|    cell|
363 |a lot of|   also|  with a|  with a| with a|  with a|    cell|   cell|  with a|
364 |text but|  has a|  lot of|  lot of| lot of|  lot of|  with a| with a|  lot of|
365 |     its| lot of|text but|text but|   text|text but|  lot of| lot of|text but|
366 | minimum|   text|a pretty|a pretty|  but a|a pretty|text but|   text|a pretty|
367 |width is|but its|  narrow|  narrow| pretty|  narrow|a pretty|  but a|  narrow|
368 |  pretty|minimum| minimum| minimum| narrow| minimum|  narrow| pretty| minimum|
369 | narrow.|  width|  width.|  width.|minimum|  width.| minimum| narrow|  width.|
370 |        |     is|        |        | width.|        |  width.|minimum|        |
371 |        | pretty|        |        |       |        |        | width.|        |
372 |        |narrow.|        |        |       |        |        |       |        |
373 +--------+-------+--------+--------+-------+--------+--------+-------+--------+
374 ])
375 AT_CLEANUP
376
377 AT_SETUP([2 big cells with new-lines])
378 AT_KEYWORDS([render rendering])
379 AT_DATA([input], [1 2
380 @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.
381 @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.
382 ])
383 AT_CHECK([render-test input], [0], [dnl
384 +----------------------------------------------------------+------------------+
385 |      PSPP does not place many restrictions on ordering of|     PSPP includes|
386 |  commands. The main restriction is that variables must be|   special support|
387 |       defined before they are otherwise referenced.  This|       for unknown|
388 |    section describes the details of command ordering, but|      numeric data|
389 |       most users will have no need to refer to them. PSPP|           values.|
390 |     possesses five internal states, called initial, INPUT|           Missing|
391 | PROGRAM, FILE TYPE, transformation, and procedure states.|  observations are|
392 |                                                          |          assigned|
393 |                                                          |  a special value,|
394 |                                                          |        called the|
395 |                                                          |  ``system‑missing|
396 |                                                          |    value''.  This|
397 |                                                          |``value'' actually|
398 |                                                          |     indicates the|
399 |                                                          |      absence of a|
400 |                                                          |         value; it|
401 |                                                          |    means that the|
402 |                                                          |            actual|
403 |                                                          | value is unknown.|
404 +----------------------------------------------------------+------------------+
405 ])
406 AT_CLEANUP
407
408 AT_SETUP([8x8 with many 2x2 joins])
409 AT_KEYWORDS([render rendering])
410 RENDER_8X8_2
411 AT_CHECK([render-test input], [0],[dnl
412 +---+---+----+----+
413 |abc|jkl| mno| vwx|
414 |def|   | pqr|    |
415 |ghi+---+ stu+----+
416 |   |yzA|    | HIJ|
417 +-+-+BCD+-+--+ KLM|
418 |Q|V|EFG|W| Z| NOP|
419 |R| |   |X|  |    |
420 |S+-+-+-+Y+--+-+--+
421 |T|012|9| | abc| j|
422 |U|345| | | def| k|
423 | |678+-+-+ ghi| l|
424 | |   |opq|    | m|
425 +-+-+-+rst+----+ n|
426 |xyz|G|uvw| JKL|  |
427 |ABC|H|   |    |  |
428 |DEF|I+---+--+-+--+
429 |   | | MNOPQ| 123|
430 +---+-+ RSTUV| 456|
431 |abcde| WXYZ0| 789|
432 |     |      |    |
433 +-----+------+----+
434 ])
435 AT_CLEANUP
436 \f
437 AT_BANNER([output rendering -- horizontal page breaks])
438
439 AT_SETUP([breaking row of many small cells])
440 AT_KEYWORDS([render rendering])
441 AT_CAPTURE_FILE([input])
442 AT_DATA([input], [1 50
443 m4_for([x], [1], [50], [1], [@x
444 ])])
445 AT_CHECK([render-test input], [0], [dnl
446 +-+-+-+-+-+-+-+-+-+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
447 |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|
448 +-+-+-+-+-+-+-+-+-+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
449
450 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
451 |30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|
452 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
453 ])
454 AT_CLEANUP
455
456 AT_SETUP([breaking row of many small cells, with headers])
457 AT_KEYWORDS([render rendering])
458 AT_CAPTURE_FILE([input])
459 AT_DATA([input], [1 54 2 2
460 @ha
461 @hb
462 m4_for([x], [1], [50], [1], [@x
463 ])dnl
464 @hc
465 @hd
466 ])
467 AT_CHECK([render-test input], [0], [dnl
468 +--+--+-+-+-+-+-+-+-+-+-+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
469 |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|
470 +--+--+-+-+-+-+-+-+-+-+-+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
471
472 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
473 |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|
474 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
475
476 +--+--+--+--+--+--+--+
477 |ha|hb|48|49|50|hc|hd|
478 +--+--+--+--+--+--+--+
479 ])
480 AT_CLEANUP
481
482 AT_SETUP([breaking row of many medium-size cells])
483 AT_KEYWORDS([render rendering])
484 AT_CAPTURE_FILE([input])
485 AT_DATA([input], [1 50
486 m4_for([x], [1], [50], [1], [@cell x
487 ])])
488 AT_CHECK([render-test input], [0], [dnl
489 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
490 |cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|
491 |   1|   2|   3|   4|   5|   6|   7|   8|   9|  10|  11|  12|  13|  14|  15|
492 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
493
494 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
495 |cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|
496 |  16|  17|  18|  19|  20|  21|  22|  23|  24|  25|  26|  27|  28|  29|  30|
497 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
498
499 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
500 |cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|
501 |  31|  32|  33|  34|  35|  36|  37|  38|  39|  40|  41|  42|  43|  44|  45|
502 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
503
504 +----+----+----+----+----+
505 |cell|cell|cell|cell|cell|
506 |  46|  47|  48|  49|  50|
507 +----+----+----+----+----+
508 ])
509 AT_CLEANUP
510
511 AT_SETUP([breaking row of many medium-size cells, with headers])
512 AT_KEYWORDS([render rendering])
513 AT_CAPTURE_FILE([input])
514 AT_DATA([input], [1 52 1 1
515 header1
516 m4_for([x], [1], [50], [1], [@cell x
517 ])dnl
518 header2
519 ])
520 AT_CHECK([render-test input], [0], [dnl
521        +----+----+----+----+----+----+----+----+----+----+----+----+
522 header1|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|header2
523        |   1|   2|   3|   4|   5|   6|   7|   8|   9|  10|  11|  12|
524        +----+----+----+----+----+----+----+----+----+----+----+----+
525
526        +----+----+----+----+----+----+----+----+----+----+----+----+
527 header1|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|header2
528        |  13|  14|  15|  16|  17|  18|  19|  20|  21|  22|  23|  24|
529        +----+----+----+----+----+----+----+----+----+----+----+----+
530
531        +----+----+----+----+----+----+----+----+----+----+----+----+
532 header1|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|header2
533        |  25|  26|  27|  28|  29|  30|  31|  32|  33|  34|  35|  36|
534        +----+----+----+----+----+----+----+----+----+----+----+----+
535
536        +----+----+----+----+----+----+----+----+----+----+----+----+
537 header1|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|cell|header2
538        |  37|  38|  39|  40|  41|  42|  43|  44|  45|  46|  47|  48|
539        +----+----+----+----+----+----+----+----+----+----+----+----+
540
541        +----+----+
542 header1|cell|cell|header2
543        |  49|  50|
544        +----+----+
545 ])
546 AT_CLEANUP
547
548 AT_SETUP([breaking row of many big narrow cells])
549 AT_KEYWORDS([render rendering])
550 AT_CAPTURE_FILE([input])
551 AT_DATA([input], [1 50
552 m4_for([x], [1], [50], [1], [@This is cell x in a series of 50.
553 ])])
554 AT_CHECK([render-test input], [0], [dnl
555 +------+------+------+------+------+------+------+------+------+------+------+
556 |  This|  This|  This|  This|  This|  This|  This|  This|  This|  This|  This|
557 |    is|    is|    is|    is|    is|    is|    is|    is|    is|    is|    is|
558 |cell 1|cell 2|cell 3|cell 4|cell 5|cell 6|cell 7|cell 8|cell 9|  cell|  cell|
559 |  in a|  in a|  in a|  in a|  in a|  in a|  in a|  in a|  in a| 10 in| 11 in|
560 |series|series|series|series|series|series|series|series|series|     a|     a|
561 |of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|series|series|
562 |      |      |      |      |      |      |      |      |      |of 50.|of 50.|
563 +------+------+------+------+------+------+------+------+------+------+------+
564
565 +------+------+------+------+------+------+------+------+------+------+------+
566 |  This|  This|  This|  This|  This|  This|  This|  This|  This|  This|  This|
567 |    is|    is|    is|    is|    is|    is|    is|    is|    is|    is|    is|
568 |  cell|  cell|  cell|  cell|  cell|  cell|  cell|  cell|  cell|  cell|  cell|
569 | 12 in| 13 in| 14 in| 15 in| 16 in| 17 in| 18 in| 19 in| 20 in| 21 in| 22 in|
570 |     a|     a|     a|     a|     a|     a|     a|     a|     a|     a|     a|
571 |series|series|series|series|series|series|series|series|series|series|series|
572 |of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|
573 +------+------+------+------+------+------+------+------+------+------+------+
574
575 +------+------+------+------+------+------+------+------+------+------+------+
576 |  This|  This|  This|  This|  This|  This|  This|  This|  This|  This|  This|
577 |    is|    is|    is|    is|    is|    is|    is|    is|    is|    is|    is|
578 |  cell|  cell|  cell|  cell|  cell|  cell|  cell|  cell|  cell|  cell|  cell|
579 | 23 in| 24 in| 25 in| 26 in| 27 in| 28 in| 29 in| 30 in| 31 in| 32 in| 33 in|
580 |     a|     a|     a|     a|     a|     a|     a|     a|     a|     a|     a|
581 |series|series|series|series|series|series|series|series|series|series|series|
582 |of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|
583 +------+------+------+------+------+------+------+------+------+------+------+
584
585 +------+------+------+------+------+------+------+------+------+------+------+
586 |  This|  This|  This|  This|  This|  This|  This|  This|  This|  This|  This|
587 |    is|    is|    is|    is|    is|    is|    is|    is|    is|    is|    is|
588 |  cell|  cell|  cell|  cell|  cell|  cell|  cell|  cell|  cell|  cell|  cell|
589 | 34 in| 35 in| 36 in| 37 in| 38 in| 39 in| 40 in| 41 in| 42 in| 43 in| 44 in|
590 |     a|     a|     a|     a|     a|     a|     a|     a|     a|     a|     a|
591 |series|series|series|series|series|series|series|series|series|series|series|
592 |of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|
593 +------+------+------+------+------+------+------+------+------+------+------+
594
595 +------+------+------+------+------+------+
596 |  This|  This|  This|  This|  This|  This|
597 |    is|    is|    is|    is|    is|    is|
598 |  cell|  cell|  cell|  cell|  cell|  cell|
599 | 45 in| 46 in| 47 in| 48 in| 49 in| 50 in|
600 |     a|     a|     a|     a|     a|     a|
601 |series|series|series|series|series|series|
602 |of 50.|of 50.|of 50.|of 50.|of 50.|of 50.|
603 +------+------+------+------+------+------+
604 ])
605 AT_CLEANUP
606
607 AT_SETUP([breaking 2 rows of many small cells])
608 AT_KEYWORDS([render rendering])
609 AT_CAPTURE_FILE([input])
610 AT_DATA([input], [2 50
611 m4_for([x], [1], [100], [1], [@x
612 ])])
613 AT_CHECK([render-test input], [0], [dnl
614 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
615 | 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|
616 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
617 |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|
618 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
619
620 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+---+
621 |27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49| 50|
622 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+---+
623 |77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|
624 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+---+
625 ])
626 AT_CLEANUP
627
628 AT_SETUP([breaking 3 rows with many joined cells])
629 AT_KEYWORDS([render rendering])
630 AT_CAPTURE_FILE([input])
631 AT_DATA([input], [3 49
632 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
633 A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W], [var
634 ])@1
635 m4_for([x], [2], [49], [1], [1*2 @x
636 ])@50
637 ])
638 AT_CHECK([render-test input], [0], [dnl
639  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
640 +-+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
641 |1|  2|  3|  4|  5|  6|  7|  8|  9| 10| 11| 12| 13| 14| 15| 16| 17| 18| 19| 20|
642 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
643 | 26| 27| 28| 29| 30| 31| 32| 33| 34| 35| 36| 37| 38| 39| 40| 41| 42| 43| 44| 4
644 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--
645
646  N O P Q R S T U V  W
647 +---+---+---+---+----+
648 | 21| 22| 23| 24|  25|
649 +-+-+-+-+-+-+-+-+-+--+
650 45| 46| 47| 48| 49|50|
651 --+---+---+---+---+--+
652 ])
653 AT_CLEANUP
654
655 AT_SETUP([horz break 6x6, joined rows and columns])
656 AT_KEYWORDS([render rendering])
657 RENDER_WEAVE_6X6
658 AT_CHECK([render-test --width=6 input], [0], [dnl
659 +-+--
660 |a|bc
661 +-+-+
662 |j|m|
663 |k+-+
664 |l|t|
665 +-+u|
666 |A|v|
667 +-+-+
668 |IJK|
669 +-+-+
670 |Q|RS
671 +-+--
672
673 --+-+
674 cd|e|
675 +-+-+
676 |nop|
677 +-+-+
678 |w|xy
679 +-+-+
680 |B|E|
681 |C+-+
682 |D|L|
683 +-+M|
684 ST|N|
685 --+-+
686
687 +-+-+
688 |f|i|
689 |g+-+
690 |h|q|
691 +-+r|
692 yz|s|
693 +-+-+
694 |FGH|
695 +-+-+
696 |O|P|
697 +-+-+
698 |U|V|
699 +-+-+
700 ])
701 AT_CLEANUP
702
703 AT_SETUP([horz break 6x6, joined rows and columns, left header])
704 AT_KEYWORDS([render rendering])
705 RENDER_WEAVE_6X6([1 0 0 0])
706 AT_CHECK([render-test --width=10 input], [0], [dnl
707 +-+---+-+
708 |a|bcd|e|
709 +-+-+-+-+
710 |j|m|nop|
711 |k+-+-+-+
712 |l|t|w|xy
713 +-+u+-+-+
714 |A|v|B|E|
715 +-+-+C+-+
716 |K K|D|L|
717 +-+-+-+M|
718 |Q|RST|N|
719 +-+---+-+
720
721 +-+-+-+
722 |a|f|i|
723 +-+g+-+
724 |j|h|q|
725 |k+-+r|
726 |l|z|s|
727 +-+-+-+
728 |A|FGH|
729 +-+-+-+
730 |K|O|P|
731 +-+-+-+
732 |Q|U|V|
733 +-+-+-+
734 ])
735 AT_CLEANUP
736
737 AT_SETUP([horz break 6x6, joined rows and columns, right header])
738 AT_KEYWORDS([render rendering])
739 RENDER_WEAVE_6X6([0 1 0 0])
740 AT_CHECK([render-test --width=10 input], [0], [dnl
741 +-+---+-+
742 |a|bcd|i|
743 +-+-+-+-+
744 |j|m|n|q|
745 |k+-+-+r|
746 |l|t|w|s|
747 +-+u+-+-+
748 |A|v|B|H|
749 +-+-+C+-+
750 |IJK|D|P|
751 +-+-+-+-+
752 |Q|RST|V|
753 +-+---+-+
754
755 +-+-+-+
756 |e|f|i|
757 +-+g+-+
758 op|h|q|
759 +-+-+r|
760 |xyz|s|
761 +-+-+-+
762 |E|F H|
763 +-+-+-+
764 |L|O|P|
765 |M+-+-+
766 |N|U|V|
767 +-+-+-+
768 ])
769 AT_CLEANUP
770
771 AT_SETUP([breaking joined cells too wide for page])
772 AT_KEYWORDS([render rendering])
773 AT_DATA([input], [4 6
774 1*6 @abc def ghi jkl
775 1*3 @mno pqr
776 1*3 @stu vwx
777 1*2 @yzA
778 1*2 @BCD
779 1*2 @EFG
780 @H
781 @I
782 @J
783 @K
784 @L
785 @M
786 ])
787 AT_CHECK([render-test --width=10 input], [0], [dnl
788 +--------
789 |abc def
790 |
791 +-----+--
792 |  mno|
793 |  pqr|
794 +---+-+-+
795 |yzA|BCD|
796 +-+-+-+-+
797 |H|I|J|K|
798 +-+-+-+-+
799
800 ----+
801  ghi|
802  jkl|
803 ----+
804  stu|
805  vwx|
806 +---+
807 |EFG|
808 +-+-+
809 |L|M|
810 +-+-+
811 ])
812 AT_CLEANUP
813
814 AT_SETUP([breaking joined cells much too wide for page])
815 AT_KEYWORDS([render rendering])
816 AT_DATA([input], [4 6
817 1*6 @abc def ghi jkl
818 1*3 @mno pqr
819 1*3 @stu vwx
820 1*2 @yzA
821 1*2 @BCD
822 1*2 @EFG
823 @H
824 @I
825 @J
826 @K
827 @L
828 @M
829 ])
830 AT_CHECK([render-test --width=6 input], [0], [dnl
831 +----
832 |abc
833 |
834 +----
835 |  mn
836 |  pq
837 +---+
838 |yzA|
839 +-+-+
840 |H|I|
841 +-+-+
842
843 -----
844  def
845
846 --+--
847 no|
848 qr|
849 +-+-+
850 |BCD|
851 +-+-+
852 |J|K|
853 +-+-+
854
855 ----+
856  ghi|
857  jkl|
858 ----+
859  stu|
860  vwx|
861 +---+
862 |EFG|
863 +-+-+
864 |L|M|
865 +-+-+
866 ])
867 AT_CLEANUP
868
869 AT_SETUP([breaking cell too wide for page, no border])
870 AT_KEYWORDS([render rendering])
871 AT_CAPTURE_FILE([input])
872 AT_DATA([input], [1 1
873 abcdefghijklmnopqrstuvwxyz
874 ])
875 AT_CHECK([render-test --width=6 input], [0], [dnl
876 abcdef
877
878 ghijkl
879
880 mnopqr
881
882 stuvwx
883
884 yz
885 ])
886 AT_CLEANUP
887
888 AT_SETUP([breaking cell too wide for page, with border])
889 AT_KEYWORDS([render rendering])
890 AT_CAPTURE_FILE([input])
891 AT_DATA([input], [1 1
892 @abcdefghijklmnopqrstuvwxyz
893 ])
894 AT_CHECK([render-test --width=6 input], [0], [dnl
895 +-----
896 |abcde
897 +-----
898
899 ------
900 defghi
901 ------
902
903 ------
904 hijklm
905 ------
906
907 ------
908 lmnopq
909 ------
910
911 ------
912 pqrstu
913 ------
914
915 ------
916 tuvwxy
917 ------
918
919 ---+
920 xyz|
921 ---+
922 ])
923 AT_CLEANUP
924
925 AT_SETUP([horz break 8x8 with many 2x2 joins])
926 AT_KEYWORDS([render rendering])
927 RENDER_8X8_2
928 AT_CHECK([render-test --width=8 input], [0],[dnl
929 +---+--
930 |abc|jk
931 |def|  
932 |ghi+--
933 |   |yz
934 +-+-+BC
935 |Q|V|EF
936 |R| |  
937 |S+-+-+
938 |T|012|
939 |U|345|
940 | |678|
941 | |   |
942 +-+-+-+
943 |xyz|G|
944 |ABC|H|
945 |DEF|I|
946 |   | |
947 +---+-+
948 |abcde|
949 |     |
950 +-----+
951
952 --+----+
953 kl| mno|
954   | pqr|
955 --+ stu|
956 zA|    |
957 CD+-+--+
958 FG|W| Z|
959   |X|  |
960 +-+Y+--+
961 |9| | ab
962 | | | de
963 +-+-+ gh
964 |opq|   
965 |rst+---
966 |uvw| JK
967 |   |   
968 +---+--+
969 | MNOPQ|
970 | RSTUV|
971 | WXYZ0|
972 |      |
973 +------+
974
975 +----+
976 | vwx|
977 |    |
978 +----+
979 | HIJ|
980 | KLM|
981 | NOP|
982 |    |
983 +-+--+
984 bc| j|
985 ef| k|
986 hi| l|
987   | m|
988 --+ n|
989 KL|  |
990   |  |
991 +-+--+
992 | 123|
993 | 456|
994
995 | 456|
996 | 789|
997 |    |
998 +----+
999 ])
1000 AT_CLEANUP
1001 \f
1002 AT_BANNER([output rendering -- vertical page breaks])
1003
1004 AT_SETUP([breaking column of many small cells])
1005 AT_KEYWORDS([render rendering])
1006 AT_CAPTURE_FILE([input])
1007 AT_DATA([input], [20 1
1008 m4_for([x], [1], [20], [1], [@x
1009 ])])
1010 AT_CHECK([render-test --length=10 input], [0], [dnl
1011 +--+
1012 | 1|
1013 +--+
1014 | 2|
1015 +--+
1016 | 3|
1017 +--+
1018 | 4|
1019 +--+
1020
1021 +--+
1022 | 5|
1023 +--+
1024 | 6|
1025 +--+
1026 | 7|
1027 +--+
1028 | 8|
1029 +--+
1030
1031 +--+
1032 | 9|
1033 +--+
1034 |10|
1035 +--+
1036 |11|
1037 +--+
1038 |12|
1039 +--+
1040
1041 +--+
1042 |13|
1043 +--+
1044 |14|
1045 +--+
1046 |15|
1047 +--+
1048 |16|
1049 +--+
1050
1051 +--+
1052 |17|
1053 +--+
1054 |18|
1055 +--+
1056 |19|
1057 +--+
1058 |20|
1059 +--+
1060 ])
1061 AT_CLEANUP
1062
1063 AT_SETUP([breaking column of many small cells, with headers])
1064 AT_KEYWORDS([render rendering])
1065 AT_CAPTURE_FILE([input])
1066 AT_DATA([input], [17 1 0 0 1 1
1067 @a
1068 m4_for([x], [1], [15], [1], [@x
1069 ])@b
1070 ])
1071 AT_CHECK([render-test --length=13 input], [0], [dnl
1072 +--+
1073 | a|
1074 +--+
1075 | 1|
1076 +--+
1077 | 2|
1078 +--+
1079 | 3|
1080 +--+
1081 | 4|
1082 +--+
1083 | b|
1084 +--+
1085
1086 +--+
1087 | a|
1088 +--+
1089 | 5|
1090 +--+
1091 | 6|
1092 +--+
1093 | 7|
1094 +--+
1095 | 8|
1096 +--+
1097 | b|
1098 +--+
1099
1100 +--+
1101 | a|
1102 +--+
1103 | 9|
1104 +--+
1105 |10|
1106 +--+
1107 |11|
1108 +--+
1109 |12|
1110 +--+
1111 | b|
1112 +--+
1113
1114 +--+
1115 | a|
1116 +--+
1117 |13|
1118 +--+
1119 |14|
1120 +--+
1121 |15|
1122 +--+
1123 | b|
1124 +--+
1125 ])
1126 AT_CLEANUP
1127
1128 AT_SETUP([disabling too-big headers])
1129 AT_KEYWORDS([render rendering])
1130 AT_CAPTURE_FILE([input])
1131 AT_DATA([input], [17 1 0 0 1 1
1132 @a
1133 m4_for([x], [1], [15], [1], [@x
1134 ])@b
1135 ])
1136 AT_CHECK([render-test --length=10 input], [0], [dnl
1137 +--+
1138 | a|
1139 +--+
1140 | 1|
1141 +--+
1142 | 2|
1143 +--+
1144 | 3|
1145 +--+
1146
1147 +--+
1148 | 4|
1149 +--+
1150 | 5|
1151 +--+
1152 | 6|
1153 +--+
1154 | 7|
1155 +--+
1156
1157 +--+
1158 | 8|
1159 +--+
1160 | 9|
1161 +--+
1162 |10|
1163 +--+
1164 |11|
1165 +--+
1166
1167 +--+
1168 |12|
1169 +--+
1170 |13|
1171 +--+
1172 |14|
1173 +--+
1174 |15|
1175 +--+
1176
1177 +--+
1178 | b|
1179 +--+
1180 ])
1181 AT_CLEANUP
1182
1183 AT_SETUP([breaking column of many medium-size cells])
1184 AT_KEYWORDS([render rendering])
1185 AT_CAPTURE_FILE([input])
1186 AT_DATA([input], [20 1
1187 m4_for([x], [1], [20], [1], [@top x\ncell x\nbottom x
1188 ])])
1189 AT_CHECK([render-test --length 10 input], [0], [dnl
1190 +---------+
1191 |    top 1|
1192 |   cell 1|
1193 | bottom 1|
1194 +---------+
1195 |    top 2|
1196 |   cell 2|
1197 | bottom 2|
1198 +---------+
1199
1200 +---------+
1201 |    top 3|
1202 |   cell 3|
1203 | bottom 3|
1204 +---------+
1205 |    top 4|
1206 |   cell 4|
1207 | bottom 4|
1208 +---------+
1209
1210 +---------+
1211 |    top 5|
1212 |   cell 5|
1213 | bottom 5|
1214 +---------+
1215 |    top 6|
1216 |   cell 6|
1217 | bottom 6|
1218 +---------+
1219
1220 +---------+
1221 |    top 7|
1222 |   cell 7|
1223 | bottom 7|
1224 +---------+
1225 |    top 8|
1226 |   cell 8|
1227 | bottom 8|
1228 +---------+
1229
1230 +---------+
1231 |    top 9|
1232 |   cell 9|
1233 | bottom 9|
1234 +---------+
1235 |   top 10|
1236 |  cell 10|
1237 |bottom 10|
1238 +---------+
1239
1240 +---------+
1241 |   top 11|
1242 |  cell 11|
1243 |bottom 11|
1244 +---------+
1245 |   top 12|
1246 |  cell 12|
1247 |bottom 12|
1248 +---------+
1249
1250 +---------+
1251 |   top 13|
1252 |  cell 13|
1253 |bottom 13|
1254 +---------+
1255 |   top 14|
1256 |  cell 14|
1257 |bottom 14|
1258 +---------+
1259
1260 +---------+
1261 |   top 15|
1262 |  cell 15|
1263 |bottom 15|
1264 +---------+
1265 |   top 16|
1266 |  cell 16|
1267 |bottom 16|
1268 +---------+
1269
1270 +---------+
1271 |   top 17|
1272 |  cell 17|
1273 |bottom 17|
1274 +---------+
1275 |   top 18|
1276 |  cell 18|
1277 |bottom 18|
1278 +---------+
1279
1280 +---------+
1281 |   top 19|
1282 |  cell 19|
1283 |bottom 19|
1284 +---------+
1285 |   top 20|
1286 |  cell 20|
1287 |bottom 20|
1288 +---------+
1289 ])
1290 AT_CLEANUP
1291
1292 AT_SETUP([breaking 3 columns with many joined cells])
1293 AT_KEYWORDS([render rendering])
1294 AT_CAPTURE_FILE([input])
1295 AT_DATA([input], [3 19
1296 m4_foreach([x], [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s], [x
1297 ])@1
1298 m4_for([x], [2], [19], [1], [1*2 @x\nab\ncd
1299 ])@20
1300 ])
1301 AT_CHECK([render-test --length=6 --transpose input], [0], [dnl
1302  +--+--+
1303 a| 1|11|
1304  +--+ab|
1305 b| 2|cd|
1306  |ab+--+
1307
1308  |ab+--+
1309 c|cd|12|
1310  +--+ab|
1311 d| 3|cd|
1312  |ab+--+
1313
1314  |ab+--+
1315 e|cd|13|
1316  +--+ab|
1317 f| 4|cd|
1318  |ab+--+
1319
1320  |ab+--+
1321 g|cd|14|
1322  +--+ab|
1323 h| 5|cd|
1324  |ab+--+
1325
1326  |ab+--+
1327 i|cd|15|
1328  +--+ab|
1329 j| 6|cd|
1330  |ab+--+
1331
1332  |ab+--+
1333 k|cd|16|
1334  +--+ab|
1335 l| 7|cd|
1336  |ab+--+
1337
1338  |ab+--+
1339 m|cd|17|
1340  +--+ab|
1341 n| 8|cd|
1342  |ab+--+
1343
1344  |ab+--+
1345 o|cd|18|
1346  +--+ab|
1347 p| 9|cd|
1348  |ab+--+
1349
1350  |ab+--+
1351 q|cd|19|
1352  +--+ab|
1353 r|10|cd|
1354  |ab+--+
1355
1356  |ab+--+
1357 s|cd|20|
1358  +--+--+
1359 ])
1360 AT_CLEANUP
1361
1362 AT_SETUP([vert break 6x6, joined rows and columns])
1363 AT_KEYWORDS([render rendering])
1364 RENDER_WEAVE_6X6
1365 AT_CHECK([render-test --length=6 input], [0], [dnl
1366 +-+---+-+-+-+
1367 |a|bcd|e|f|i|
1368 +-+-+-+-+g+-+
1369 |j|m|nop|h|q|
1370 |k+-+---+-+r|
1371
1372 |k+-+-+---+r|
1373 |l|t|w|xyz|s|
1374 +-+u+-+-+-+-+
1375 |A|v|B|E|FGH|
1376 +-+-+C+-+---+
1377
1378 +---+C+-+-+-+
1379 |IJK|D|L|O|P|
1380 +-+-+-+M+-+-+
1381 |Q|RST|N|U|V|
1382 +-+---+-+-+-+
1383 ])
1384 AT_CLEANUP
1385
1386 AT_SETUP([breaking joined cells too tall for page])
1387 AT_KEYWORDS([render rendering])
1388 AT_DATA([input], [4 6
1389 1*6 @abc\ndef\nghi\njkl\nmno\npqr\nstu\nvwx\nyzA\nBCD\nEFG
1390 1*3 @HIJ\nKLM\nOPQ\nRST\nUVW
1391 1*3 @XYZ\n012\n345\n678\n90a
1392 1*2 @bcd\nefg\nhij
1393 1*2 @klm\nnop\nqrs
1394 1*2 @tuv\nwxy\nzAB
1395 @C
1396 @D
1397 @E
1398 @F
1399 @G
1400 @H
1401 ])
1402 AT_CHECK([render-test --transpose --length=6 input], [0], [dnl
1403 +---+---+---+-+
1404 |abc|HIJ|bcd|C|
1405 |def|KLM|efg+-+
1406 |ghi|OPQ|hij|D|
1407 |jkl|RST+---+-+
1408
1409 |jkl|RST+---+-+
1410 |mno|UVW|klm|E|
1411 |pqr+---+nop+-+
1412 |stu|XYZ|qrs|F|
1413 |vwx|012+---+-+
1414
1415 |vwx|012+---+-+
1416 |yzA|345|tuv|G|
1417 |BCD|678|wxy+-+
1418 |EFG|90a|zAB|H|
1419 +---+---+---+-+
1420 ])
1421 AT_CLEANUP
1422
1423 AT_SETUP([breaking cell too tall for page, no border])
1424 AT_KEYWORDS([render rendering])
1425 AT_CAPTURE_FILE([input])
1426 AT_DATA([input], [1 1
1427 abc defg hij klmn opq rstu vwx yz ABCDE FGH I JK LMNOP QR STU VWXYZ
1428 ])
1429 AT_CHECK([render-test --width=6 --length=6 input], [0], [dnl
1430    abc
1431   defg
1432    hij
1433   klmn
1434    opq
1435   rstu
1436
1437 vwx yz
1438  ABCDE
1439  FGH I
1440     JK
1441  LMNOP
1442 QR STU
1443
1444  VWXYZ
1445 ])
1446 AT_CLEANUP
1447
1448 AT_SETUP([breaking cell too tall for page, with border])
1449 AT_KEYWORDS([render rendering])
1450 AT_CAPTURE_FILE([input])
1451 AT_DATA([input], [1 1
1452 @abc defg hij klmn opq rstu vwx yz ABCDE FGH I JK LMNOP QR STU VWXYZ
1453 ])
1454 AT_CHECK([render-test --width=7 --length=6 input], [0], [dnl
1455 +-----+
1456 |  abc|
1457 | defg|
1458 |  hij|
1459 | klmn|
1460 |  opq|
1461
1462 | klmn|
1463 |  opq|
1464 | rstu|
1465 |  vwx|
1466 |   yz|
1467 |ABCDE|
1468
1469 |   yz|
1470 |ABCDE|
1471 |FGH I|
1472 |   JK|
1473 |LMNOP|
1474 |   QR|
1475
1476 |LMNOP|
1477 |   QR|
1478 |  STU|
1479 |VWXYZ|
1480 +-----+
1481 ])
1482 AT_CLEANUP
1483 \f
1484 AT_BANNER([output rendering -- double page breaks])
1485
1486 AT_SETUP([double break 6x6, joined rows and columns])
1487 AT_KEYWORDS([render rendering])
1488 RENDER_WEAVE_6X6
1489 AT_CHECK([render-test --width=6 --length=6 input], [0], [dnl
1490 +-+--
1491 |a|bc
1492 +-+-+
1493 |j|m|
1494 |k+-+
1495
1496 |k+-+
1497 |l|t|
1498 +-+u|
1499 |A|v|
1500 +-+-+
1501
1502 +---+
1503 |IJK|
1504 +-+-+
1505 |Q|RS
1506 +-+--
1507
1508 --+-+
1509 cd|e|
1510 +-+-+
1511 |nop|
1512 +---+
1513
1514 +-+--
1515 |w|xy
1516 +-+-+
1517 |B|E|
1518 |C+-+
1519
1520 |C+-+
1521 |D|L|
1522 +-+M|
1523 ST|N|
1524 --+-+
1525
1526 +-+-+
1527 |f|i|
1528 |g+-+
1529 |h|q|
1530 +-+r|
1531
1532 --+r|
1533 yz|s|
1534 +-+-+
1535 |FGH|
1536 +---+
1537
1538 +-+-+
1539 |O|P|
1540 +-+-+
1541 |U|V|
1542 +-+-+
1543 ])
1544 AT_CLEANUP
1545
1546 AT_SETUP([double break 8x8, with joins, left and right headers])
1547 AT_KEYWORDS([render rendering])
1548 RENDER_8X8([1 1 0 0])
1549 AT_CHECK([render-test input --width=14 --length=14], [0], [dnl
1550 +-+-+-+-+-+-+
1551 |a|b|c|d|e|h|
1552 +-+-+-+-+-+-+
1553 |i|jkl|m|n|t|
1554 +-+-+-+-+-+-+
1555 |u|v|wxy|z|D|
1556 +-+-+-+-+-+-+
1557 |E|F|I|JKL|P|
1558 +-+G+-+---+-+
1559 |Q|H|R|UVW|Y|
1560 +-+-+S+-+-+-+
1561 |Z|0|T|3|4|8|
1562 +-+1+-+-+-+-+
1563
1564 +-+1+---+-+-+
1565 |9|2|abc|d|h|
1566 +-+-+-+-+-+-+
1567 |i|j|k|l|m|p|
1568 +-+-+-+-+-+-+
1569
1570 +-+--+-+-+
1571 |a| f|g|h|
1572 +-+--+-+-+
1573 |i|op|q|t|
1574 +-+--+r+-+
1575 |u| A|s|D|
1576 +-+ B+-+-+
1577
1578 +-+ B+-+-+
1579 |E| C|M|P|
1580 +-+--+N+-+
1581 |Q| X|O|Y|
1582 +-+--+-+-+
1583 |Z|56|7|8|
1584 +-+--+-+-+
1585 |9| efg|h|
1586 +-+--+-+-+
1587 |i| n|o|p|
1588 +-+--+-+-+
1589 ])
1590 AT_CLEANUP
1591
1592 AT_SETUP([double break 8x8, with joins, top and bottom headers])
1593 AT_KEYWORDS([render rendering])
1594 RENDER_8X8([0 0 1 1])
1595 AT_CHECK([render-test input --width=14 --length=14], [0], [dnl
1596 +-+-+-+-+-+-+
1597 |a|b|c|d|e|f|
1598 +-+-+-+-+-+-+
1599 |i|jkl|m|nop|
1600 +-+-+-+-+-+-+
1601 |u|v|wxy|z|A|
1602 +-+-+-+-+-+B|
1603 |E|F|I|JKL|C|
1604 +-+G+-+---+-+
1605 |Q|H|R|UVW|X|
1606 +-+-+-+-+-+-+
1607 |i|j|k|l|m|n|
1608 +-+-+-+-+-+-+
1609
1610 +-+-+-+-+-+-+
1611 |a|b|c|d|e|f|
1612 +-+-+-+-+-+-+
1613 |Z|0|S|3|456|
1614 | |1|T| |   |
1615 +-+2+-+-+-+-+
1616 |9| |abc|d|ef
1617 +-+-+-+-+-+-+
1618 |i|j|k|l|m|n|
1619 +-+-+-+-+-+-+
1620
1621 +-+-+
1622 |g|h|
1623 +-+-+
1624 |q|t|
1625 |r+-+
1626 |s|D|
1627 +-+-+
1628 |M|P|
1629 |N+-+
1630 |O|Y|
1631 +-+-+
1632 |o|p|
1633 +-+-+
1634
1635 +-+-+
1636 |g|h|
1637 +-+-+
1638 |7|8|
1639 | | |
1640 +-+-+
1641 fg|h|
1642 +-+-+
1643 |o|p|
1644 +-+-+
1645 ])
1646 AT_CLEANUP
1647
1648 AT_SETUP([double break 8x8, with joins, all headers])
1649 AT_KEYWORDS([render rendering])
1650 RENDER_8X8([1 1 1 1])
1651 AT_CHECK([render-test input --width=14 --length=14], [0], [dnl
1652 +-+-+-+-+-+-+
1653 |a|b|c|d|e|h|
1654 +-+-+-+-+-+-+
1655 |i|jkl|m|n|t|
1656 +-+-+-+-+-+-+
1657 |u|v|wxy|z|D|
1658 +-+-+-+-+-+-+
1659 |E|F|I|JKL|P|
1660 +-+G+-+---+-+
1661 |Q|H|R|UVW|Y|
1662 +-+-+-+-+-+-+
1663 |i|j|k|l|m|p|
1664 +-+-+-+-+-+-+
1665
1666 +-+-+-+-+-+-+
1667 |a|b|c|d|e|h|
1668 +-+-+-+-+-+-+
1669 |Z|0|S|3|4|8|
1670 | |1|T| | | |
1671 +-+2+-+-+-+-+
1672 |9| |abc|d|h|
1673 +-+-+-+-+-+-+
1674 |i|j|k|l|m|p|
1675 +-+-+-+-+-+-+
1676
1677 +-+--+-+-+
1678 |a| f|g|h|
1679 +-+--+-+-+
1680 |i|op|q|t|
1681 +-+--+r+-+
1682 |u| A|s|D|
1683 +-+ B+-+-+
1684 |E| C|M|P|
1685 +-+--+N+-+
1686 |Q| X|O|Y|
1687 +-+--+-+-+
1688 |i| n|o|p|
1689 +-+--+-+-+
1690
1691 +-+--+-+-+
1692 |a| f|g|h|
1693 +-+--+-+-+
1694 |Z|56|7|8|
1695 | |  | | |
1696 +-+--+-+-+
1697 |9| efg|h|
1698 +-+--+-+-+
1699 |i| n|o|p|
1700 +-+--+-+-+
1701 ])
1702 AT_CLEANUP
1703
1704 AT_SETUP([double break joined cells too big for page])
1705 AT_KEYWORDS([render rendering])
1706 AT_DATA([input], [7 7
1707 @a
1708 @b
1709 @c
1710 @d
1711 @e
1712 @f
1713 @g
1714 @h
1715 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.
1716 @i
1717 @j
1718 @k
1719 @l
1720 @m
1721 ])
1722 AT_CHECK([render-test --width=15 --length=15 input], [0], [dnl
1723 +-+--+--+---+
1724 |a| b| c|  d|
1725 +-+--+--+---+
1726 |h|       The
1727 | |        su
1728 | |    determ
1729 +-+       han
1730 |i|missing va
1731 | |     If IN
1732 | |         s
1733 +-+      user
1734 |j|        va
1735 | |   include
1736 | | calculati
1737 +-+ NOINCLUDE
1738
1739 +-+ NOINCLUDE
1740 |k|      whic
1741 | |
1742 +-+      user
1743 |l|        va
1744 | |         e
1745 | |
1746 +-+
1747 |m|
1748 | |
1749 | |
1750 +-+----------
1751
1752 +--+--+--+
1753 | e| f| g|
1754 +--+--+--+
1755 e MISSING|
1756 ubcommand|
1757 mines the|
1758 ndling of|
1759 ariables.|
1760 NCLUDE is|
1761 set, then|
1762 r‑missing|
1763 alues are|
1764 ed in the|
1765 ions.  If|
1766 E is set,|
1767
1768 E is set,|
1769 ch is the|
1770  default,|
1771 r‑missing|
1772 alues are|
1773 excluded.|
1774          |
1775          |
1776          |
1777          |
1778          |
1779 ---------+
1780 ])
1781 AT_CLEANUP
1782 \f
1783 AT_BANNER([output rendering -- problematic procedures])
1784
1785 dnl LIST used to put columns right up next to each other without any
1786 dnl intervening space, so this checks for regression.
1787 AT_SETUP([LIST puts space between columns])
1788 AT_KEYWORDS([render rendering])
1789 AT_DATA([list.sps], [dnl
1790 DATA LIST LIST NOTABLE /x y z (F1.0).
1791 BEGIN DATA.
1792 1 2 3
1793 4 5 6
1794 7 8 9
1795 END DATA.
1796 LIST.
1797 ])
1798 AT_CHECK([pspp list.sps], [0], [dnl
1799 DATA LIST
1800
1801 BEGIN DATA
1802
1803 LIST
1804
1805 Data List
1806 x y z
1807 -----
1808 1 2 3
1809 4 5 6
1810 7 8 9
1811 ])
1812 AT_CLEANUP