Skip to content

Commit

Permalink
Add tests for resolving exported and reexported types
Browse files Browse the repository at this point in the history
  • Loading branch information
Akirathan committed Mar 4, 2025
1 parent 414ee1a commit e43f350
Showing 1 changed file with 60 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,60 @@ public void resolveConstructor_ViaFQN_ImportFQN() throws IOException {
});
}

@Test
public void resolveExportedType() throws IOException {
var projDir = TMP_DIR.newFolder().toPath();
ProjectUtils.createProject(
"Proj",
Set.of(
new SourceModule(
QualifiedName.fromString("My_Module"),
"""
type My_Type
Cons
"""),
new SourceModule(
QualifiedName.fromString("Main"),
"""
export project.My_Module.My_Type
""")),
projDir);
testBindingsMap(
projDir,
bindingsMap -> {
assertSingleResolvedType(bindingsMap, "My_Type");
});
}

@Test
public void resolveReexportedType() throws IOException {
var tmpDir = TMP_DIR.newFolder();
var libDir = tmpDir.toPath().resolve("Lib");
var projDir = tmpDir.toPath().resolve("Proj");
libDir.toFile().mkdir();
projDir.toFile().mkdir();
ProjectUtils.createProject(
"Lib",
Set.of(
new SourceModule(QualifiedName.fromString("Main"), "export project.My_Module.My_Type"),
new SourceModule(
QualifiedName.fromString("My_Module"),
"""
type My_Type
Cons
""")),
libDir);
ProjectUtils.createProject(
"Proj",
Set.of(new SourceModule(QualifiedName.fromString("Main"), "from local.Lib import all")),
projDir);
testBindingsMap(
projDir,
bindingsMap -> {
assertSingleResolvedType(bindingsMap, "local.Lib.My_Module.My_Type");
});
}

private Path createProject(String mainModuleSrc) throws IOException {
var projDir = TMP_DIR.newFolder().toPath();
var modules =
Expand Down Expand Up @@ -189,9 +243,14 @@ private static void assertResolvedNames(
}

private static void testBindingsMap(Path projDir, Consumer<BindingsMap> callback) {
testBindingsMap(projDir, "local.Proj.Main", callback);
}

private static void testBindingsMap(
Path projDir, String moduleName, Consumer<BindingsMap> callback) {
try (var ctx = createCtx(projDir)) {
compile(ctx);
var bm = getBindingsMap(ctx, "local.Proj.Main");
var bm = getBindingsMap(ctx, moduleName);
assertThat(bm, is(notNullValue()));
callback.accept(bm);
}
Expand Down

0 comments on commit e43f350

Please sign in to comment.