aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-12-20 18:58:46 +0000
committerMichael Williamson <mike@zwobble.org>2023-12-20 18:58:46 +0000
commit3017cd27f6a9ec81266696d9229dc5c3300482e6 (patch)
tree1758b0134b63334341a87d55c88f55533d96033f /src/test/java
parent5fddf03f87abdbd55aa6d1c370fd0440ebb7e924 (diff)
Add test for popping of stack
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/typechecker/NamespaceDependencyLineariserTests.java22
1 files changed, 22 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 bf2e9816..0a8e72bc 100644
--- a/src/test/java/org/shedlang/compiler/typechecker/NamespaceDependencyLineariserTests.java
+++ b/src/test/java/org/shedlang/compiler/typechecker/NamespaceDependencyLineariserTests.java
@@ -114,6 +114,28 @@ public class NamespaceDependencyLineariserTests {
));
}
+ @Test
+ public void cycleOfDependenciesDoesNotIncludeUnrelatedDependencies() {
+ var namespaces = List.of(
+ namespaceNode("Z", List.of()),
+ namespaceNode("A", List.of("B")),
+ namespaceNode("B", List.of("C")),
+ namespaceNode("C", List.of("A"))
+ );
+
+ var error = assertThrows(
+ CircularNamespaceDependencyError.class,
+ () -> NamespaceDependencyLineariser.orderNamespaces(namespaces)
+ );
+
+ assertThat(error.namespaceNames(), isSequence(
+ equalTo(NamespaceName.of("A")),
+ equalTo(NamespaceName.of("B")),
+ equalTo(NamespaceName.of("C")),
+ equalTo(NamespaceName.of("A"))
+ ));
+ }
+
private static UntypedNamespaceNode namespaceNode(
String namespaceName,
List<String> dependencies