aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-03-22 10:10:33 +0000
committerMichael Williamson <mike@zwobble.org>2026-03-22 10:16:03 +0000
commit6e04d1210402cfb487367b9ba811d5f7b00e557b (patch)
tree085cdb2667e4371463df4c8df9c03b32c95e95bf
parent760c6d7ab4f285742a0e3a5b6cdaeff57ba31b4c (diff)
Extract SourceSerializationTests
-rw-r--r--src/test/java/org/shedlang/compiler/sources/SourceSerializationTests.java79
-rw-r--r--src/test/java/org/shedlang/compiler/sources/protobuf/SourceToProtobufTests.java77
2 files changed, 81 insertions, 75 deletions
diff --git a/src/test/java/org/shedlang/compiler/sources/SourceSerializationTests.java b/src/test/java/org/shedlang/compiler/sources/SourceSerializationTests.java
new file mode 100644
index 00000000..0e23201f
--- /dev/null
+++ b/src/test/java/org/shedlang/compiler/sources/SourceSerializationTests.java
@@ -0,0 +1,79 @@
+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 static org.zwobble.precisely.AssertThat.assertThat;
+import static org.zwobble.precisely.Matchers.equalTo;
+
+public abstract class SourceSerializationTests {
+ @Test
+ public void canSerializeNullSource() {
+ var source = Sources.NULL;
+
+ var deserializedSource = SourceToProtobuf.deserializeSource(
+ SourceToProtobuf.serializeSource(source, Optional.empty()),
+ Optional.empty()
+ );
+
+ assertThat(deserializedSource, equalTo(source));
+ }
+
+ @Test
+ public void canSerializeRuntimeSource() {
+ var source = Sources.RUNTIME;
+
+ var deserializedSource = SourceToProtobuf.deserializeSource(
+ SourceToProtobuf.serializeSource(source, Optional.empty()),
+ Optional.empty()
+ );
+
+ assertThat(deserializedSource, equalTo(source));
+ }
+
+ @Test
+ public void whenFileFragmentSourceHasNoParentThenSourceTextIsPreserved() {
+ var sourceText = SourceText.fromString("a/b", "<contents>");
+ var source = new FileFragmentSource(new SourceRange(
+ sourceText,
+ new SourcePosition(sourceText, 2),
+ new SourcePosition(sourceText, 5)
+ ));
+
+ var deserializedSource = SourceToProtobuf.deserializeSource(
+ SourceToProtobuf.serializeSource(source, Optional.empty()),
+ Optional.empty()
+ );
+
+ assertThat(deserializedSource.describe(), equalTo(source.describe()));
+ }
+
+ @Test
+ public void whenFileFragmentSourceNoExplicitSourceTextThenSourceTextFromParentIsReused() {
+ var sourceText = SourceText.fromString("a/b", "<contents>");
+ var sourceRange = new SourceRange(
+ sourceText,
+ new SourcePosition(sourceText, 2),
+ new SourcePosition(sourceText, 5)
+ );
+ var source = new FileFragmentSource(sourceRange);
+ var parentSource = new FileFragmentSource(new SourceRange(
+ sourceText,
+ new SourcePosition(sourceText, 0),
+ new SourcePosition(sourceText, 10)
+ ));
+
+ var deserializedSource = (FileFragmentSource) SourceToProtobuf.deserializeSource(
+ SourceToProtobuf.serializeSource(source, parentSource),
+ parentSource
+ );
+
+ assertThat(deserializedSource.describe(), equalTo(source.describe()));
+ assertThat(deserializedSource.sourceRange().sourceText() == sourceText, equalTo(true));
+ }
+}
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 e8f68e46..9e272436 100644
--- a/src/test/java/org/shedlang/compiler/sources/protobuf/SourceToProtobufTests.java
+++ b/src/test/java/org/shedlang/compiler/sources/protobuf/SourceToProtobufTests.java
@@ -1,80 +1,7 @@
package org.shedlang.compiler.sources.protobuf;
-import org.junit.jupiter.api.Test;
-import org.shedlang.compiler.sources.FileFragmentSource;
-import org.shedlang.compiler.sources.Sources;
-import org.zwobble.sourcetext.SourcePosition;
-import org.zwobble.sourcetext.SourceRange;
-import org.zwobble.sourcetext.SourceText;
+import org.shedlang.compiler.sources.SourceSerializationTests;
-import java.util.Optional;
+public class SourceToProtobufTests extends SourceSerializationTests {
-import static org.zwobble.precisely.AssertThat.assertThat;
-import static org.zwobble.precisely.Matchers.equalTo;
-
-public class SourceToProtobufTests {
- @Test
- public void canSerializeNullSource() {
- var source = Sources.NULL;
-
- var deserializedSource = SourceToProtobuf.deserializeSource(
- SourceToProtobuf.serializeSource(source, Optional.empty()),
- Optional.empty()
- );
-
- assertThat(deserializedSource, equalTo(source));
- }
-
- @Test
- public void canSerializeRuntimeSource() {
- var source = Sources.RUNTIME;
-
- var deserializedSource = SourceToProtobuf.deserializeSource(
- SourceToProtobuf.serializeSource(source, Optional.empty()),
- Optional.empty()
- );
-
- assertThat(deserializedSource, equalTo(source));
- }
-
- @Test
- public void whenFileFragmentSourceHasNoParentThenSourceTextIsPreserved() {
- var sourceText = SourceText.fromString("a/b", "<contents>");
- var source = new FileFragmentSource(new SourceRange(
- sourceText,
- new SourcePosition(sourceText, 2),
- new SourcePosition(sourceText, 5)
- ));
-
- var deserializedSource = SourceToProtobuf.deserializeSource(
- SourceToProtobuf.serializeSource(source, Optional.empty()),
- Optional.empty()
- );
-
- assertThat(deserializedSource.describe(), equalTo(source.describe()));
- }
-
- @Test
- public void whenFileFragmentSourceNoExplicitSourceTextThenSourceTextFromParentIsReused() {
- var sourceText = SourceText.fromString("a/b", "<contents>");
- var sourceRange = new SourceRange(
- sourceText,
- new SourcePosition(sourceText, 2),
- new SourcePosition(sourceText, 5)
- );
- var source = new FileFragmentSource(sourceRange);
- var parentSource = new FileFragmentSource(new SourceRange(
- sourceText,
- new SourcePosition(sourceText, 0),
- new SourcePosition(sourceText, 10)
- ));
-
- var deserializedSource = (FileFragmentSource) SourceToProtobuf.deserializeSource(
- SourceToProtobuf.serializeSource(source, parentSource),
- parentSource
- );
-
- assertThat(deserializedSource.describe(), equalTo(source.describe()));
- assertThat(deserializedSource.sourceRange().sourceText() == sourceText, equalTo(true));
- }
}