diff options
| author | Laurenz <laurmaedje@gmail.com> | 2021-06-30 11:04:53 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-06-30 11:04:53 +0200 |
| commit | 45812b700114a51f0ee21e31f4454cde3729eaf5 (patch) | |
| tree | 435e5a0ade7dc2cbf9199418c618846bb655e957 /tests/typ | |
| parent | 1c43d8af12a8d318fb681713d0e66eb754485589 (diff) | |
| parent | b2fb42cc7019b0269e892c4e39c52557252fecf9 (diff) | |
Merge pull request #35 from typst/wide-calls
Wide calls
Diffstat (limited to 'tests/typ')
| -rw-r--r-- | tests/typ/code/call-wide.typ | 47 | ||||
| -rw-r--r-- | tests/typ/code/call.typ | 3 | ||||
| -rw-r--r-- | tests/typ/coma.typ | 2 | ||||
| -rw-r--r-- | tests/typ/insert/circle.typ | 20 | ||||
| -rw-r--r-- | tests/typ/insert/ellipse.typ | 9 | ||||
| -rw-r--r-- | tests/typ/insert/rect.typ | 2 | ||||
| -rw-r--r-- | tests/typ/insert/square.typ | 13 | ||||
| -rw-r--r-- | tests/typ/layout/containers.typ | 2 | ||||
| -rw-r--r-- | tests/typ/layout/grid-1.typ | 8 | ||||
| -rw-r--r-- | tests/typ/layout/grid-2.typ | 2 | ||||
| -rw-r--r-- | tests/typ/layout/grid-3.typ | 10 | ||||
| -rw-r--r-- | tests/typ/layout/pad.typ | 7 | ||||
| -rw-r--r-- | tests/typ/layout/page.typ | 14 | ||||
| -rw-r--r-- | tests/typ/layout/pagebreak.typ | 4 | ||||
| -rw-r--r-- | tests/typ/text/basic.typ | 2 | ||||
| -rw-r--r-- | tests/typ/text/bidi.typ | 36 | ||||
| -rw-r--r-- | tests/typ/text/chinese.typ | 2 | ||||
| -rw-r--r-- | tests/typ/text/font.typ | 16 | ||||
| -rw-r--r-- | tests/typ/text/par.typ | 4 | ||||
| -rw-r--r-- | tests/typ/text/shaping.typ | 10 |
20 files changed, 130 insertions, 83 deletions
diff --git a/tests/typ/code/call-wide.typ b/tests/typ/code/call-wide.typ new file mode 100644 index 00000000..2bb6d82e --- /dev/null +++ b/tests/typ/code/call-wide.typ @@ -0,0 +1,47 @@ +// Test wide calls. + +--- +// Test multiple wide calls in separate expressions. +#font!(color: eastern) - First +#font!(color: forest) - Second + +--- +// Test in heading. +# A #align!(right) B +C + +--- +// Test evaluation semantics. +// Ref: false + +#let r +#let x = 1 +#let f(x, body) = (x, body) + +[ + { r = f!(x) } + { x = 2 } +] + +#test(repr(r), "(1, <template>)") + +--- +// Test multiple wide calls in one expression. +// Ref: false + +#let id(x) = x +#let add(x, y) = x + y + +// Error: 11-13 duplicate wide call +[{id!() + id!()}] + +// Test nested wide calls. +// Error: 2-6 duplicate wide call +[#add!(id!())] + +--- +// Test missing parentheses. +// Ref: false + +// Error: 4 expected argument list +#f! diff --git a/tests/typ/code/call.typ b/tests/typ/code/call.typ index 5351eb29..eb5c6732 100644 --- a/tests/typ/code/call.typ +++ b/tests/typ/code/call.typ @@ -23,9 +23,6 @@ #let alias = type #test(alias(alias), "function") -// Library function `font` returns template. -#test(type(font(size: 12pt)), "template") - --- // Callee expressions. { diff --git a/tests/typ/coma.typ b/tests/typ/coma.typ index b1eefc9f..5074bd9e 100644 --- a/tests/typ/coma.typ +++ b/tests/typ/coma.typ @@ -1,5 +1,5 @@ // Configuration with `page` and `font` functions. -#page(width: 450pt, margins: 1cm) +#page!(width: 450pt, margins: 1cm) // There are variables and they can take normal values like strings, ... #let city = "Berlin" diff --git a/tests/typ/insert/circle.typ b/tests/typ/insert/circle.typ index d2fa928e..1c8808a4 100644 --- a/tests/typ/insert/circle.typ +++ b/tests/typ/insert/circle.typ @@ -4,18 +4,24 @@ // Test auto sizing. Auto-sized circle. \ -#circle(fill: #eb5278, align(center, center, [But, soft!])) +#circle(fill: #eb5278)[ + #align!(center, center) + But, soft! +] Center-aligned rect in auto-sized circle. #circle(fill: forest)[ - #align(center, center) - #rect(fill: conifer, pad(5pt)[But, soft!]) + #align!(center, center) + #rect!(fill: conifer) + #pad!(5pt) + But, soft! ] 100%-width rect in auto-sized circle. \ -#circle(fill: forest, rect(width: 100%, fill: conifer)[ +#circle(fill: forest)[ + #rect!(width: 100%, fill: conifer) But, soft! what light through yonder window breaks? -]) +] Expanded by height. #circle(fill: conifer)[A \ B \ C] @@ -23,8 +29,8 @@ Expanded by height. --- // Test relative sizing. #rect(width: 100%, height: 50pt, fill: #aaa)[ - #align(center, center) - #font(color: #fff) + #align!(center, center) + #font!(color: #fff) #circle(radius: 10pt, fill: eastern)[A] #circle(height: 60%, fill: eastern)[B] #circle(width: 20% + 20pt, fill: eastern)[C] diff --git a/tests/typ/insert/ellipse.typ b/tests/typ/insert/ellipse.typ index 9b10eded..a086ab74 100644 --- a/tests/typ/insert/ellipse.typ +++ b/tests/typ/insert/ellipse.typ @@ -3,11 +3,10 @@ --- 100% rect in 100% ellipse in fixed rect. \ #rect(width: 3cm, height: 2cm, fill: #2a631a)[ - #ellipse(width: 100%, height: 100%, fill: forest)[ - #rect(width: 100%, height: 100%, fill: conifer)[ - #align(center, center)[Stuff inside an ellipse!] - ] - ] + #ellipse!(width: 100%, height: 100%, fill: forest) + #rect!(width: 100%, height: 100%, fill: conifer) + #align!(center, center) + Stuff inside an ellipse! ] Auto-sized ellipse. \ diff --git a/tests/typ/insert/rect.typ b/tests/typ/insert/rect.typ index f450064a..93df071b 100644 --- a/tests/typ/insert/rect.typ +++ b/tests/typ/insert/rect.typ @@ -3,7 +3,7 @@ --- // Test the `rect` function. -#page(width: 150pt) +#page!(width: 150pt) // Fit to text. #rect(fill: conifer)[Textbox] diff --git a/tests/typ/insert/square.typ b/tests/typ/insert/square.typ index 649d31c0..4dd8964f 100644 --- a/tests/typ/insert/square.typ +++ b/tests/typ/insert/square.typ @@ -3,11 +3,10 @@ --- Auto-sized square. \ #square(fill: eastern)[ - #align(center) - #pad(5pt)[ - #font(color: #fff, weight: bold) - Typst - ] + #align!(center) + #pad!(5pt) + #font!(color: #fff, weight: bold) + Typst ] --- @@ -18,14 +17,14 @@ Auto-sized square. \ --- // Test height overflow. -#page(width: 75pt, height: 100pt) +#page!(width: 75pt, height: 100pt) #square(fill: conifer)[ But, soft! what light through yonder window breaks? ] --- // Test width overflow. -#page(width: 100pt, height: 75pt) +#page!(width: 100pt, height: 75pt) #square(fill: conifer)[ But, soft! what light through yonder window breaks? ] diff --git a/tests/typ/layout/containers.typ b/tests/typ/layout/containers.typ index b2835b5e..75e2617b 100644 --- a/tests/typ/layout/containers.typ +++ b/tests/typ/layout/containers.typ @@ -12,7 +12,7 @@ Apart --- // Test block over multiple pages. -#page(height: 60pt) +#page!(height: 60pt) First! #block[ diff --git a/tests/typ/layout/grid-1.typ b/tests/typ/layout/grid-1.typ index 827a98a7..2938a7f2 100644 --- a/tests/typ/layout/grid-1.typ +++ b/tests/typ/layout/grid-1.typ @@ -3,7 +3,7 @@ --- #let rect(width, color) = rect(width: width, height: 2cm, fill: color) -#page(width: 100pt, height: 140pt) +#page!(width: 100pt, height: 140pt) #grid( columns: (auto, 1fr, 3fr, 0.25cm, 3%, 2mm + 10%), rect(0.5cm, #2a631a), @@ -33,7 +33,7 @@ ) --- -#page(height: 3cm, width: 2cm) +#page!(height: 3cm, width: 2cm) #grid( columns: (1fr, 1cm, 1fr, 1fr), column-dir: ttb, @@ -46,8 +46,8 @@ ) --- -#page(height: 3cm, margins: 0pt) -#align(center) +#page!(height: 3cm, margins: 0pt) +#align!(center) #grid( columns: (1fr,), rows: (1fr, auto, 2fr), diff --git a/tests/typ/layout/grid-2.typ b/tests/typ/layout/grid-2.typ index 277e695c..e28cfaf2 100644 --- a/tests/typ/layout/grid-2.typ +++ b/tests/typ/layout/grid-2.typ @@ -1,7 +1,7 @@ // Test using the `grid` function to create a finance table. --- -#page(width: 12cm, height: 2.5cm) +#page!(width: 12cm, height: 2.5cm) #grid( columns: 5, gutter-columns: (2fr, 1fr, 1fr), diff --git a/tests/typ/layout/grid-3.typ b/tests/typ/layout/grid-3.typ index 6ef0ab83..62af4072 100644 --- a/tests/typ/layout/grid-3.typ +++ b/tests/typ/layout/grid-3.typ @@ -1,7 +1,7 @@ // Test grid cells that overflow to the next region. --- -#page(width: 5cm, height: 3cm) +#page!(width: 5cm, height: 3cm) #grid( columns: 2, gutter-rows: 3 * (8pt,), @@ -18,7 +18,7 @@ --- // Test a column that starts overflowing right after another row/column did // that. -#page(width: 5cm, height: 2cm) +#page!(width: 5cm, height: 2cm) #grid( columns: 4 * (1fr,), gutter-rows: (10pt,), @@ -32,7 +32,7 @@ --- // Test two columns in the same row overflowing by a different amount. -#page(width: 5cm, height: 2cm) +#page!(width: 5cm, height: 2cm) #grid( columns: 3 * (1fr,), gutter-rows: (8pt,), @@ -48,7 +48,7 @@ --- // Test grid within a grid, overflowing. -#page(width: 5cm, height: 2.25cm) +#page!(width: 5cm, height: 2.25cm) #grid( columns: 4 * (1fr,), gutter-rows: (10pt,), @@ -62,7 +62,7 @@ --- // Test partition of `fr` units before and after multi-region layout. -#page(width: 5cm, height: 4cm) +#page!(width: 5cm, height: 4cm) #grid( columns: 2 * (1fr,), rows: (1fr, 2fr, auto, 1fr, 1cm), diff --git a/tests/typ/layout/pad.typ b/tests/typ/layout/pad.typ index 142ae4a9..05f9b359 100644 --- a/tests/typ/layout/pad.typ +++ b/tests/typ/layout/pad.typ @@ -6,9 +6,8 @@ // All sides together. #rect(fill: conifer)[ - #pad(10pt, right: 20pt)[ - #rect(width: 20pt, height: 20pt, fill: #eb5278) - ] + #pad!(10pt, right: 20pt) + #rect(width: 20pt, height: 20pt, fill: #eb5278) ] // Error: 13-23 missing argument: body @@ -29,7 +28,7 @@ Hi #box(pad(left: 10pt)) there --- // Test that the pad node doesn't consume the whole region. -#page(height: 6cm) +#page!(height: 6cm) #align(left)[Before] #pad(10pt, image("../../res/tiger.jpg")) diff --git a/tests/typ/layout/page.typ b/tests/typ/layout/page.typ index cf787e5d..d154d5f4 100644 --- a/tests/typ/layout/page.typ +++ b/tests/typ/layout/page.typ @@ -2,7 +2,7 @@ --- // Set width and height. -#page(width: 120pt, height: 120pt) +#page!(width: 120pt, height: 120pt) #page(width: 40pt)[High] #page(height: 40pt)[Wide] @@ -13,7 +13,7 @@ ] // Set individual margins. -#page(height: 40pt) +#page!(height: 40pt) #page(left: 0pt, align(left)[Left]) #page(right: 0pt, align(right)[Right]) #page(top: 0pt, align(top)[Top]) @@ -22,21 +22,21 @@ // Ensure that specific margins override general margins. #page(margins: 0pt, left: 20pt)[Overriden] -// Error: 7-18 unknown variable -#page(nonexistant) +// Error: 8-19 unknown variable +#page!(nonexistant) // Flipped predefined paper. #page("a11", flip: true)[Flipped A11] // Flipped custom page size. -#page(width: 40pt, height: 120pt) -#page(flip: true) +#page!(width: 40pt, height: 120pt) +#page!(flip: true) Wide --- // Test a combination of pages with bodies and normal content. -#page(height: 50pt) +#page!(height: 50pt) #page[First] #page[Second] diff --git a/tests/typ/layout/pagebreak.typ b/tests/typ/layout/pagebreak.typ index dedf1ce6..b13a1bfd 100644 --- a/tests/typ/layout/pagebreak.typ +++ b/tests/typ/layout/pagebreak.typ @@ -3,7 +3,7 @@ --- First of two #pagebreak() -#page(height: 40pt) +#page!(height: 40pt) --- // Make sure that you can't do page related stuff in a container. @@ -14,7 +14,7 @@ A #pagebreak() // Error: 11-15 cannot modify page from here - #page("a4") + #page("a4")[] ] C diff --git a/tests/typ/text/basic.typ b/tests/typ/text/basic.typ index d5f0de05..6e36a210 100644 --- a/tests/typ/text/basic.typ +++ b/tests/typ/text/basic.typ @@ -1,7 +1,7 @@ // Test simple text. --- -#page(width: 250pt, height: 110pt) +#page!(width: 250pt, height: 110pt) But, soft! what light through yonder window breaks? It is the east, and Juliet is the sun. Arise, fair sun, and kill the envious moon, Who is already sick and diff --git a/tests/typ/text/bidi.typ b/tests/typ/text/bidi.typ index 2e7236ca..26099b91 100644 --- a/tests/typ/text/bidi.typ +++ b/tests/typ/text/bidi.typ @@ -3,54 +3,54 @@ --- // Test reordering with different top-level paragraph directions. #let text = [Text טֶקסט] -#font(family: ("EB Garamond", "Noto Serif Hebrew")) -#lang("he") {text} -#lang("de") {text} +#font!(family: ("EB Garamond", "Noto Serif Hebrew")) +#lang!("he") {text} +#lang!("de") {text} --- // Test that consecutive, embedded LTR runs stay LTR. // Here, we have two runs: "A" and italic "B". #let text = [أنت A_B_مطرC] -#font(family: ("EB Garamond", "Noto Sans Arabic")) -#lang("ar") {text} -#lang("de") {text} +#font!(family: ("EB Garamond", "Noto Sans Arabic")) +#lang!("ar") {text} +#lang!("de") {text} --- // Test that consecutive, embedded RTL runs stay RTL. // Here, we have three runs: "גֶ", bold "שֶׁ", and "ם". #let text = [Aגֶ*שֶׁ*םB] -#font(family: ("EB Garamond", "Noto Serif Hebrew")) -#lang("he") {text} -#lang("de") {text} +#font!(family: ("EB Garamond", "Noto Serif Hebrew")) +#lang!("he") {text} +#lang!("de") {text} --- // Test embedding up to level 4 with isolates. -#font(family: ("EB Garamond", "Noto Serif Hebrew", "Twitter Color Emoji")) -#lang(dir: rtl) +#font!(family: ("EB Garamond", "Noto Serif Hebrew", "Twitter Color Emoji")) +#lang!(dir: rtl) א\u{2066}A\u{2067}Bב\u{2069}? --- // Test hard line break (leads to two paragraphs in unicode-bidi). -#font(family: ("Noto Sans Arabic", "EB Garamond")) -#lang("ar") +#font!(family: ("Noto Sans Arabic", "EB Garamond")) +#lang!("ar") Life المطر هو الحياة \ الحياة تمطر is rain. --- // Test spacing. -#font(family: ("EB Garamond", "Noto Serif Hebrew")) +#font!(family: ("EB Garamond", "Noto Serif Hebrew")) L #h(1cm) ריווחR \ Lריווח #h(1cm) R --- // Test inline object. -#font(family: ("Noto Serif Hebrew", "EB Garamond")) -#lang("he") +#font!(family: ("Noto Serif Hebrew", "EB Garamond")) +#lang!("he") קרנפיםRh#image("../../res/rhino.png", height: 11pt)inoחיים --- // Test the `lang` function. // Ref: false -// Error: 12-15 must be horizontal -#lang(dir: ttb) +// Error: 13-16 must be horizontal +#lang!(dir: ttb) diff --git a/tests/typ/text/chinese.typ b/tests/typ/text/chinese.typ index 3fe790ea..2da3f1a1 100644 --- a/tests/typ/text/chinese.typ +++ b/tests/typ/text/chinese.typ @@ -1,7 +1,7 @@ // Test chinese text from Wikipedia. --- -#font(family: "Noto Serif CJK SC") +#font!(family: "Noto Serif CJK SC") 是美国广播公司电视剧《迷失》第3季的第22和23集,也是全剧的第71集和72集 由执行制作人戴蒙·林道夫和卡尔顿·库斯编剧,导演则是另一名执行制作人杰克·本德 diff --git a/tests/typ/text/font.typ b/tests/typ/text/font.typ index f3a9495b..d6161c81 100644 --- a/tests/typ/text/font.typ +++ b/tests/typ/text/font.typ @@ -35,9 +35,9 @@ Emoji: 🐪, 🌋, 🏞 --- // Test top and bottom edge. -#page(width: 170pt) +#page!(width: 170pt) #let try(top, bottom) = rect(fill: conifer)[ - #font(top-edge: top, bottom-edge: bottom) + #font!(top-edge: top, bottom-edge: bottom) `From `#top` to `#bottom ] @@ -48,7 +48,7 @@ Emoji: 🐪, 🌋, 🏞 --- // Test class definitions. -#font(sans-serif: "PT Sans") +#font!(sans-serif: "PT Sans") #font(family: sans-serif)[Sans-serif.] \ #font(family: monospace)[Monospace.] \ #font(family: monospace, monospace: ("Nope", "Latin Modern Math"))[Math.] @@ -57,18 +57,18 @@ Emoji: 🐪, 🌋, 🏞 // Ref: false // Error: 7-12 unexpected argument -#font(false) +#font(false)[] // Error: 3:14-3:18 expected font style, found font weight // Error: 2:28-2:34 expected font weight, found string // Error: 1:43-1:44 expected string or array of strings, found integer -#font(style: bold, weight: "thin", serif: 0) +#font(style: bold, weight: "thin", serif: 0)[] // Warning: 15-19 should be between 100 and 900 -#font(weight: 2700) +#font(weight: 2700)[] // Warning: 16-21 should be between 50% and 200% -#font(stretch: 1000%) +#font(stretch: 1000%)[] // Error: 7-27 unexpected argument -#font(something: "invalid") +#font(something: "invalid")[] diff --git a/tests/typ/text/par.typ b/tests/typ/text/par.typ index 4ce2f6f1..8aa1147d 100644 --- a/tests/typ/text/par.typ +++ b/tests/typ/text/par.typ @@ -2,11 +2,11 @@ --- // FIXME: Word spacing doesn't work due to new shaping process. -#par(spacing: 10pt, leading: 25%, word-spacing: 1pt) +#par!(spacing: 10pt, leading: 25%, word-spacing: 1pt) But, soft! what light through yonder window breaks? It is the east, and Juliet is the sun. --- // Test that it finishes an existing paragraph. -Hello #par(word-spacing: 0pt) t h e r e ! +Hello #par!(word-spacing: 0pt) t h e r e ! diff --git a/tests/typ/text/shaping.typ b/tests/typ/text/shaping.typ index 9c6f2966..98630ea9 100644 --- a/tests/typ/text/shaping.typ +++ b/tests/typ/text/shaping.typ @@ -7,11 +7,11 @@ Le fira // This should just shape nicely. -#font(family: "Noto Sans Arabic") +#font!(family: "Noto Sans Arabic") دع النص يمطر عليك // This should form a three-member family. -#font(family: "Twitter Color Emoji") +#font!(family: "Twitter Color Emoji") 👩👩👦 🤚🏿 // These two shouldn't be affected by a zero-width joiner. @@ -20,7 +20,7 @@ Le fira --- // Test font fallback. -#font(family: ("EB Garamond", "Noto Sans Arabic", "Twitter Color Emoji")) +#font!(family: ("EB Garamond", "Noto Sans Arabic", "Twitter Color Emoji")) // Font fallback for emoji. A😀B @@ -40,6 +40,6 @@ A🐈中文B --- // Test reshaping. -#font(family: "Noto Serif Hebrew") -#lang("he") +#font!(family: "Noto Serif Hebrew") +#lang!("he") ס \ טֶ |
