From b677bf41194a0777673c8e174c01791f645fe933 Mon Sep 17 00:00:00 2001 From: Rudolf Schlatte Date: Wed, 6 Dec 2023 17:54:23 +0100 Subject: [PATCH] Add method YamlSequence.yamlNode This returns the YamlNode at position `index` without casting it to a subtype. --- .../com/amihaiemil/eoyaml/YamlSequence.java | 17 +++++++++++++++++ .../amihaiemil/eoyaml/RtYamlSequenceTest.java | 15 +++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/src/main/java/com/amihaiemil/eoyaml/YamlSequence.java b/src/main/java/com/amihaiemil/eoyaml/YamlSequence.java index 32d98338..18ea073e 100644 --- a/src/main/java/com/amihaiemil/eoyaml/YamlSequence.java +++ b/src/main/java/com/amihaiemil/eoyaml/YamlSequence.java @@ -67,6 +67,23 @@ default int size() { return this.values().size(); } + /** + * Get the Yaml node from the given index. + * @param index Integer index. + * @return Yaml node. + */ + default YamlNode yamlNode(final int index) { + YamlNode result = null; + int count = 0; + for (final YamlNode node : this.values()) { + if (count == index) { + result = node; + } + count = count + 1; + } + return result; + } + /** * Get the Yaml mapping from the given index. * @param index Integer index. diff --git a/src/test/java/com/amihaiemil/eoyaml/RtYamlSequenceTest.java b/src/test/java/com/amihaiemil/eoyaml/RtYamlSequenceTest.java index f37b05b6..55e8b4ed 100644 --- a/src/test/java/com/amihaiemil/eoyaml/RtYamlSequenceTest.java +++ b/src/test/java/com/amihaiemil/eoyaml/RtYamlSequenceTest.java @@ -178,6 +178,21 @@ public void returnsLiteralBlockScalar() { ); } + /** + * RtYamlSequence can return a YamlNode. + */ + @Test + public void returnsYamlNode() { + List nodes = new LinkedList<>(); + nodes.add(new PlainStringScalar("test")); + nodes.add(Mockito.mock(YamlMapping.class)); + nodes.add(new PlainStringScalar("mihai")); + YamlSequence seq = new RtYamlSequence(nodes); + MatcherAssert.assertThat( + seq.yamlNode(1), Matchers.notNullValue() + ); + } + /** * RtYamlSequence can return a YamlMapping. */