summaryrefslogtreecommitdiff
path: root/tests/typ/control/for.typ
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2021-02-20 17:53:40 +0100
committerLaurenz <laurmaedje@gmail.com>2021-02-20 23:34:33 +0100
commit05727bfc3a9cfd45a8e2028dfd0806f7a8f88015 (patch)
tree6c0b66eb2a9dff224cb39eb6ccb478656a706c04 /tests/typ/control/for.typ
parent927341d93ae29678095e3b874bd68bfc57d4bc05 (diff)
Reorganize tests 🔀
Diffstat (limited to 'tests/typ/control/for.typ')
-rw-r--r--tests/typ/control/for.typ52
1 files changed, 52 insertions, 0 deletions
diff --git a/tests/typ/control/for.typ b/tests/typ/control/for.typ
new file mode 100644
index 00000000..294345b5
--- /dev/null
+++ b/tests/typ/control/for.typ
@@ -0,0 +1,52 @@
+// Test for loops.
+// Ref: false
+
+---
+// Array.
+
+#for x in () {}
+
+#let sum = 0
+#for x in (1, 2, 3, 4, 5) {
+ sum += x
+}
+
+#test(sum, 15)
+
+---
+// Dictionary.
+// Ref: true
+(\ #for k, v in (name: "Typst", age: 2) [
+ #h(0.5cm) {k}: {v}, \
+])
+
+---
+// String.
+{
+ let out = ""
+ let first = true
+ for c in "abc" {
+ if not first {
+ out += ", "
+ }
+ first = false
+ out += c
+ }
+ test(out, "a, b, c")
+}
+
+---
+// Uniterable expression.
+// Error: 11-15 cannot loop over boolean
+#for v in true {}
+
+// Make sure that we don't complain twice.
+// Error: 11-18 cannot add integer and string
+#for v in 1 + "2" {}
+
+// Error: 14-17 cannot apply '-' to string
+#let error = -""
+#let result = for v in (1, 2, 3) {
+ if v < 2 [Ok] else {error}
+}
+#test(result, error)