diff options
| author | Michael Williamson <mike@zwobble.org> | 2024-12-23 11:48:19 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2024-12-23 11:48:19 +0000 |
| commit | a7d9c54a3926fe1846e795980f81d03f0114212f (patch) | |
| tree | 4e0c8f3e6ba505a150b258c3d1cd2a6b13531221 /src/test/java | |
| parent | 0bc830c841cad08c94f13e555eb9b8d1627f2b47 (diff) | |
Add TomlTableWithSource.getStringOrNone()
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/config/toml/TomlTableWithSourceTests.java | 75 |
1 files changed, 75 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 e99b2611..3dcc17f0 100644 --- a/src/test/java/org/shedlang/compiler/config/toml/TomlTableWithSourceTests.java +++ b/src/test/java/org/shedlang/compiler/config/toml/TomlTableWithSourceTests.java @@ -4,6 +4,8 @@ import org.junit.jupiter.api.Test; import org.shedlang.compiler.config.errors.ConfigError; import org.shedlang.compiler.sources.Sources; +import java.util.Optional; + import static org.junit.jupiter.api.Assertions.assertThrows; import static org.zwobble.precisely.AssertThat.assertThat; import static org.zwobble.precisely.Matchers.equalTo; @@ -89,4 +91,77 @@ public class TomlTableWithSourceTests { assertThat(result, equalTo("two")); } + + @Test + public void whenKeyIsMissingThenGetStringOrNoneReturnsEmptyOptional() { + var source = Sources.string(""" + [[shed.bins]] + name = "one" + + [[shed.bins]] + """); + var table = TomlTableWithSource.parse(source); + + var result = table + .getTable("shed") + .orElseThrow() + .getArrayOfTables("bins") + .orElseThrow() + .get(1) + .getStringOrNone("name"); + + assertThat(result, equalTo(Optional.empty())); + } + + @Test + public void whenKeyIsNotStringThenGetStringOrNoneThrowsError() { + var source = Sources.string(""" + [[shed.bins]] + name = "one" + + [[shed.bins]] + name = true + """); + var table = TomlTableWithSource.parse(source); + + var error = assertThrows( + ConfigError.class, + () -> table + .getTable("shed") + .orElseThrow() + .getArrayOfTables("bins") + .orElseThrow() + .get(1) + .getStringOrNone("name") + ); + + assertThat(error.getMessage(), equalTo("Expected shed.bins[1].name to be a string, but was Boolean")); + assertThat(error.source().describe(), equalTo(""" + <string>:5:1 + name = true + ^""" + )); + } + + @Test + public void whenKeyIsStringThenGetStringOrNoneReturnsValue() { + var source = Sources.string(""" + [[shed.bins]] + name = "one" + + [[shed.bins]] + name = "two" + """); + var table = TomlTableWithSource.parse(source); + + var result = table + .getTable("shed") + .orElseThrow() + .getArrayOfTables("bins") + .orElseThrow() + .get(1) + .getStringOrNone("name"); + + assertThat(result, equalTo(Optional.of("two"))); + } } |
