diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-03-22 10:10:33 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-03-22 10:16:03 +0000 |
| commit | 6e04d1210402cfb487367b9ba811d5f7b00e557b (patch) | |
| tree | 085cdb2667e4371463df4c8df9c03b32c95e95bf | |
| parent | 760c6d7ab4f285742a0e3a5b6cdaeff57ba31b4c (diff) | |
Extract SourceSerializationTests
| -rw-r--r-- | src/test/java/org/shedlang/compiler/sources/SourceSerializationTests.java | 79 | ||||
| -rw-r--r-- | src/test/java/org/shedlang/compiler/sources/protobuf/SourceToProtobufTests.java | 77 |
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)); - } } |
