summaryrefslogtreecommitdiff
path: root/tests/typ/code/ops.typ
diff options
context:
space:
mode:
Diffstat (limited to 'tests/typ/code/ops.typ')
-rw-r--r--tests/typ/code/ops.typ226
1 files changed, 0 insertions, 226 deletions
diff --git a/tests/typ/code/ops.typ b/tests/typ/code/ops.typ
deleted file mode 100644
index c382f34d..00000000
--- a/tests/typ/code/ops.typ
+++ /dev/null
@@ -1,226 +0,0 @@
-// Test binary expressions.
-// Ref: false
-
----
-// Test adding content.
-// Ref: true
-{[*Hello* ] + [world!]}
-
----
-// Test math operators.
-
-// Test plus and minus.
-#for v in (1, 3.14, 12pt, 45deg, 90%, 13% + 10pt, 6.3fr) {
- // Test plus.
- test(+v, v)
-
- // Test minus.
- test(-v, -1 * v)
- test(--v, v)
-
- // Test combination.
- test(-++ --v, -v)
-}
-
-#test(-(4 + 2), 6-12)
-
-// Addition.
-#test(2 + 4, 6)
-#test("a" + "b", "ab")
-#test("a" + if false { "b" }, "a")
-#test("a" + if true { "b" }, "ab")
-#test(13 * "a" + "bbbbbb", "aaaaaaaaaaaaabbbbbb")
-#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)
-
-// With block.
-#test(if true {
- 1
-} + 2, 3)
-
-// Mathematical identities.
-#let nums = (
- 1, 3.14,
- 12pt, 3em, 12pt + 3em,
- 45deg,
- 90%,
- 13% + 10pt, 5% + 1em + 3pt,
- 2.3fr,
-)
-
-#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)
- }
-
- if "relative" not in type(v) and ("pt" not in repr(v) or "em" not in repr(v)) {
- test(v / v, 1.0)
- }
-}
-
-// Make sure length, ratio and relative length
-// - can all be added to / subtracted from each other,
-// - multiplied with integers and floats,
-// - divided by integers and floats.
-#let dims = (10pt, 1em, 10pt + 1em, 30%, 50% + 3cm, 40% + 2em + 1cm)
-#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 division of different numeric types with zero components.
-#for a in (0pt, 0em, 0%) {
- for b in (10pt, 10em, 10%) {
- test((2 * b) / b, 2)
- test((a + b * 2) / b, 2)
- test(b / (b * 2 + a), 0.5)
- }
-}
-
----
-// Test boolean operators.
-
-// Test not.
-#test(not true, false)
-#test(not false, true)
-
-// 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.
-
-// Most things compare by value.
-#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("a" != "a", false)
-
-// Functions compare by identity.
-#test(test == test, true)
-#test((() => {}) == (() => {}), false)
-
-// Content compares by hash equality.
-#let t = [a]
-#test(t == t, true)
-#test([] == [], true)
-#test([a] == [a], true)
-#test([[a]] == [a], true)
-#test([] == [a], false)
-#test(box[] == box[], true)
-#test(box[a] == box[], false)
-
----
-// 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(10% < 20%, true)
-#test(50% < 40% + 0pt, false)
-#test(40% + 0pt < 50% + 0pt, true)
-#test(1em < 2em, 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")
-
----
-// Test `in` operator.
-#test("hi" in "worship", true)
-#test("hi" in ("we", "hi", "bye"), true)
-#test("Hey" in "abHeyCd", true)
-#test("Hey" in "abheyCd", false)
-#test(5 in range(10), true)
-#test(12 in range(10), false)
-#test("" in (), false)
-#test("key" in (key: "value"), true)
-#test("value" in (key: "value"), false)
-#test("Hey" not in "abheyCd", true)
-#test("a" not
-/* fun comment? */ in "abc", false)
-
----
-// Error: 9 expected keyword `in`
-{"a" not}
-
----
-// Test `with` method.
-
-// Apply positional arguments.
-#let add(x, y) = x + y
-#test(add.with(2)(3), 5)
-#test(add.with(2).with(3)(), 5)
-#test((add.with(2))(4), 6)
-#test((add.with(2).with(3))(), 5)
-
-// Make sure that named arguments are overridable.
-#let inc(x, y: 1) = x + y
-#test(inc(1), 2)
-
-#let inc2 = inc.with(y: 2)
-#test(inc2(2), 4)
-#test(inc2(2, y: 4), 6)