summaryrefslogtreecommitdiff
path: root/tests/typ
diff options
context:
space:
mode:
Diffstat (limited to 'tests/typ')
-rw-r--r--tests/typ/code/break-continue.typ37
-rw-r--r--tests/typ/code/return.typ40
2 files changed, 73 insertions, 4 deletions
diff --git a/tests/typ/code/break-continue.typ b/tests/typ/code/break-continue.typ
index e54651f1..60dac44d 100644
--- a/tests/typ/code/break-continue.typ
+++ b/tests/typ/code/break-continue.typ
@@ -4,8 +4,8 @@
---
// Test break.
-#let error = false
#let var = 0
+#let error = false
#for i in range(10) {
var += i
@@ -15,18 +15,32 @@
}
}
-#test(error, false)
#test(var, 21)
+#test(error, false)
+
+---
+// Test joining with break.
+
+#let i = 0
+#let x = while true {
+ i += 1
+ str(i)
+ if i >= 5 {
+ "."
+ break
+ }
+}
+
+#test(x, "12345.")
---
// Test continue.
-#let x = 0
#let i = 0
+#let x = 0
#while x < 8 {
i += 1
-
if mod(i, 3) == 0 {
continue
}
@@ -37,12 +51,27 @@
#test(x, 12)
---
+// Test joining with continue.
+
+#let x = for i in range(5) {
+ "a"
+ if mod(i, 3) == 0 {
+ "_"
+ continue
+ }
+ str(i)
+}
+
+#test(x, "a_a1a2a_a4")
+
+---
// Test break outside of loop.
#let f() = {
// Error: 3-8 cannot break outside of loop
break
}
+
#f()
---
diff --git a/tests/typ/code/return.typ b/tests/typ/code/return.typ
index 46ff190c..9ee3aed7 100644
--- a/tests/typ/code/return.typ
+++ b/tests/typ/code/return.typ
@@ -2,6 +2,7 @@
// Ref: false
---
+// Test return with value.
#let f(x) = {
return x + 1
}
@@ -9,6 +10,45 @@
#test(f(1), 2)
---
+// Test return with joining.
+
+#let f(x) = {
+ "a"
+ if x == 0 {
+ return "b"
+ } else if x == 1 {
+ "c"
+ } else {
+ "d"
+ return
+ "e"
+ }
+}
+
+#test(f(0), "b")
+#test(f(1), "ac")
+#test(f(2), "ad")
+
+---
+// Test return with joining and template.
+// Ref: true
+
+#let f(text, caption: none) = {
+ text
+ if caption == none {
+ [\.]
+ return
+ }
+ [, ]
+ emph(caption)
+ [\.]
+}
+
+#f(caption: [with caption])[My figure]
+
+#f[My other figure]
+
+---
// Test return outside of function.
#for x in range(5) {