diff options
| author | Michael Williamson <mike@zwobble.org> | 2024-12-23 12:00:42 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2024-12-23 12:00:42 +0000 |
| commit | 5e54269bed1266534435f54c950fb7b9645dff24 (patch) | |
| tree | 1c13a46a758d3151f70d1d4b165f87fa95fbfe4f /src/test/java | |
| parent | 31fc64bc31b43c5dcddbe263a38645d146fc4e5e (diff) | |
Add TomlTableWithSource.getLongOrNone()
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/config/toml/TomlTableWithSourceTests.java | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/config/toml/TomlTableWithSourceTests.java b/src/test/java/org/shedlang/compiler/config/toml/TomlTableWithSourceTests.java index 0165f8df..41bb3c0f 100644 --- a/src/test/java/org/shedlang/compiler/config/toml/TomlTableWithSourceTests.java +++ b/src/test/java/org/shedlang/compiler/config/toml/TomlTableWithSourceTests.java @@ -5,6 +5,7 @@ import org.shedlang.compiler.config.errors.ConfigError; import org.shedlang.compiler.sources.Sources; import java.util.Optional; +import java.util.OptionalLong; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.zwobble.precisely.AssertThat.assertThat; @@ -91,6 +92,78 @@ public class TomlTableWithSourceTests { assertThat(result, equalTo(2L)); } + @Test + public void whenKeyIsMissingThenGetLongOrNoneReturnsEmptyOptional() { + var source = Sources.string(""" + [[a.b]] + x = 1 + + [[a.b]] + """); + var table = TomlTableWithSource.parse(source); + + var result = table + .getTable("a") + .orElseThrow() + .getArrayOfTables("b") + .orElseThrow() + .get(1) + .getLongOrNone("x"); + + assertThat(result, equalTo(OptionalLong.empty())); + } + + @Test + public void whenKeyIsNotLongThenGetLongOrNoneThrowsError() { + var source = Sources.string(""" + [[a.b]] + x = 1 + + [[a.b]] + x = true + """); + var table = TomlTableWithSource.parse(source); + + var error = assertThrows( + ConfigError.class, + () -> table + .getTable("a") + .orElseThrow() + .getArrayOfTables("b") + .orElseThrow() + .get(1) + .getLongOrNone("x") + ); + + assertThat(error.getMessage(), equalTo("Expected a.b[1].x to be a long, but was Boolean")); + assertThat(error.source().describe(), equalTo(""" + <string>:5:1 + x = true + ^""" + )); + } + + @Test + public void whenKeyIsLongOrNoneThenGetLongReturnsValue() { + var source = Sources.string(""" + [[a.b]] + x = 1 + + [[a.b]] + x = 2 + """); + var table = TomlTableWithSource.parse(source); + + var result = table + .getTable("a") + .orElseThrow() + .getArrayOfTables("b") + .orElseThrow() + .get(1) + .getLongOrNone("x"); + + assertThat(result, equalTo(OptionalLong.of(2L))); + } @Test public void whenKeyIsMissingThenGetStringThrowsError() { |
