aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-03-22 10:20:44 +0000
committerMichael Williamson <mike@zwobble.org>2026-03-22 10:20:44 +0000
commitf68c1f5fed1a98c51e8d6924ed5b2bc6350118ee (patch)
tree49e2e6fe19318a1d43c504420a7ac7249439e521 /src/test/java
parent6e04d1210402cfb487367b9ba811d5f7b00e557b (diff)
Parametrize SourceSerializationTests
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/sources/SourceSerializationTests.java47
-rw-r--r--src/test/java/org/shedlang/compiler/sources/protobuf/SourceToProtobufTests.java11
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)
+ );
+ }
}