summaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-10-25 14:00:14 +0000
committerMichael Williamson <mike@zwobble.org>2026-10-25 14:00:14 +0000
commit91bc5df9cc0a6f7ef4fb63c301a0a8ad1f571a31 (patch)
treed0677a6fbf5b131a2d8b2dbd3f59a37838a914ed /src/test/java
parented546c3f79ffe43e849134843645461580aa41f4 (diff)
Store information about database tables
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerDatabaseSchemaDefinitionTests.java12
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerTableDefinitionTests.java20
2 files changed, 29 insertions, 3 deletions
diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerDatabaseSchemaDefinitionTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerDatabaseSchemaDefinitionTests.java
index 01ff814..daecb54 100644
--- a/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerDatabaseSchemaDefinitionTests.java
+++ b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerDatabaseSchemaDefinitionTests.java
@@ -9,6 +9,7 @@ import org.zwobble.hobgoblin.compiler.sources.NullSource;
import org.zwobble.hobgoblin.compiler.types.*;
import java.util.List;
+import java.util.Map;
import java.util.Optional;
import static org.zwobble.hobgoblin.compiler.ast.typed.TypedDatabaseSchemaDefinitionNodeMatcher.isTypedDatabaseSchemaDefinitionNode;
@@ -54,5 +55,16 @@ public class TypeCheckerDatabaseSchemaDefinitionTests {
namespaceContext.lookupType("blogApp"),
isOptionalOf(equalTo(Types.databaseSchema(new DatabaseSchema(NamespaceName.of("App"), "blogApp"))))
);
+ var typesInfo = namespaceContext.toTypesInfo();
+ var schemaInfo = typesInfo.databaseSchemaInfo(new DatabaseSchema(NamespaceName.of("App"), "blogApp"));
+ assertThat(schemaInfo.tables().entrySet(), isSequence(
+ allOf(
+ has("key", Map.Entry::getKey, equalTo("authors")),
+ has("value", Map.Entry::getValue, allOf(
+ has("rowType", TableInfo::rowType, equalTo(authorType)),
+ has("primaryKey", TableInfo::primaryKey, equalTo(new Field("id", NativeTypes.INT_32, NullSource.INSTANCE)))
+ ))
+ )
+ ));
}
}
diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerTableDefinitionTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerTableDefinitionTests.java
index a32945a..989fa39 100644
--- a/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerTableDefinitionTests.java
+++ b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerTableDefinitionTests.java
@@ -9,6 +9,7 @@ import org.zwobble.hobgoblin.compiler.typechecker.errors.NoSuchFieldError;
import org.zwobble.hobgoblin.compiler.typechecker.errors.TableRowTypeMustBeStructError;
import org.zwobble.hobgoblin.compiler.types.*;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Optional;
@@ -37,11 +38,16 @@ public class TypeCheckerTableDefinitionTests {
new Field("id", NativeTypes.INT_32, NullSource.INSTANCE)
)));
- var typed = typeCheckDatabaseSchemaStatement(untyped, namespaceContext);
+ var typed = typeCheckDatabaseSchemaStatement(
+ untyped,
+ new DatabaseSchemaInfo(new LinkedHashMap<>()),
+ namespaceContext
+ );
assertThat(typed, isTypedTableDefinitionNode()
.withName(equalTo("authors"))
.withRowType(equalTo(authorType))
+ .withPrimaryKey(equalTo(new Field("id", NativeTypes.INT_32, NullSource.INSTANCE)))
);
}
@@ -61,7 +67,11 @@ public class TypeCheckerTableDefinitionTests {
var error = assertThrows(
TableRowTypeMustBeStructError.class,
- () -> typeCheckDatabaseSchemaStatement(untyped, namespaceContext)
+ () -> typeCheckDatabaseSchemaStatement(
+ untyped,
+ new DatabaseSchemaInfo(new LinkedHashMap<>()),
+ namespaceContext
+ )
);
assertThat(error.rowType(), equalTo(authorType));
@@ -87,7 +97,11 @@ public class TypeCheckerTableDefinitionTests {
var error = assertThrows(
NoSuchFieldError.class,
- () -> typeCheckDatabaseSchemaStatement(untyped, namespaceContext)
+ () -> typeCheckDatabaseSchemaStatement(
+ untyped,
+ new DatabaseSchemaInfo(new LinkedHashMap<>()),
+ namespaceContext
+ )
);
assertThat(error.type(), equalTo(authorType));