diff options
Diffstat (limited to 'tests/lang')
60 files changed, 0 insertions, 1094 deletions
diff --git a/tests/lang/ref/array.png b/tests/lang/ref/array.png Binary files differdeleted file mode 100644 index 5bfddeb1..00000000 --- a/tests/lang/ref/array.png +++ /dev/null diff --git a/tests/lang/ref/block-invalid.png b/tests/lang/ref/block-invalid.png Binary files differdeleted file mode 100644 index 56471574..00000000 --- a/tests/lang/ref/block-invalid.png +++ /dev/null diff --git a/tests/lang/ref/block.png b/tests/lang/ref/block.png Binary files differdeleted file mode 100644 index a3c03698..00000000 --- a/tests/lang/ref/block.png +++ /dev/null diff --git a/tests/lang/ref/call-invalid.png b/tests/lang/ref/call-invalid.png Binary files differdeleted file mode 100644 index eee20e4d..00000000 --- a/tests/lang/ref/call-invalid.png +++ /dev/null diff --git a/tests/lang/ref/call.png b/tests/lang/ref/call.png Binary files differdeleted file mode 100644 index 5963d30e..00000000 --- a/tests/lang/ref/call.png +++ /dev/null diff --git a/tests/lang/ref/comment.png b/tests/lang/ref/comment.png Binary files differdeleted file mode 100644 index 7ab48b3a..00000000 --- a/tests/lang/ref/comment.png +++ /dev/null diff --git a/tests/lang/ref/dict.png b/tests/lang/ref/dict.png Binary files differdeleted file mode 100644 index b30f1300..00000000 --- a/tests/lang/ref/dict.png +++ /dev/null diff --git a/tests/lang/ref/emph.png b/tests/lang/ref/emph.png Binary files differdeleted file mode 100644 index a3aae726..00000000 --- a/tests/lang/ref/emph.png +++ /dev/null diff --git a/tests/lang/ref/empty.png b/tests/lang/ref/empty.png Binary files differdeleted file mode 100644 index 87c06b0a..00000000 --- a/tests/lang/ref/empty.png +++ /dev/null diff --git a/tests/lang/ref/escape.png b/tests/lang/ref/escape.png Binary files differdeleted file mode 100644 index aafe09eb..00000000 --- a/tests/lang/ref/escape.png +++ /dev/null diff --git a/tests/lang/ref/expr-binary.png b/tests/lang/ref/expr-binary.png Binary files differdeleted file mode 100644 index 6c94ef9b..00000000 --- a/tests/lang/ref/expr-binary.png +++ /dev/null diff --git a/tests/lang/ref/for-invalid.png b/tests/lang/ref/for-invalid.png Binary files differdeleted file mode 100644 index d758aa95..00000000 --- a/tests/lang/ref/for-invalid.png +++ /dev/null diff --git a/tests/lang/ref/for-value.png b/tests/lang/ref/for-value.png Binary files differdeleted file mode 100644 index fa323edc..00000000 --- a/tests/lang/ref/for-value.png +++ /dev/null diff --git a/tests/lang/ref/for.png b/tests/lang/ref/for.png Binary files differdeleted file mode 100644 index 2f13985a..00000000 --- a/tests/lang/ref/for.png +++ /dev/null diff --git a/tests/lang/ref/heading.png b/tests/lang/ref/heading.png Binary files differdeleted file mode 100644 index f72806ec..00000000 --- a/tests/lang/ref/heading.png +++ /dev/null diff --git a/tests/lang/ref/if-invalid.png b/tests/lang/ref/if-invalid.png Binary files differdeleted file mode 100644 index 319fbdbd..00000000 --- a/tests/lang/ref/if-invalid.png +++ /dev/null diff --git a/tests/lang/ref/if.png b/tests/lang/ref/if.png Binary files differdeleted file mode 100644 index 75a20d00..00000000 --- a/tests/lang/ref/if.png +++ /dev/null diff --git a/tests/lang/ref/let-invalid.png b/tests/lang/ref/let-invalid.png Binary files differdeleted file mode 100644 index 19d4d545..00000000 --- a/tests/lang/ref/let-invalid.png +++ /dev/null diff --git a/tests/lang/ref/let-terminated.png b/tests/lang/ref/let-terminated.png Binary files differdeleted file mode 100644 index 24f20c69..00000000 --- a/tests/lang/ref/let-terminated.png +++ /dev/null diff --git a/tests/lang/ref/linebreak.png b/tests/lang/ref/linebreak.png Binary files differdeleted file mode 100644 index 4769e291..00000000 --- a/tests/lang/ref/linebreak.png +++ /dev/null diff --git a/tests/lang/ref/nbsp.png b/tests/lang/ref/nbsp.png Binary files differdeleted file mode 100644 index 537a70eb..00000000 --- a/tests/lang/ref/nbsp.png +++ /dev/null diff --git a/tests/lang/ref/raw.png b/tests/lang/ref/raw.png Binary files differdeleted file mode 100644 index 6d90c960..00000000 --- a/tests/lang/ref/raw.png +++ /dev/null diff --git a/tests/lang/ref/repr.png b/tests/lang/ref/repr.png Binary files differdeleted file mode 100644 index 13ba6297..00000000 --- a/tests/lang/ref/repr.png +++ /dev/null diff --git a/tests/lang/ref/spacing.png b/tests/lang/ref/spacing.png Binary files differdeleted file mode 100644 index 5c3acf9b..00000000 --- a/tests/lang/ref/spacing.png +++ /dev/null diff --git a/tests/lang/ref/strong.png b/tests/lang/ref/strong.png Binary files differdeleted file mode 100644 index eb5e4d8e..00000000 --- a/tests/lang/ref/strong.png +++ /dev/null diff --git a/tests/lang/ref/text.png b/tests/lang/ref/text.png Binary files differdeleted file mode 100644 index 88ce95e3..00000000 --- a/tests/lang/ref/text.png +++ /dev/null diff --git a/tests/lang/typ/array.typ b/tests/lang/typ/array.typ deleted file mode 100644 index c9383501..00000000 --- a/tests/lang/typ/array.typ +++ /dev/null @@ -1,43 +0,0 @@ -// Test arrays. - ---- -// Empty. -{()} - -// Not an array, just a parenthesized expression. -{(1)} - -// One item and trailing comma. -{(-1,)} - -// No trailing comma. -{(true, false)} - -// Multiple lines and items and trailing comma. -{("1" - , #002 - ,)} - -// Error: 3 expected closing paren -{(} - -// Error: 2-3 expected expression, found closing paren -{)} - -// Error: 2:4 expected comma -// Error: 1:4-1:6 expected expression, found end of block comment -{(1*/2)} - -// Error: 6-8 expected expression, found invalid token -{(1, 1u 2)} - -// Error: 3-4 expected expression, found comma -{(,1)} - -// Missing expression makes named pair incomplete, making this an empty array. -// Error: 5 expected expression -{(a:)} - -// Named pair after this is already identified as an array. -// Error: 6-10 expected expression, found named pair -{(1, b: 2)} diff --git a/tests/lang/typ/block-invalid.typ b/tests/lang/typ/block-invalid.typ deleted file mode 100644 index d98bf06b..00000000 --- a/tests/lang/typ/block-invalid.typ +++ /dev/null @@ -1,37 +0,0 @@ -// Test invalid code block syntax. - ---- -// Multiple unseparated expressions in one line. - -// Error: 2-4 expected expression, found invalid token -{1u} - -// Should output `1`. -// Error: 3 expected semicolon or line break -{0 1} - -// Should output `2`. -// Error: 2:12 expected semicolon or line break -// Error: 1:22 expected semicolon or line break -{let x = -1 let y = 3 x + y} - -// Should output `3`. -{ - // Error: 9-12 expected identifier, found string - for "v" - - // Error: 10 expected keyword `in` - for v let z = 1 + 2 - - z -} - ---- -// Ref: false -// Error: 3:1 expected closing brace -{ - ---- -// Ref: false -// Error: 1-2 unexpected closing brace -} diff --git a/tests/lang/typ/block-scoping.typ b/tests/lang/typ/block-scoping.typ deleted file mode 100644 index 7bb98969..00000000 --- a/tests/lang/typ/block-scoping.typ +++ /dev/null @@ -1,35 +0,0 @@ -// Test scoping with blocks. -// Ref: false - ---- -// Block in template does not create a scope. -{ let x = 1 } -#test(x, 1) - ---- -// Block in expression does create a scope. -#let a = { - let b = 1 - b -} - -#test(a, 1) - -// Error: 2-3 unknown variable -{b} - ---- -// Multiple nested scopes. -{ - let a = "a1" - { - let a = "a2" - { - test(a, "a2") - let a = "a3" - test(a, "a3") - } - test(a, "a2") - } - test(a, "a1") -} diff --git a/tests/lang/typ/block.typ b/tests/lang/typ/block.typ deleted file mode 100644 index 196e6c14..00000000 --- a/tests/lang/typ/block.typ +++ /dev/null @@ -1,38 +0,0 @@ -// Test code blocks. - ---- -All none - -// Nothing evaluates to none. -{} - -// Let evaluates to none. -{ let v = 0 } - -// Trailing none evaluates to none. -{ - type("") - none -} - ---- -// Evaluates to single expression. -{ "Hello" } - -// Evaluates to trailing expression. -{ let x = "Hel"; x + "lo" } - -// Evaluates to concatenation of for loop bodies. -{ - let parts = ("Hel", "lo") - for s in parts [{s}] -} - ---- -// Works the same way in code environment. -// Ref: false -#test(3, { - let x = 1 - let y = 2 - x + y -}) diff --git a/tests/lang/typ/call-invalid.typ b/tests/lang/typ/call-invalid.typ deleted file mode 100644 index 0ed5246f..00000000 --- a/tests/lang/typ/call-invalid.typ +++ /dev/null @@ -1,44 +0,0 @@ -// Test invalid function calls. - ---- -// Error: 1-2 unexpected invalid token -# - ---- -// Error: 7-8 expected expression, found colon -#args(:) - -// Error: 10-12 expected expression, found end of block comment -#args(a:1*/) - -// Error: 8 expected comma -#args(1 2) - -// Error: 2:7-2:8 expected identifier -// Error: 1:9 expected expression -#args(1:) - -// Error: 7-8 expected identifier -#args(1:2) - -// Error: 7-10 expected identifier -{args((x):1)} - ---- -#let x = "string" - -// Error: 1-3 expected function, found string -#x() - ---- -// Error: 3:1 expected closing bracket -#args[`a]` - ---- -// Error: 7 expected closing paren -{args(} - ---- -// Error: 3:1 expected quote -// Error: 2:1 expected closing paren -#args("] diff --git a/tests/lang/typ/call.typ b/tests/lang/typ/call.typ deleted file mode 100644 index 213d5554..00000000 --- a/tests/lang/typ/call.typ +++ /dev/null @@ -1,40 +0,0 @@ -// Test function calls. - ---- -// One argument. -#args(bold) - -// One argument and trailing comma. -#args(1,) - -// One named argument. -#args(a:2) - -// Mixed arguments. -{args(1, b: "2", 3)} - ---- -// Different forms of template arguments. -// Ref: true - -#let a = "a" - -#args[a] \ -#args(a) \ -#args(a, [b]) \ -#args(a)[b] \ - -// Template can be argument or body depending on whitespace. -#if "template" == type[b] [Sure ] -#if "template" == type [Nope.] #else [thing.] - -// Should output `<function args> (Okay.)`. -#args (Okay.) - ---- -// Call function assigned to variable. -#let alias = type -#test(alias(alias), "function") - -// Library function `font` returns template. -#test(type(font(12pt)), "template") diff --git a/tests/lang/typ/comment.typ b/tests/lang/typ/comment.typ deleted file mode 100644 index 25180211..00000000 --- a/tests/lang/typ/comment.typ +++ /dev/null @@ -1,23 +0,0 @@ -// Test line and block comments. - ---- -// Line comment acts as spacing. -A// you -B - -// Block comment does not act as spacing. -C/* - /* */ -*/D - -// Works in code. -#test(type(/*1*/ 1) // -, "integer") - ---- -// End should not appear without start. -// Error: 1:7-1:9 unexpected end of block comment -/* */ */ - -// Unterminated is okay. -/* diff --git a/tests/lang/typ/dict.typ b/tests/lang/typ/dict.typ deleted file mode 100644 index 655a3299..00000000 --- a/tests/lang/typ/dict.typ +++ /dev/null @@ -1,20 +0,0 @@ -// Test dictionaries. - ---- -// Empty -{(:)} - -// Two pairs. -{(a1: 1, a2: 2)} - ---- -// Simple expression after already being identified as a dictionary. -// Error: 9-10 expected named pair, found expression -{(a: 1, b)} - -// Identified as dictionary due to initial colon. -// Error: 4:4-4:5 expected named pair, found expression -// Error: 3:5 expected comma -// Error: 2:12-2:16 expected identifier -// Error: 1:17-1:18 expected expression, found colon -{(:1 b:[], true::)} diff --git a/tests/lang/typ/emph.typ b/tests/lang/typ/emph.typ deleted file mode 100644 index 772e15ab..00000000 --- a/tests/lang/typ/emph.typ +++ /dev/null @@ -1,14 +0,0 @@ -// Test emphasis toggle. - ---- -// Basic. -_Emphasized!_ - -// Inside of words. -Partly em_phas_ized. - -// Scoped to body. -#box[_Scoped] to body. - -// Unterminated is fine. -_The End diff --git a/tests/lang/typ/empty.typ b/tests/lang/typ/empty.typ deleted file mode 100644 index e69de29b..00000000 --- a/tests/lang/typ/empty.typ +++ /dev/null diff --git a/tests/lang/typ/escape.typ b/tests/lang/typ/escape.typ deleted file mode 100644 index eeac4997..00000000 --- a/tests/lang/typ/escape.typ +++ /dev/null @@ -1,30 +0,0 @@ -// Test escape sequences. - ---- -// Escapable symbols. -\\ \/ \[ \] \{ \} \# \* \_ \= \~ \` \$ - -// No need to escape. -( ) ; < > - -// Unescapable. -\a \: \; \( \) - -// Escaped comments. -\// -\/\* \*\/ -\/* \*/ * - -// Unicode escape sequence. -\u{1F3D5} == 🏕 - -// Escaped escape sequence. -\u{41} vs. \\u\{41\} - -// Unicode codepoint does not exist. -// Error: 1-11 invalid unicode escape sequence -\u{FFFFFF} - -// Unterminated. -// Error: 6 expected closing brace -\u{41*Bold* diff --git a/tests/lang/typ/expr-assoc.typ b/tests/lang/typ/expr-assoc.typ deleted file mode 100644 index 19c56951..00000000 --- a/tests/lang/typ/expr-assoc.typ +++ /dev/null @@ -1,18 +0,0 @@ -// Test operator associativity. -// Ref: false - ---- -// Math operators are left-associative. -#test(10 / 2 / 2 == (10 / 2) / 2, true) -#test(10 / 2 / 2 == 10 / (2 / 2), false) -#test(1 / 2 * 3, 1.5) - ---- -// Assignment is right-associative. -{ - let x = 1 - let y = 2 - x = y = "ok" - test(x, none) - test(y, "ok") -} diff --git a/tests/lang/typ/expr-binary.typ b/tests/lang/typ/expr-binary.typ deleted file mode 100644 index 9fbffe18..00000000 --- a/tests/lang/typ/expr-binary.typ +++ /dev/null @@ -1,131 +0,0 @@ -// Test binary expressions. -// Ref: false - ---- -// Test template addition. -// Ref: true -{[*Hello ] + [world!*]} - ---- -// Test math operators. - -// Addition. -#test(2 + 4, 6) -#test("a" + "b", "ab") -#test((1, 2) + (3, 4), (1, 2, 3, 4)) -#test((a: 1) + (b: 2, c: 3), (a: 1, b: 2, c: 3)) - -// Subtraction. -#test(1-4, 3*-1) -#test(4cm - 2cm, 2cm) -#test(1e+2-1e-2, 99.99) - -// Multiplication. -#test(2 * 4, 8) - -// Division. -#test(12pt/.4, 30pt) -#test(7 / 2, 3.5) - -// Combination. -#test(3-4 * 5 < -10, true) -#test({ let x; x = 1 + 4*5 >= 21 and { x = "a"; x + "b" == "ab" }; x }, true) - -// Mathematical identities. -#let nums = (1, 3.14, 12pt, 45deg, 90%, 13% + 10pt) -#for v in nums { - // Test plus and minus. - test(v + v - v, v) - test(v - v - v, -v) - - // Test plus/minus and multiplication. - test(v - v, 0 * v) - test(v + v, 2 * v) - - // Integer addition does not give a float. - if type(v) != "integer" { - test(v + v, 2.0 * v) - } - - // Linears cannot be divided by themselves. - if type(v) != "linear" { - test(v / v, 1.0) - test(v / v == 1, true) - } -} - -// Make sure length, relative and linear -// - can all be added to / subtracted from each other, -// - multiplied with integers and floats, -// - divided by floats. -#let dims = (10pt, 30%, 50% + 3cm) -#for a in dims { - for b in dims { - test(type(a + b), type(a - b)) - } - - for b in (7, 3.14) { - test(type(a * b), type(a)) - test(type(b * a), type(a)) - test(type(a / b), type(a)) - } -} - ---- -// Test boolean operators. - -// And. -#test(false and false, false) -#test(false and true, false) -#test(true and false, false) -#test(true and true, true) - -// Or. -#test(false or false, false) -#test(false or true, true) -#test(true or false, true) -#test(true or true, true) - -// Short-circuiting. -#test(false and dont-care, false) -#test(true or dont-care, true) - ---- -// Test equality operators. - -#test(1 == "hi", false) -#test(1 == 1.0, true) -#test(30% == 30% + 0cm, true) -#test(1in == 0% + 72pt, true) -#test(30% == 30% + 1cm, false) -#test("ab" == "a" + "b", true) -#test(() == (1,), false) -#test((1, 2, 3) == (1, 2.0) + (3,), true) -#test((:) == (a: 1), false) -#test((a: 2 - 1.0, b: 2) == (b: 2, a: 1), true) -#test([*Hi*] == [*Hi*], true) - -#test("a" != "a", false) -#test([*] != [_], true) - ---- -// Test comparison operators. - -#test(13 * 3 < 14 * 4, true) -#test(5 < 10, true) -#test(5 > 5, false) -#test(5 <= 5, true) -#test(5 <= 4, false) -#test(45deg < 1rad, true) - ---- -// Test assignment operators. - -#let x = 0 -{ x = 10 } #test(x, 10) -{ x -= 5 } #test(x, 5) -{ x += 1 } #test(x, 6) -{ x *= x } #test(x, 36) -{ x /= 2.0 } #test(x, 18.0) -{ x = "some" } #test(x, "some") -{ x += "thing" } #test(x, "something") diff --git a/tests/lang/typ/expr-invalid.typ b/tests/lang/typ/expr-invalid.typ deleted file mode 100644 index f760ae31..00000000 --- a/tests/lang/typ/expr-invalid.typ +++ /dev/null @@ -1,59 +0,0 @@ -// Test invalid expressions. -// Ref: false - ---- -// Missing expressions. - -// Error: 3 expected expression -{-} - -// Error: 10 expected expression -#test({1+}, 1) - -// Error: 10 expected expression -#test({2*}, 2) - ---- -// Mismatched types. - -// Error: 2-12 cannot apply '+' to template -{+([] + [])} - -// Error: 2-5 cannot apply '-' to string -{-""} - -// Error: 2-8 cannot apply 'not' to array -{not ()} - -// Error: 1:2-1:12 cannot apply '<=' to relative and relative -{30% <= 40%} - -// Special messages for +, -, * and /. -// Error: 4:03-4:10 cannot add integer and string -// Error: 3:12-3:19 cannot subtract integer from relative -// Error: 2:21-2:29 cannot multiply integer with boolean -// Error: 1:31-1:39 cannot divide integer by length -{(1 + "2", 40% - 1, 2 * true, 3 / 12pt)} - -// Error: 14-22 cannot apply '+=' to integer and string -{ let x = 1; x += "2" } - ---- -// Bad left-hand sides of assignment. - -// Error: 3-6 cannot assign to this expression -{ (x) = "" } - -// Error: 3-8 cannot assign to this expression -{ 1 + 2 += 3 } - -// Error: 3-4 unknown variable -{ z = 1 } - -// Error: 3-6 cannot assign to a constant -{ box = "hi" } - -// Works if we define box beforehand -// (since then it doesn't resolve to the standard library version anymore). -#let box = "" -{ box = "hi" } diff --git a/tests/lang/typ/expr-prec.typ b/tests/lang/typ/expr-prec.typ deleted file mode 100644 index e64e583c..00000000 --- a/tests/lang/typ/expr-prec.typ +++ /dev/null @@ -1,30 +0,0 @@ -// Test operator precedence. -// Ref: false - ---- -// Multiplication binds stronger than addition. -#test(1+2*-3, -5) - -// Subtraction binds stronger than comparison. -#test(3 == 5 - 2, true) - -// Boolean operations bind stronger than '=='. -#test("a" == "a" and 2 < 3, true) -#test(not "b" == "b", false) - -// Assignment binds stronger than boolean operations. -// Error: 2-7 cannot assign to this expression -{not x = "a"} - ---- -// Parentheses override precedence. -#test((1), 1) -#test((1+2)*-3, -9) - -// Error: 14 expected closing paren -#test({(1 + 1}, 2) - ---- -// Precedence doesn't matter for chained unary operators. -// Error: 2-11 cannot apply '-' to boolean -{-not true} diff --git a/tests/lang/typ/expr-unary.typ b/tests/lang/typ/expr-unary.typ deleted file mode 100644 index c4b1937d..00000000 --- a/tests/lang/typ/expr-unary.typ +++ /dev/null @@ -1,23 +0,0 @@ -// Test unary expressions. -// Ref: false - ---- -// Test plus and minus. -#for v in (1, 3.14, 12pt, 45deg, 90%, 13% + 10pt) { - // Test plus. - test(+v, v) - - // Test minus. - test(-v, -1 * v) - test(--v, v) - - // Test combination. - test(-++ --v, -v) -} - -#test(-(4 + 2), 6-12) - ---- -// Test not. -#test(not true, false) -#test(not false, true) diff --git a/tests/lang/typ/for-invalid.typ b/tests/lang/typ/for-invalid.typ deleted file mode 100644 index c8bdebdd..00000000 --- a/tests/lang/typ/for-invalid.typ +++ /dev/null @@ -1,32 +0,0 @@ -// Test invalid for loop syntax. - ---- -// Error: 5-5 expected identifier -#for - -// Error: 7-7 expected keyword `in` -#for v - -// Error: 10-10 expected expression -#for v in - -// Error: 15-15 expected body -#for v in iter - ---- -// Should output `v in iter`. -// Error: 5 expected identifier -#for -v in iter {} - -// Should output `A thing`. -// Error: 7-10 expected identifier, found string -A#for "v" thing. - -// Should output `in iter`. -// Error: 6-9 expected identifier, found string -#for "v" in iter {} - -// Should output `+ b in iter`. -// Error: 7 expected keyword `in` -#for a + b in iter {} diff --git a/tests/lang/typ/for-pattern.typ b/tests/lang/typ/for-pattern.typ deleted file mode 100644 index 38253b33..00000000 --- a/tests/lang/typ/for-pattern.typ +++ /dev/null @@ -1,30 +0,0 @@ -// Test for loop patterns. -// Ref: false - ---- -#let out = () - -// Values of array. -#for v in (1, 2, 3) { - out += (v,) -} - -// Values of dictionary. -#for v in (a: 4, b: 5) { - out += (v,) -} - -// Keys and values of dictionary. -#for k, v in (a: 6, b: 7) { - out += (k,) - out += (v,) -} - -#test(out, (1, 2, 3, 4, 5, "a", 6, "b", 7)) - ---- -// Keys and values of array. -// Error: 6-10 mismatched pattern -#for k, v in (-1, -2, -3) { - dont-care -} diff --git a/tests/lang/typ/for-value.typ b/tests/lang/typ/for-value.typ deleted file mode 100644 index 3ab80716..00000000 --- a/tests/lang/typ/for-value.typ +++ /dev/null @@ -1,20 +0,0 @@ -// Test return value of for loops. - ---- -// Template body yields template. -// Should output `234`. -#for v in (1, 2, 3, 4) [#if v >= 2 [{v}]] - ---- -// Block body yields template. -// Should output `[1st, 2nd, 3rd, 4th, 5th, 6th]`. -{ - "[" + for v in (1, 2, 3, 4, 5, 6) { - (if v > 1 [, ] - + [{v}] - + if v == 1 [st] - + if v == 2 [nd] - + if v == 3 [rd] - + if v >= 4 [th]) - } + "]" -} diff --git a/tests/lang/typ/for.typ b/tests/lang/typ/for.typ deleted file mode 100644 index 294345b5..00000000 --- a/tests/lang/typ/for.typ +++ /dev/null @@ -1,52 +0,0 @@ -// 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) diff --git a/tests/lang/typ/heading.typ b/tests/lang/typ/heading.typ deleted file mode 100644 index 8497ec8f..00000000 --- a/tests/lang/typ/heading.typ +++ /dev/null @@ -1,44 +0,0 @@ -// Test headings. - ---- -// Different number of hashtags. - -// Valid levels. -=1 -===2 -======6 - -// Too many hashtags. -// Warning: 1-8 should not exceed depth 6 -=======7 - ---- -// Heading continuation over linebreak. - -// Code blocks continue heading. -= A{ - "B" -} - -// Function call continues heading. -= #box[ - A -] B - -// Without some kind of block, headings end at a line break. -= A -B - ---- -// Heading vs. no heading. - -// Parsed as headings if at start of the context. -/**/ = Ok -{[== Ok]} -#box[=== Ok] - -// Not at the start of the context. -No = heading - -// Escaped. -\= No heading diff --git a/tests/lang/typ/if-invalid.typ b/tests/lang/typ/if-invalid.typ deleted file mode 100644 index 6d2deab1..00000000 --- a/tests/lang/typ/if-invalid.typ +++ /dev/null @@ -1,28 +0,0 @@ -// Test invalid if syntax. - ---- -// Error: 4 expected expression -#if - -// Error: 4 expected expression -{if} - -// Error: 6 expected body -#if x - -// Error: 1-6 unexpected keyword `else` -#else {} - ---- -// Should output `x`. -// Error: 4 expected expression -#if -x {} - -// Should output `something`. -// Error: 6 expected body -#if x something - -// Should output `A thing.` -// Error: 20 expected body -A#if false {} #else thing diff --git a/tests/lang/typ/if-value.typ b/tests/lang/typ/if-value.typ deleted file mode 100644 index d7124255..00000000 --- a/tests/lang/typ/if-value.typ +++ /dev/null @@ -1,21 +0,0 @@ -// Test return value of if expressions. -// Ref: false - ---- -{ - let x = 1 - let y = 2 - let z - - // Returns if branch. - z = if x < y { "ok" } - test(z, "ok") - - // Returns else branch. - z = if x > y { "bad" } else { "ok" } - test(z, "ok") - - // Missing else evaluates to none. - z = if x > y { "bad" } - test(z, none) -} diff --git a/tests/lang/typ/if.typ b/tests/lang/typ/if.typ deleted file mode 100644 index 4ed6b649..00000000 --- a/tests/lang/typ/if.typ +++ /dev/null @@ -1,45 +0,0 @@ -// Test if-else expressions. - ---- -// Test condition evaluation. -#if 1 < 2 [ - Ok. -] - -#if true == false [ - Bad, but we {dont-care}! -] - ---- -// Brace in condition. -#if {true} [ - Ok. -] - -// Multi-line condition with parens. -#if ( - 1 + 1 - == 1 -) { - nope -} #else { - "Ok." -} - -// Multiline. -#if false [ - Bad. -] #else { - let pt = "." - "Ok" + pt -} - ---- -// Condition must be boolean. -// If it isn't, neither branch is evaluated. -// Error: 5-14 expected boolean, found string -#if "a" + "b" { nope } #else { nope } - -// Make sure that we don't complain twice. -// Error: 5-12 cannot add integer and string -#if 1 + "2" {} diff --git a/tests/lang/typ/let-invalid.typ b/tests/lang/typ/let-invalid.typ deleted file mode 100644 index f29353ed..00000000 --- a/tests/lang/typ/let-invalid.typ +++ /dev/null @@ -1,20 +0,0 @@ -// Test invalid let binding syntax. - ---- -// Error: 5 expected identifier -#let - -// Error: 6-9 expected identifier, found string -#let "v" - -// Should output `1`. -// Error: 7 expected semicolon or line break -#let v 1 - -// Error: 9 expected expression -#let v = - ---- -// Should output `= 1`. -// Error: 6-9 expected identifier, found string -#let "v" = 1 diff --git a/tests/lang/typ/let-terminated.typ b/tests/lang/typ/let-terminated.typ deleted file mode 100644 index 623265e0..00000000 --- a/tests/lang/typ/let-terminated.typ +++ /dev/null @@ -1,28 +0,0 @@ -// Test termination of let statements. - ---- -// Terminated by line break. -#let v1 = 1 -One - -// Terminated by semicolon. -#let v2 = 2; Two - -// Terminated by semicolon and line break. -#let v3 = 3; -Three - -// Terminated because expression ends. -// Error: 12 expected semicolon or line break -#let v4 = 4 Four - -// Terminated by semicolon even though we are in a paren group. -// Error: 2:19 expected expression -// Error: 1:19 expected closing paren -#let v5 = (1, 2 + ; Five - -#test(v1, 1) -#test(v2, 2) -#test(v3, 3) -#test(v4, 4) -#test(v5, (1, 2)) diff --git a/tests/lang/typ/let.typ b/tests/lang/typ/let.typ deleted file mode 100644 index e609d3a9..00000000 --- a/tests/lang/typ/let.typ +++ /dev/null @@ -1,11 +0,0 @@ -// Test let bindings. -// Ref: false - ---- -// Automatically initialized with none. -#let x -#test(x, none) - -// Manually initialized with one. -#let x = 1 -#test(x, 1) diff --git a/tests/lang/typ/linebreak.typ b/tests/lang/typ/linebreak.typ deleted file mode 100644 index e6392992..00000000 --- a/tests/lang/typ/linebreak.typ +++ /dev/null @@ -1,23 +0,0 @@ -// Test forced line breaks. - ---- -// Directly after word. -Line\ Break - -// Spaces around. -Line \ Break - -// Directly before word does not work. -No \Break - ---- -// Leading line break. -\ Leading - -// Trailing before paragraph break. -Trailing 1 \ - -Trailing 2 - -// Trailing before end of document. -Trailing 3 \ diff --git a/tests/lang/typ/nbsp.typ b/tests/lang/typ/nbsp.typ deleted file mode 100644 index 5af6c84f..00000000 --- a/tests/lang/typ/nbsp.typ +++ /dev/null @@ -1,5 +0,0 @@ -// Test the non breaking space. - ---- -// Parsed correctly, but not actually doing anything at the moment. -The non-breaking~space does not work. diff --git a/tests/lang/typ/raw.typ b/tests/lang/typ/raw.typ deleted file mode 100644 index f5074c8e..00000000 --- a/tests/lang/typ/raw.typ +++ /dev/null @@ -1,51 +0,0 @@ -// Test raw blocks. - ---- -// No extra space. -`A``B` - ---- -// Typst syntax inside. -`#let x = 1` \ -`#[f 1]` - ---- -// Multiline block splits paragraphs. - -First -``` -Second -``` -Third - ---- -// Lots of backticks inside. -```` -```backticks``` -```` - ---- -// Trimming. - -// Space between "rust" and "let" is trimmed. -The keyword ```rust let```. - -// Trimming depends on number backticks. -<``> \ -<` untrimmed `> \ -<``` trimmed` ```> \ -<``` trimmed ```> \ -<``` trimmed```> - -// Multiline trimming. -```py -import this - -def hi(): - print("Hi!") -``` - ---- -// Unterminated. -// Error: 2:1 expected backtick(s) -`endless diff --git a/tests/lang/typ/repr.typ b/tests/lang/typ/repr.typ deleted file mode 100644 index 666db428..00000000 --- a/tests/lang/typ/repr.typ +++ /dev/null @@ -1,50 +0,0 @@ -// Test representation of values in the document. - ---- -// Variables. - -#let name = "Typst" -#let ke-bab = "Kebab!" -#let α = "Alpha" - -{name} \ -{ke-bab} \ -{α} \ - -// Error: 2-3 unknown variable -{_} - ---- -// Literal values. -{none} (empty) \ -{true} \ -{false} \ - ---- -// Numerical values. -{1} \ -{1.0e-4} \ -{3.15} \ -{1e-10} \ -{50.368%} \ -{0.0000012345pt} \ -{4.5cm} \ -{12e1pt} \ -{2.5rad} \ -{45deg} \ - -// Not in monospace via repr. -#repr(45deg) - ---- -// Colors. -{#f7a20500} \ - ---- -// Strings and escaping. -{"hi"} \ -{"a\n[]\"\u{1F680}string"} \ - ---- -// Templates. -{[*{"H" + "i"} there*]} diff --git a/tests/lang/typ/spacing.typ b/tests/lang/typ/spacing.typ deleted file mode 100644 index d44cd84c..00000000 --- a/tests/lang/typ/spacing.typ +++ /dev/null @@ -1,27 +0,0 @@ -// Test spacing around control flow structures. - ---- -// Spacing around let. - -// Error: 6 expected identifier -A#let;B \ -A#let x = 1;B #test(x, 1) \ -A #let x = 2;B #test(x, 2) \ -A#let x = 3; B #test(x, 3) \ - ---- -// Spacing around if-else. - -A#if true[B]C \ -A#if true[B] C \ -A #if true{"B"}C \ -A #if true{"B"} C \ -A#if false [] #else [B]C \ -A#if true [B] #else [] C \ - ---- -// Spacing around for loop. - -A#for _ in (none,) [B]C \ -A#for _ in (none,) [B] C \ -A #for _ in (none,) [B]C \ diff --git a/tests/lang/typ/strong.typ b/tests/lang/typ/strong.typ deleted file mode 100644 index b02a55a5..00000000 --- a/tests/lang/typ/strong.typ +++ /dev/null @@ -1,14 +0,0 @@ -// Test strong toggle. - ---- -// Basic. -*Strong!* - -// Inside of words. -Partly str*ength*ened. - -// Scoped to body. -#box[*Scoped] to body. - -// Unterminated is fine. -*The End diff --git a/tests/lang/typ/text.typ b/tests/lang/typ/text.typ deleted file mode 100644 index d86f4895..00000000 --- a/tests/lang/typ/text.typ +++ /dev/null @@ -1,8 +0,0 @@ -// Test simple text. - ---- -Hello 🌏! - ---- -// Some code stuff in text. -let f() , ; : | + - /= == 12 "string" |
