#include #include #include #include #include "common/xmlutils.h" TEST(CommonXmlUtils, ReadNextStartElement) { QByteArray xml = "value"; QBuffer buffer(&xml); buffer.open(QIODevice::ReadOnly); QXmlStreamReader reader(&buffer); EXPECT_TRUE(olive::xml_read_next_start_element(&reader)); EXPECT_EQ(reader.name().toString(), QStringLiteral("root")); EXPECT_TRUE(olive::xml_read_next_start_element(&reader)); EXPECT_EQ(reader.name().toString(), QStringLiteral("child")); } TEST(CommonXmlUtils, ReadNextStartElementSkipsWhitespace) { QByteArray xml = "\n \n\n\n\n"; QBuffer buffer(&xml); buffer.open(QIODevice::ReadOnly); QXmlStreamReader reader(&buffer); EXPECT_TRUE(olive::xml_read_next_start_element(&reader)); EXPECT_EQ(reader.name().toString(), QStringLiteral("root")); EXPECT_TRUE(olive::xml_read_next_start_element(&reader)); EXPECT_EQ(reader.name().toString(), QStringLiteral("child")); } TEST(CommonXmlUtils, ReadNextStartElementReturnsFalseAtEnd) { QByteArray xml = ""; QBuffer buffer(&xml); buffer.open(QIODevice::ReadOnly); QXmlStreamReader reader(&buffer); EXPECT_TRUE(olive::xml_read_next_start_element(&reader)); EXPECT_EQ(reader.name().toString(), QStringLiteral("root")); EXPECT_FALSE(olive::xml_read_next_start_element(&reader)); } TEST(CommonXmlUtils, ReadNextStartElementSkipsUnknown) { QByteArray xml = ""; QBuffer buffer(&xml); buffer.open(QIODevice::ReadOnly); QXmlStreamReader reader(&buffer); EXPECT_TRUE(olive::xml_read_next_start_element(&reader)); EXPECT_TRUE(olive::xml_read_next_start_element(&reader)); EXPECT_EQ(reader.name().toString(), QStringLiteral("unknown")); reader.skipCurrentElement(); EXPECT_TRUE(olive::xml_read_next_start_element(&reader)); EXPECT_EQ(reader.name().toString(), QStringLiteral("known")); } TEST(CommonXmlUtils, ReadNextStartElementWithCancel) { QByteArray xml = ""; QBuffer buffer(&xml); buffer.open(QIODevice::ReadOnly); QXmlStreamReader reader(&buffer); olive::CancelAtom atom; EXPECT_TRUE(olive::xml_read_next_start_element(&reader, &atom)); EXPECT_EQ(reader.name().toString(), QStringLiteral("root")); } TEST(CommonXmlUtils, ReadNextStartElementRespectsCancel) { QByteArray xml = ""; QBuffer buffer(&xml); buffer.open(QIODevice::ReadOnly); QXmlStreamReader reader(&buffer); olive::CancelAtom atom; atom.cancel(); EXPECT_FALSE(olive::xml_read_next_start_element(&reader, &atom)); }