From 3017cd27f6a9ec81266696d9229dc5c3300482e6 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Wed, 20 Dec 2023 18:58:46 +0000 Subject: Add test for popping of stack --- .../NamespaceDependencyLineariserTests.java | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/test/java') 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 dependencies -- cgit v1.2.3