diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/ref/layout/grid-headers-1.png | bin | 0 -> 126196 bytes | |||
| -rw-r--r-- | tests/ref/layout/grid-headers-2.png | bin | 0 -> 113070 bytes | |||
| -rw-r--r-- | tests/ref/layout/grid-headers-3.png | bin | 0 -> 102354 bytes | |||
| -rw-r--r-- | tests/ref/layout/grid-headers-4.png | bin | 0 -> 36452 bytes | |||
| -rw-r--r-- | tests/ref/layout/grid-rowspan-basic.png | bin | 94597 -> 98653 bytes | |||
| -rw-r--r-- | tests/ref/layout/grid-rtl.png | bin | 72464 -> 97027 bytes | |||
| -rw-r--r-- | tests/typ/layout/grid-headers-1.typ | 162 | ||||
| -rw-r--r-- | tests/typ/layout/grid-headers-2.typ | 52 | ||||
| -rw-r--r-- | tests/typ/layout/grid-headers-3.typ | 35 | ||||
| -rw-r--r-- | tests/typ/layout/grid-headers-4.typ | 58 | ||||
| -rw-r--r-- | tests/typ/layout/grid-rowspan-basic.typ | 21 | ||||
| -rw-r--r-- | tests/typ/layout/grid-rtl.typ | 15 |
12 files changed, 343 insertions, 0 deletions
diff --git a/tests/ref/layout/grid-headers-1.png b/tests/ref/layout/grid-headers-1.png Binary files differnew file mode 100644 index 00000000..7ae2d8d3 --- /dev/null +++ b/tests/ref/layout/grid-headers-1.png diff --git a/tests/ref/layout/grid-headers-2.png b/tests/ref/layout/grid-headers-2.png Binary files differnew file mode 100644 index 00000000..3dbc07c8 --- /dev/null +++ b/tests/ref/layout/grid-headers-2.png diff --git a/tests/ref/layout/grid-headers-3.png b/tests/ref/layout/grid-headers-3.png Binary files differnew file mode 100644 index 00000000..9ee77d50 --- /dev/null +++ b/tests/ref/layout/grid-headers-3.png diff --git a/tests/ref/layout/grid-headers-4.png b/tests/ref/layout/grid-headers-4.png Binary files differnew file mode 100644 index 00000000..e60877d8 --- /dev/null +++ b/tests/ref/layout/grid-headers-4.png diff --git a/tests/ref/layout/grid-rowspan-basic.png b/tests/ref/layout/grid-rowspan-basic.png Binary files differindex 966c8fd9..783991b3 100644 --- a/tests/ref/layout/grid-rowspan-basic.png +++ b/tests/ref/layout/grid-rowspan-basic.png diff --git a/tests/ref/layout/grid-rtl.png b/tests/ref/layout/grid-rtl.png Binary files differindex 3cf0b9aa..d628ee8a 100644 --- a/tests/ref/layout/grid-rtl.png +++ b/tests/ref/layout/grid-rtl.png diff --git a/tests/typ/layout/grid-headers-1.typ b/tests/typ/layout/grid-headers-1.typ new file mode 100644 index 00000000..f1afe70e --- /dev/null +++ b/tests/typ/layout/grid-headers-1.typ @@ -0,0 +1,162 @@ +#set page(width: auto, height: 12em) +#table( + columns: 5, + align: center + horizon, + table.header( + table.cell(colspan: 5)[*Cool Zone*], + table.cell(stroke: red)[*Name*], table.cell(stroke: aqua)[*Number*], [*Data 1*], [*Data 2*], [*Etc*], + table.hline(start: 2, end: 3, stroke: yellow) + ), + ..range(0, 6).map(i => ([John \##i], table.cell(stroke: green)[123], table.cell(stroke: blue)[456], [789], [?], table.hline(start: 4, end: 5, stroke: red))).flatten() +) + +--- +// Disable repetition +#set page(width: auto, height: 12em) +#table( + columns: 5, + align: center + horizon, + table.header( + table.cell(colspan: 5)[*Cool Zone*], + table.cell(stroke: red)[*Name*], table.cell(stroke: aqua)[*Number*], [*Data 1*], [*Data 2*], [*Etc*], + table.hline(start: 2, end: 3, stroke: yellow), + repeat: false + ), + ..range(0, 6).map(i => ([John \##i], table.cell(stroke: green)[123], table.cell(stroke: blue)[456], [789], [?], table.hline(start: 4, end: 5, stroke: red))).flatten() +) + +--- +#set page(width: auto, height: 12em) +#table( + columns: 5, + align: center + horizon, + gutter: 3pt, + table.header( + table.cell(colspan: 5)[*Cool Zone*], + table.cell(stroke: red)[*Name*], table.cell(stroke: aqua)[*Number*], [*Data 1*], [*Data 2*], [*Etc*], + table.hline(start: 2, end: 3, stroke: yellow), + ), + ..range(0, 6).map(i => ([John \##i], table.cell(stroke: green)[123], table.cell(stroke: blue)[456], [789], [?], table.hline(start: 4, end: 5, stroke: red))).flatten() +) + +--- +// Relative lengths +#set page(height: 10em) +#table( + rows: (30%, 30%, auto), + table.header( + [*A*], + [*B*] + ), + [C], + [C] +) + +--- +#grid( + grid.cell(y: 1)[a], + grid.header(grid.cell(y: 0)[b]), + grid.cell(y: 2)[c] +) + +--- +// When the header is the last grid child, it shouldn't include the gutter row +// after it, because there is none. +#grid( + columns: 2, + gutter: 3pt, + grid.header( + [a], [b], + [c], [d] + ) +) + +--- +#set page(height: 14em) +#let t(n) = table( + columns: 3, + align: center + horizon, + gutter: 3pt, + table.header( + table.cell(colspan: 3)[*Cool Zone #n*], + [*Name*], [*Num*], [*Data*] + ), + ..range(0, 5).map(i => ([\##i], table.cell(stroke: green)[123], table.cell(stroke: blue)[456])).flatten() +) +#grid( + gutter: 3pt, + t(0), + t(1) +) + +--- +// Test line positioning in header +#table( + columns: 3, + stroke: none, + table.hline(stroke: red, end: 2), + table.vline(stroke: red, end: 3), + table.header( + table.hline(stroke: aqua, start: 2), + table.vline(stroke: aqua, start: 3), [*A*], table.hline(stroke: orange), table.vline(stroke: orange), [*B*], + [*C*], [*D*] + ), + [a], [b], + [c], [d], + [e], [f] +) + +--- +// Error: 3:3-3:19 header must start at the first row +// Hint: 3:3-3:19 remove any rows before the header +#grid( + [a], + grid.header([b]) +) + +--- +// Error: 4:3-4:19 header must start at the first row +// Hint: 4:3-4:19 remove any rows before the header +#grid( + columns: 2, + [a], + grid.header([b]) +) + +--- +// Error: 3:3-3:19 cannot have more than one header +#grid( + grid.header([a]), + grid.header([b]), + [a], +) + +--- +// Error: 2:3-2:20 cannot use `table.header` as a grid header; use `grid.header` instead +#grid( + table.header([a]), + [a], +) + +--- +// Error: 2:3-2:19 cannot use `grid.header` as a table header; use `table.header` instead +#table( + grid.header([a]), + [a], +) + +--- +// Error: 14-28 cannot place a grid header within another header +#grid.header(grid.header[a]) + +--- +// Error: 14-29 cannot place a table header within another header +#grid.header(table.header[a]) + +--- +// Error: 15-29 cannot place a grid header within another header +#table.header(grid.header[a]) + +--- +// Error: 15-30 cannot place a table header within another header +#table.header(table.header[a]) diff --git a/tests/typ/layout/grid-headers-2.typ b/tests/typ/layout/grid-headers-2.typ new file mode 100644 index 00000000..75c9b330 --- /dev/null +++ b/tests/typ/layout/grid-headers-2.typ @@ -0,0 +1,52 @@ +#set page(height: 15em) +#table( + rows: (auto, 2.5em, auto), + table.header( + [*Hello*], + [*World*] + ), + block(width: 2em, height: 20em, fill: red) +) + +--- +// Rowspan sizing algorithm doesn't do the best job at non-contiguous content +// ATM. +#set page(height: 15em) + +#table( + rows: (auto, 2.5em, 2em, auto, 5em), + table.header( + [*Hello*], + [*World*] + ), + table.cell(rowspan: 3, lorem(40)) +) + +--- +// Rowspan sizing algorithm doesn't do the best job at non-contiguous content +// ATM. +#set page(height: 15em) + +#table( + rows: (auto, 2.5em, 2em, auto, 5em), + gutter: 3pt, + table.header( + [*Hello*], + [*World*] + ), + table.cell(rowspan: 3, lorem(40)) +) + +--- +// This should look right +#set page(height: 15em) + +#table( + rows: (auto, 2.5em, 2em, auto), + gutter: 3pt, + table.header( + [*Hello*], + [*World*] + ), + table.cell(rowspan: 3, lorem(40)) +) diff --git a/tests/typ/layout/grid-headers-3.typ b/tests/typ/layout/grid-headers-3.typ new file mode 100644 index 00000000..e7437cf7 --- /dev/null +++ b/tests/typ/layout/grid-headers-3.typ @@ -0,0 +1,35 @@ +// Test lack of space for header + text. +#set page(height: 9em) + +#table( + rows: (auto, 2.5em, auto, auto, 10em), + gutter: 3pt, + table.header( + [*Hello*], + [*World*] + ), + table.cell(rowspan: 3, lorem(80)) +) + +--- +// Orphan header prevention test +#set page(height: 12em) +#v(8em) +#grid( + columns: 3, + grid.header( + [*Mui*], [*A*], grid.cell(rowspan: 2, fill: orange)[*B*], + [*Header*], [*Header* #v(0.1em)] + ), + ..([Test], [Test], [Test]) * 20 +) + +--- +// Empty header should just be a repeated blank row +#set page(height: 12em) +#table( + columns: 4, + align: center + horizon, + table.header(), + ..range(0, 4).map(i => ([John \##i], table.cell(stroke: green)[123], table.cell(stroke: blue)[456], [789])).flatten() +) diff --git a/tests/typ/layout/grid-headers-4.typ b/tests/typ/layout/grid-headers-4.typ new file mode 100644 index 00000000..13fd41dd --- /dev/null +++ b/tests/typ/layout/grid-headers-4.typ @@ -0,0 +1,58 @@ +// When a header has a rowspan with an empty row, it should be displayed +// properly +#set page(height: 10em) + +#let count = counter("g") +#table( + rows: (auto, 2em, auto, auto), + table.header( + [eeec], + table.cell(rowspan: 2, count.step() + count.display()), + ), + [d], + block(width: 5em, fill: yellow, lorem(15)), + [d] +) +#count.display() + +--- +// Ensure header expands to fit cell placed in it after its declaration +#set page(height: 10em) +#table( + columns: 2, + table.header( + [a], [b], + [c], + ), + table.cell(x: 1, y: 1, rowspan: 2, lorem(80)) +) + +--- +// Nested table with header should repeat both headers +#set page(height: 10em) +#table( + table.header( + [a] + ), + table( + table.header( + [b] + ), + [a\ b\ c\ d] + ) +) + +--- +#set page(height: 12em) +#table( + table.header( + table( + table.header( + [b] + ), + [c], + [d] + ) + ), + [a\ b] +) diff --git a/tests/typ/layout/grid-rowspan-basic.typ b/tests/typ/layout/grid-rowspan-basic.typ index 49164fa6..1cc7289b 100644 --- a/tests/typ/layout/grid-rowspan-basic.typ +++ b/tests/typ/layout/grid-rowspan-basic.typ @@ -209,3 +209,24 @@ grid.cell(y: 6, breakable: false)[m], grid.cell(y: 6, breakable: true)[n], grid.cell(y: 7, breakable: false)[o], grid.cell(y: 7, breakable: true)[p], grid.cell(y: 7, breakable: auto)[q] ) + +--- +#table( + columns: 2, + table.cell(stroke: (bottom: red))[a], [b], + table.hline(stroke: green), + table.cell(stroke: (top: yellow, left: green, right: aqua, bottom: blue), colspan: 1, rowspan: 2)[d], table.cell(colspan: 1, rowspan: 2)[e], + [f], + [g] +) + +--- +#table( + columns: 2, + gutter: 3pt, + table.cell(stroke: (bottom: red))[a], [b], + table.hline(stroke: green), + table.cell(stroke: (top: yellow, left: green, right: aqua, bottom: blue), colspan: 1, rowspan: 2)[d], table.cell(colspan: 1, rowspan: 2)[e], + [f], + [g] +) diff --git a/tests/typ/layout/grid-rtl.typ b/tests/typ/layout/grid-rtl.typ index be9fac51..cea67d96 100644 --- a/tests/typ/layout/grid-rtl.typ +++ b/tests/typ/layout/grid-rtl.typ @@ -178,3 +178,18 @@ [e], [f] ) + +--- +// Headers +#set page(height: 15em) +#set text(dir: rtl) +#table( + columns: 5, + align: center + horizon, + table.header( + table.cell(colspan: 5)[*Cool Zone*], + table.cell(stroke: red)[*N1*], table.cell(stroke: aqua)[*N2*], [*D1*], [*D2*], [*Etc*], + table.hline(start: 2, end: 3, stroke: yellow) + ), + ..range(0, 10).map(i => ([\##i], table.cell(stroke: green)[123], table.cell(stroke: blue)[456], [789], [?], table.hline(start: 4, end: 5, stroke: red))).flatten() +) |
