summaryrefslogtreecommitdiff
path: root/tests/typ/library
diff options
context:
space:
mode:
Diffstat (limited to 'tests/typ/library')
-rw-r--r--tests/typ/library/box.typ20
-rw-r--r--tests/typ/library/font.typ56
-rw-r--r--tests/typ/library/hv.typ22
-rw-r--r--tests/typ/library/image.typ35
-rw-r--r--tests/typ/library/page.typ53
-rw-r--r--tests/typ/library/pagebreak.typ3
-rw-r--r--tests/typ/library/rgb.typ17
7 files changed, 206 insertions, 0 deletions
diff --git a/tests/typ/library/box.typ b/tests/typ/library/box.typ
new file mode 100644
index 00000000..57763f12
--- /dev/null
+++ b/tests/typ/library/box.typ
@@ -0,0 +1,20 @@
+#page("a7", flip: true)
+
+// Box with fixed width, should have text height.
+#box(width: 2cm, color: #9650D6)[A]
+
+Sometimes there is no box.
+
+// Box with fixed height, should span line.
+#box(height: 2cm, width: 100%, color: #734CED)[B]
+
+// Empty box with fixed width and height.
+#box(width: 6cm, height: 12pt, color: #CB4CED)
+
+// Not visiblem, but creates a gap between the boxes above and below.
+#box(width: 2in, color: #ff0000)
+
+// These are in a row!
+#box(width: 1in, height: 10pt, color: #D6CD67)
+#box(width: 1in, height: 10pt, color: #EDD466)
+#box(width: 1in, height: 10pt, color: #E3BE62)
diff --git a/tests/typ/library/font.typ b/tests/typ/library/font.typ
new file mode 100644
index 00000000..7f13e8a6
--- /dev/null
+++ b/tests/typ/library/font.typ
@@ -0,0 +1,56 @@
+// Test configuring font properties.
+
+#font("PT Sans", 10pt)
+
+// Set same font size in three different ways.
+#font(20pt)[A]
+#font(200%)[A]
+#font(15pt + 50%)[A]
+
+// Do nothing.
+#font[Normal]
+
+// Set style (is available).
+#font(style: italic)[Italic]
+
+// Set weight (is available).
+#font(weight: bold)[Bold]
+
+// Set stretch (not available, matching closest).
+#font(stretch: ultra-condensed)[Condensed]
+
+// Error: 7-12 unexpected argument
+#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 font family or array of font families, found integer
+#font(style: bold, weight: "thin", serif: 0)
+
+// Warning: 15-19 should be between 100 and 900
+#font(weight: 2700)
+
+// Error: 7-27 unexpected argument
+#font(something: "invalid")
+
+---
+// Test font fallback and class definitions.
+
+// Source Sans Pro + Segoe UI Emoji.
+Emoji: 🏀
+
+// CMU Serif + Noto Emoji.
+#font("CMU Serif", "Noto Emoji")[
+ Emoji: 🏀
+]
+
+// Class definitions.
+#font(serif: ("CMU Serif", "Latin Modern Math", "Noto Emoji"))
+#font(serif)[
+ Math: ∫ α + β ➗ 3
+]
+
+// Class definition reused.
+#font(sans-serif: "Noto Emoji")
+#font(sans-serif: ("Archivo", sans-serif))
+New sans-serif. 🚀
diff --git a/tests/typ/library/hv.typ b/tests/typ/library/hv.typ
new file mode 100644
index 00000000..154445cf
--- /dev/null
+++ b/tests/typ/library/hv.typ
@@ -0,0 +1,22 @@
+// Ends paragraphs.
+Tightly #v(-5pt) packed
+
+// Eating up soft spacing.
+Inv #h(0pt) isible
+
+// Multiple spacings in a row.
+Add #h(10pt) #h(10pt) up
+
+// Relative to font size.
+Relative #h(100%) spacing
+
+// Missing spacing.
+// Error: 12 missing argument: spacing
+Totally #h() ignored
+
+// Swapped axes.
+#page(main-dir: rtl, cross-dir: ttb, height: 80pt)[
+ 1 #h(1cm) 2
+
+ 3 #v(1cm) 4 #v(-1cm) 5
+]
diff --git a/tests/typ/library/image.typ b/tests/typ/library/image.typ
new file mode 100644
index 00000000..9c3cd4fe
--- /dev/null
+++ b/tests/typ/library/image.typ
@@ -0,0 +1,35 @@
+// Test loading different image formats.
+
+// Load an RGBA PNG image.
+#image("res/rhino.png")
+#pagebreak()
+
+// Load an RGB JPEG image.
+#image("res/tiger.jpg")
+
+// Error: 8-29 failed to load image
+#image("path/does/not/exist")
+
+// Error: 8-29 failed to load image
+#image("typ/image-error.typ")
+
+---
+// Test configuring the size and fitting behaviour of images.
+
+// Fit to width of page.
+#image("res/rhino.png")
+
+// Fit to height of page.
+#page(height: 40pt, image("res/rhino.png"))
+
+// Set width explicitly.
+#image("res/rhino.png", width: 50pt)
+
+// Set height explicitly.
+#image("res/rhino.png", height: 50pt)
+
+// Set width and height explicitly and force stretching.
+#image("res/rhino.png", width: 25pt, height: 50pt)
+
+// Make sure the bounding-box of the image is correct.
+#align(bottom, right, image("res/tiger.jpg", width: 60pt))
diff --git a/tests/typ/library/page.typ b/tests/typ/library/page.typ
new file mode 100644
index 00000000..b7ac0348
--- /dev/null
+++ b/tests/typ/library/page.typ
@@ -0,0 +1,53 @@
+// Test configuring page sizes and margins.
+
+// Set width and height.
+#page(width: 120pt, height: 120pt)
+#page(width: 40pt)[High]
+#page(height: 40pt)[Wide]
+
+// Set all margins at once.
+#page(margins: 30pt)[
+ #align(top, left)[TL]
+ #align(bottom, right)[BR]
+]
+
+// Set individual margins.
+#page(height: 40pt)
+#page(left: 0pt, align(left)[Left])
+#page(right: 0pt, align(right)[Right])
+#page(top: 0pt, align(top)[Top])
+#page(bottom: 0pt, align(bottom)[Bottom])
+
+// Ensure that specific margins override general margins.
+#page(margins: 0pt, left: 20pt)[Overriden]
+
+// Error: 7-18 unknown variable
+#page(nonexistant)
+
+// Error: 17-20 aligned axis
+#page(main-dir: ltr)
+
+// Flipped predefined paper.
+#page("a11", flip: true)[Flipped A11]
+
+// Flipped custom page size.
+#page(width: 40pt, height: 120pt)
+#page(flip: true)
+Wide
+
+// Test changing the layouting directions of pages.
+#page(height: 50pt, main-dir: btt, cross-dir: rtl)
+Right to left!
+
+---
+// Test a combination of pages with bodies and normal content.
+
+#page(height: 50pt)
+
+#page[First]
+#page[Second]
+#pagebreak()
+Fourth
+#page[]
+Sixth
+#page[Seventh and last]
diff --git a/tests/typ/library/pagebreak.typ b/tests/typ/library/pagebreak.typ
new file mode 100644
index 00000000..dc3e5682
--- /dev/null
+++ b/tests/typ/library/pagebreak.typ
@@ -0,0 +1,3 @@
+First of two
+#pagebreak()
+#page(height: 40pt)
diff --git a/tests/typ/library/rgb.typ b/tests/typ/library/rgb.typ
new file mode 100644
index 00000000..b962bbc0
--- /dev/null
+++ b/tests/typ/library/rgb.typ
@@ -0,0 +1,17 @@
+// Check the output.
+#rgb(0.0, 0.3, 0.7)
+
+// Alpha channel.
+#rgb(1.0, 0.0, 0.0, 0.5)
+
+// Warning: 2:6-2:9 should be between 0.0 and 1.0
+// Warning: 1:11-1:15 should be between 0.0 and 1.0
+#rgb(-30, 15.5, 0.5)
+
+// Error: 6-10 missing argument: blue component
+#rgb(0, 1)
+
+// Error: 3:6-3:6 missing argument: red component
+// Error: 2:6-2:6 missing argument: green component
+// Error: 1:6-1:6 missing argument: blue component
+#rgb()