Tests: add unit tests for XMLReader::readNextElement()

This commit is contained in:
wmayer
2023-10-09 12:30:10 +02:00
committed by wwmayer
parent cab1b21880
commit eafe867f2a

View File

@@ -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 attr='1'>Node1</node1>
<node2 attr='2'>Node2</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"(
<node1 attr='1'/>
<node2 attr='2'/>
)";
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");
}