aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2024-12-23 11:45:41 +0000
committerMichael Williamson <mike@zwobble.org>2024-12-23 11:45:41 +0000
commit0bc830c841cad08c94f13e555eb9b8d1627f2b47 (patch)
tree7078159d4959ec1df1ac87089ae0fcb054727aba /src/test/java
parent1d0a52cfbb17d77eef8d89be7762203f7286e92f (diff)
Test getString() directly
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/config/toml/TomlTableWithSourceTests.java92
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"));
+ }
+}