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