summaryrefslogtreecommitdiff
path: root/tests/typ
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2021-06-30 11:04:53 +0200
committerGitHub <noreply@github.com>2021-06-30 11:04:53 +0200
commit45812b700114a51f0ee21e31f4454cde3729eaf5 (patch)
tree435e5a0ade7dc2cbf9199418c618846bb655e957 /tests/typ
parent1c43d8af12a8d318fb681713d0e66eb754485589 (diff)
parentb2fb42cc7019b0269e892c4e39c52557252fecf9 (diff)
Merge pull request #35 from typst/wide-calls
Wide calls
Diffstat (limited to 'tests/typ')
-rw-r--r--tests/typ/code/call-wide.typ47
-rw-r--r--tests/typ/code/call.typ3
-rw-r--r--tests/typ/coma.typ2
-rw-r--r--tests/typ/insert/circle.typ20
-rw-r--r--tests/typ/insert/ellipse.typ9
-rw-r--r--tests/typ/insert/rect.typ2
-rw-r--r--tests/typ/insert/square.typ13
-rw-r--r--tests/typ/layout/containers.typ2
-rw-r--r--tests/typ/layout/grid-1.typ8
-rw-r--r--tests/typ/layout/grid-2.typ2
-rw-r--r--tests/typ/layout/grid-3.typ10
-rw-r--r--tests/typ/layout/pad.typ7
-rw-r--r--tests/typ/layout/page.typ14
-rw-r--r--tests/typ/layout/pagebreak.typ4
-rw-r--r--tests/typ/text/basic.typ2
-rw-r--r--tests/typ/text/bidi.typ36
-rw-r--r--tests/typ/text/chinese.typ2
-rw-r--r--tests/typ/text/font.typ16
-rw-r--r--tests/typ/text/par.typ4
-rw-r--r--tests/typ/text/shaping.typ10
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")
ס \ טֶ