aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2024-12-23 12:00:42 +0000
committerMichael Williamson <mike@zwobble.org>2024-12-23 12:00:42 +0000
commit5e54269bed1266534435f54c950fb7b9645dff24 (patch)
tree1c13a46a758d3151f70d1d4b165f87fa95fbfe4f /src/test/java
parent31fc64bc31b43c5dcddbe263a38645d146fc4e5e (diff)
Add TomlTableWithSource.getLongOrNone()
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/config/toml/TomlTableWithSourceTests.java73
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() {