diff --git a/tests/src/Base/Reader.cpp b/tests/src/Base/Reader.cpp
index 737b7fb2d6..2ddf59dc48 100644
--- a/tests/src/Base/Reader.cpp
+++ b/tests/src/Base/Reader.cpp
@@ -198,7 +198,6 @@ TEST_F(ReaderTest, readDataLargerThanBufferSecondRead)
EXPECT_EQ(bufferSize, bytesRead);
}
-
TEST_F(ReaderTest, readDataNotStarted)
{
// Arrange
@@ -214,3 +213,55 @@ TEST_F(ReaderTest, readDataNotStarted)
// Assert
EXPECT_EQ(-1, bytesRead); // Because we didn't call beginCharStream
}
+
+TEST_F(ReaderTest, readNextStartElement)
+{
+ auto xmlBody = R"(
+Node1
+Node2
+)";
+
+ givenDataAsXMLStream(xmlBody);
+
+ // start of document
+ Reader()->readElement("document");
+ EXPECT_STREQ(Reader()->localName(), "document");
+
+ // next element
+ EXPECT_TRUE(Reader()->readNextElement());
+ EXPECT_STREQ(Reader()->localName(), "node1");
+ EXPECT_STREQ(Reader()->getAttribute("attr"), "1");
+ Reader()->readEndElement("node1");
+ EXPECT_TRUE(Reader()->isEndOfElement());
+
+ // next element
+ EXPECT_TRUE(Reader()->readNextElement());
+ EXPECT_STREQ(Reader()->localName(), "node2");
+ EXPECT_STREQ(Reader()->getAttribute("attr"), "2");
+ Reader()->readEndElement("node2");
+ EXPECT_TRUE(Reader()->isEndOfElement());
+}
+
+TEST_F(ReaderTest, readNextStartEndElement)
+{
+ auto xmlBody = R"(
+
+
+)";
+
+ givenDataAsXMLStream(xmlBody);
+
+ // start of document
+ Reader()->readElement("document");
+ EXPECT_STREQ(Reader()->localName(), "document");
+
+ // next element
+ EXPECT_TRUE(Reader()->readNextElement());
+ EXPECT_STREQ(Reader()->localName(), "node1");
+ EXPECT_STREQ(Reader()->getAttribute("attr"), "1");
+
+ // next element
+ EXPECT_TRUE(Reader()->readNextElement());
+ EXPECT_STREQ(Reader()->localName(), "node2");
+ EXPECT_STREQ(Reader()->getAttribute("attr"), "2");
+}