aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-12-20 19:05:13 +0000
committerMichael Williamson <mike@zwobble.org>2023-12-20 19:05:13 +0000
commitf38d5b17426f7faca4793a52c0891227003fe93e (patch)
treeda6355b5ebe72f26334e752d978c97ef6c6b19a1 /src/test/java
parentc472034dcdea19ac4e25202ecf76d7ad4a2616b4 (diff)
Handle unknown namespaces
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/typechecker/NamespaceDependencyLineariserTests.java15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/typechecker/NamespaceDependencyLineariserTests.java b/src/test/java/org/shedlang/compiler/typechecker/NamespaceDependencyLineariserTests.java
index fba6d0e4..89283ab9 100644
--- a/src/test/java/org/shedlang/compiler/typechecker/NamespaceDependencyLineariserTests.java
+++ b/src/test/java/org/shedlang/compiler/typechecker/NamespaceDependencyLineariserTests.java
@@ -4,6 +4,7 @@ import org.junit.jupiter.api.Test;
import org.shedlang.compiler.ast.untyped.Untyped;
import org.shedlang.compiler.ast.untyped.UntypedNamespaceNode;
import org.shedlang.compiler.typechecker.errors.CircularNamespaceDependencyError;
+import org.shedlang.compiler.typechecker.errors.UnknownNamespaceError;
import org.shedlang.compiler.types.NamespaceName;
import org.zwobble.precisely.Matcher;
@@ -158,6 +159,20 @@ public class NamespaceDependencyLineariserTests {
));
}
+ @Test
+ public void whenDependencyIsUnrecognisedThenErrorIsThrown() {
+ var namespaces = List.of(
+ namespaceNode("A", List.of("B"))
+ );
+
+ var error = assertThrows(
+ UnknownNamespaceError.class,
+ () -> NamespaceDependencyLineariser.orderNamespaces(namespaces)
+ );
+
+ assertThat(error.unknownNamespaceName(), equalTo(NamespaceName.of("B")));
+ }
+
private static UntypedNamespaceNode namespaceNode(
String namespaceName,
List<String> dependencies