summaryrefslogtreecommitdiff
path: root/tests/typ/code/import.typ
diff options
context:
space:
mode:
Diffstat (limited to 'tests/typ/code/import.typ')
-rw-r--r--tests/typ/code/import.typ119
1 files changed, 119 insertions, 0 deletions
diff --git a/tests/typ/code/import.typ b/tests/typ/code/import.typ
new file mode 100644
index 00000000..30dc556c
--- /dev/null
+++ b/tests/typ/code/import.typ
@@ -0,0 +1,119 @@
+// Test import statements.
+
+---
+// Test importing semantics.
+
+// A named import.
+#import "target.typ" using item
+#test(item(1, 2), 3)
+
+// Test that this will be overwritten.
+#let value = [foo]
+
+// Import multiple things.
+// Error: 28-29 expected expression, found comma
+#import "target.typ" using ,fn, value
+#fn[Like and Subscribe!]
+#value
+
+// Code mode
+{
+ import "target.typ" using b
+ test(b, 1)
+}
+
+#test(b, 1)
+
+// This should not exist yet
+// Error: 1-3 unknown variable
+#d
+
+// A wildcard import.
+#import "target.typ" using *
+
+// It exists now!
+#d
+
+---
+// Test bad imports.
+// Ref: false
+
+// Error: 9-11 file not found
+#import "" using name
+
+// Error: 9-20 file not found
+#import "lib/0.2.1" using *
+
+// Error: 9-20 file not found
+#import "lib@0.2.1" using *
+
+// Some non-text stuff.
+// Error: 9-30 file is not valid utf-8
+#import "../../res/rhino.png" using *
+
+// Unresolved import.
+// Error: 28-40 unresolved import
+#import "target.typ" using non_existing
+
+// Cyclic import.
+// Error: 9-34 cyclic import
+#import "./importable/cycle1.typ" using *
+
+---
+// Test syntax.
+
+// Missing file.
+// Error: 9-10 expected expression, found star
+#import *
+
+// Should output `"target.typ"`.
+// Error: 1-7 unexpected keyword `using`
+#using "target.typ"
+
+// Should output `target`.
+// Error: 3:9-4:8 file not found
+// Error: 3:8 expected semicolon or line break
+// Error: 2:8 expected keyword `using`
+#import "target.typ
+using "target
+
+// Should output `@ 0.2.1 using`.
+// Error: 2:21 expected semicolon or line break
+// Error: 1:21 expected keyword `using`
+#import "target.typ" @ 0.2.1 using *
+
+// Error: 3:21 expected keyword `using`
+// Error: 2:21 expected semicolon or line break
+// Error: 1:22-1:28 unexpected keyword `using`
+#import "target.typ" #using *
+
+// Error: 2:21 expected semicolon or line break
+// Error: 1:21 expected keyword `using`
+#import "target.typ" usinga,b,c
+
+// Error: 27 expected import items
+#import "target.typ" using
+
+// Error: 2:28-2:29 expected expression, found assignment operator
+// Error: 1:29 expected import items
+#import "target.typ" using =
+
+// Allow the trailing comma.
+#import "target.typ" using a, c,
+
+// An additional trailing comma.
+// Error: 36-37 expected expression, found comma
+#import "target.typ" using a, b, c,,
+
+// Star in the list.
+// Error: 2:31-2:32 expected expression, found star
+// Error: 32-33 expected expression, found comma
+#import "target.typ" using a, *, b
+
+// Stop at semicolon.
+#import "target.typ" using a, c;Hi
+
+// Who needs whitespace anyways?
+#import "target.typ"using *
+#import"target.typ"using*
+#import "target.typ"using *