diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-03-22 10:20:44 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-03-22 10:20:44 +0000 |
| commit | f68c1f5fed1a98c51e8d6924ed5b2bc6350118ee (patch) | |
| tree | 49e2e6fe19318a1d43c504420a7ac7249439e521 /src/test/java | |
| parent | 6e04d1210402cfb487367b9ba811d5f7b00e557b (diff) | |
Parametrize SourceSerializationTests
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/sources/SourceSerializationTests.java | 47 | ||||
| -rw-r--r-- | src/test/java/org/shedlang/compiler/sources/protobuf/SourceToProtobufTests.java | 11 |
2 files changed, 45 insertions, 13 deletions
diff --git a/src/test/java/org/shedlang/compiler/sources/SourceSerializationTests.java b/src/test/java/org/shedlang/compiler/sources/SourceSerializationTests.java index 0e23201f..7e417d2d 100644 --- a/src/test/java/org/shedlang/compiler/sources/SourceSerializationTests.java +++ b/src/test/java/org/shedlang/compiler/sources/SourceSerializationTests.java @@ -1,23 +1,48 @@ package org.shedlang.compiler.sources; import org.junit.jupiter.api.Test; -import org.shedlang.compiler.sources.protobuf.SourceToProtobuf; import org.zwobble.sourcetext.SourcePosition; import org.zwobble.sourcetext.SourceRange; import org.zwobble.sourcetext.SourceText; import java.util.Optional; +import java.util.function.BiFunction; import static org.zwobble.precisely.AssertThat.assertThat; import static org.zwobble.precisely.Matchers.equalTo; -public abstract class SourceSerializationTests { +public abstract class SourceSerializationTests<TSerializedSource> { + private final BiFunction<Source, Optional<Source>, TSerializedSource> serialize; + private final BiFunction<TSerializedSource, Optional<Source>, Source> deserialize; + + public SourceSerializationTests( + BiFunction<Source, Optional<Source>, TSerializedSource> serialize, + BiFunction<TSerializedSource, Optional<Source>, Source> deserialize + ) { + this.serialize = serialize; + this.deserialize = deserialize; + } + + private TSerializedSource serializeSource( + Source source, + Optional<Source> parentSource + ) { + return this.serialize.apply(source, parentSource); + } + + private Source deserializeSource( + TSerializedSource serializedSource, + Optional<Source> parentSource + ) { + return this.deserialize.apply(serializedSource, parentSource); + } + @Test public void canSerializeNullSource() { var source = Sources.NULL; - var deserializedSource = SourceToProtobuf.deserializeSource( - SourceToProtobuf.serializeSource(source, Optional.empty()), + var deserializedSource = deserializeSource( + serializeSource(source, Optional.empty()), Optional.empty() ); @@ -28,8 +53,8 @@ public abstract class SourceSerializationTests { public void canSerializeRuntimeSource() { var source = Sources.RUNTIME; - var deserializedSource = SourceToProtobuf.deserializeSource( - SourceToProtobuf.serializeSource(source, Optional.empty()), + var deserializedSource = deserializeSource( + serializeSource(source, Optional.empty()), Optional.empty() ); @@ -45,8 +70,8 @@ public abstract class SourceSerializationTests { new SourcePosition(sourceText, 5) )); - var deserializedSource = SourceToProtobuf.deserializeSource( - SourceToProtobuf.serializeSource(source, Optional.empty()), + var deserializedSource = deserializeSource( + serializeSource(source, Optional.empty()), Optional.empty() ); @@ -68,9 +93,9 @@ public abstract class SourceSerializationTests { new SourcePosition(sourceText, 10) )); - var deserializedSource = (FileFragmentSource) SourceToProtobuf.deserializeSource( - SourceToProtobuf.serializeSource(source, parentSource), - parentSource + var deserializedSource = (FileFragmentSource) deserializeSource( + serializeSource(source, Optional.of(parentSource)), + Optional.of(parentSource) ); assertThat(deserializedSource.describe(), equalTo(source.describe())); diff --git a/src/test/java/org/shedlang/compiler/sources/protobuf/SourceToProtobufTests.java b/src/test/java/org/shedlang/compiler/sources/protobuf/SourceToProtobufTests.java index 9e272436..9aba0b99 100644 --- a/src/test/java/org/shedlang/compiler/sources/protobuf/SourceToProtobufTests.java +++ b/src/test/java/org/shedlang/compiler/sources/protobuf/SourceToProtobufTests.java @@ -2,6 +2,13 @@ package org.shedlang.compiler.sources.protobuf; import org.shedlang.compiler.sources.SourceSerializationTests; -public class SourceToProtobufTests extends SourceSerializationTests { - +public class SourceToProtobufTests extends SourceSerializationTests<SourcesProtobuf.Source> { + public SourceToProtobufTests() { + super( + (source, parentSource) -> + SourceToProtobuf.serializeSource(source, parentSource), + (serializedSource, parentSource) -> + SourceToProtobuf.deserializeSource(serializedSource, parentSource) + ); + } } |
