diff options
| author | Michael Williamson <mike@zwobble.org> | 2025-02-05 18:48:01 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2025-02-05 18:48:01 +0000 |
| commit | 765d7579b96f558ffc6232b707d471850664a11a (patch) | |
| tree | 1deb393601bb77d8adf10a6c1c2b8eda30c2585d /src/test/java | |
| parent | 89394d0fab076765b637b0fe643d8f8950639817 (diff) | |
Add native types
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/types/TypeSubstitutionTests.java | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/types/TypeSubstitutionTests.java b/src/test/java/org/shedlang/compiler/types/TypeSubstitutionTests.java index c85087fd..451d12f6 100644 --- a/src/test/java/org/shedlang/compiler/types/TypeSubstitutionTests.java +++ b/src/test/java/org/shedlang/compiler/types/TypeSubstitutionTests.java @@ -10,6 +10,7 @@ import static org.zwobble.precisely.Matchers.equalTo; public class TypeSubstitutionTests { private static final NamespaceName NAMESPACE_NAME = NamespaceName.of("Example", "Project"); + private static final SimpleNativeType NATIVE_TYPE = Types.nativeType(NAMESPACE_NAME, "Native"); private static final SimpleStructType STRUCT_TYPE = Types.struct(NAMESPACE_NAME, "Struct"); private static final SimpleStructType STRUCT_TYPE_2 = Types.struct(NAMESPACE_NAME, "Struct2"); @@ -281,6 +282,48 @@ public class TypeSubstitutionTests { } @Test + public void substitutingConstructedNativeSubstitutesTypeArgs() { + var typeSubstitutionMap = TypeSubstitutionMap.of( + Map.entry(TypeParam.forStructType(STRUCT_TYPE, "T"), Types.INT) + ); + + var result = TypeSubstitution.substituteType( + Types.constructedNativeType( + Types.typeConstructor( + List.of(TypeParam.forNativeType(NATIVE_TYPE, "T")), + NATIVE_TYPE + ), + List.of(TypeParam.forStructType(STRUCT_TYPE, "T")) + ), + typeSubstitutionMap + ); + + assertThat(result, equalTo( + Types.constructedNativeType( + Types.typeConstructor( + List.of(TypeParam.forNativeType(NATIVE_TYPE, "T")), + NATIVE_TYPE + ), + List.of(Types.INT) + ) + )); + } + + @Test + public void substitutingSimpleNativeDoesNothing() { + var typeSubstitutionMap = TypeSubstitutionMap.of( + Map.entry(TypeParam.forStructType(STRUCT_TYPE, "T"), Types.INT) + ); + + var result = TypeSubstitution.substituteType( + Types.nativeType(NamespaceName.of("A"), "B"), + typeSubstitutionMap + ); + + assertThat(result, equalTo(Types.nativeType(NamespaceName.of("A"), "B"))); + } + + @Test public void substitutingStringDoesNothing() { var typeSubstitutionMap = TypeSubstitutionMap.of( Map.entry(TypeParam.forStructType(STRUCT_TYPE, "T"), Types.INT) |
