diff options
| author | Michael Williamson <mike@zwobble.org> | 2024-12-23 11:45:41 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2024-12-23 11:45:41 +0000 |
| commit | 0bc830c841cad08c94f13e555eb9b8d1627f2b47 (patch) | |
| tree | 7078159d4959ec1df1ac87089ae0fcb054727aba /src/test/java | |
| parent | 1d0a52cfbb17d77eef8d89be7762203f7286e92f (diff) | |
Test getString() directly
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/config/toml/TomlTableWithSourceTests.java | 92 |
1 files changed, 92 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 new file mode 100644 index 00000000..e99b2611 --- /dev/null +++ b/src/test/java/org/shedlang/compiler/config/toml/TomlTableWithSourceTests.java @@ -0,0 +1,92 @@ +package org.shedlang.compiler.config.toml; + +import org.junit.jupiter.api.Test; +import org.shedlang.compiler.config.errors.ConfigError; +import org.shedlang.compiler.sources.Sources; + +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.zwobble.precisely.AssertThat.assertThat; +import static org.zwobble.precisely.Matchers.equalTo; + +public class TomlTableWithSourceTests { + @Test + public void whenKeyIsMissingThenGetStringThrowsError() { + var source = Sources.string(""" + [[shed.bins]] + name = "one" + + [[shed.bins]] + """); + var table = TomlTableWithSource.parse(source); + + var error = assertThrows( + ConfigError.class, + () -> table + .getTable("shed") + .orElseThrow() + .getArrayOfTables("bins") + .orElseThrow() + .get(1) + .getString("name") + ); + + assertThat(error.getMessage(), equalTo("shed.bins[1] is missing name")); + assertThat(error.source().describe(), equalTo(""" + <string>:4:1 + [[shed.bins]] + ^""" + )); + } + + @Test + public void whenKeyIsNotStringThenGetStringThrowsError() { + 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) + .getString("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 whenKeyIsStringThenGetStringReturnsValue() { + 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) + .getString("name"); + + assertThat(result, equalTo("two")); + } +} |
