diff options
Diffstat (limited to 'src/test/java/org')
| -rw-r--r-- | src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerNativeTypeDefinitionTests.java | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerNativeTypeDefinitionTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerNativeTypeDefinitionTests.java new file mode 100644 index 0000000..bd08e40 --- /dev/null +++ b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerNativeTypeDefinitionTests.java @@ -0,0 +1,36 @@ +package org.zwobble.hobgoblin.compiler.typechecker; + +import org.junit.jupiter.api.Test; +import org.zwobble.hobgoblin.compiler.ast.DocComment; +import org.zwobble.hobgoblin.compiler.ast.typed.TypedNativeTypeDefinitionNode; +import org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNativeTypeDefinitionNode; +import org.zwobble.hobgoblin.compiler.sources.NullSource; +import org.zwobble.hobgoblin.compiler.types.NamespaceName; +import org.zwobble.hobgoblin.compiler.types.SimpleNativeType; + +import static org.zwobble.hobgoblin.compiler.typechecker.TypeCheckerTesting.typeCheckNamespaceStatement; +import static org.zwobble.precisely.AssertThat.assertThat; +import static org.zwobble.precisely.Matchers.*; + +public class TypeCheckerNativeTypeDefinitionTests { + @Test + public void nativeTypeHasNamespaceFromContext() { + var untyped = new UntypedNativeTypeDefinitionNode( + "X", + DocComment.EMPTY, + NullSource.INSTANCE + ); + var context = TypeCheckerContextArb.namespaceContext(NamespaceName.of("a", "b")); + + var typed = typeCheckNamespaceStatement(untyped, context); + + assertThat(typed, instanceOf( + TypedNativeTypeDefinitionNode.class, + has( + "type", + TypedNativeTypeDefinitionNode::type, + equalTo(new SimpleNativeType(NamespaceName.of("a", "b"), "X")) + ) + )); + } +} |
