/* * Copyright (c) 2010-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #include #include #include #include #include using namespace Swift; class XMLElementTest : public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(XMLElementTest); CPPUNIT_TEST(testSerialize); CPPUNIT_TEST(testSerialize_NoChildren); CPPUNIT_TEST(testSerialize_SpecialAttributeCharacters); CPPUNIT_TEST(testSerialize_EmptyAttributeValue); CPPUNIT_TEST_SUITE_END(); public: XMLElementTest() {} void testSerialize() { XMLElement testling("foo", "http://example.com"); testling.setAttribute("myatt", "myval"); std::shared_ptr barElement(new XMLElement("bar")); barElement->addNode(std::make_shared("Blo")); testling.addNode(barElement); std::shared_ptr bazElement(new XMLElement("baz")); bazElement->addNode(std::make_shared("Bli&")); testling.addNode(bazElement); std::string result = testling.serialize(); std::string expectedResult = "" "Blo" "Bli&</stream>" ""; CPPUNIT_ASSERT_EQUAL(expectedResult, result); } void testSerialize_NoChildren() { XMLElement testling("foo", "http://example.com"); CPPUNIT_ASSERT_EQUAL(std::string(""), testling.serialize()); } void testSerialize_SpecialAttributeCharacters() { XMLElement testling("foo"); testling.setAttribute("myatt", "<\"'&>"); CPPUNIT_ASSERT_EQUAL(std::string(""), testling.serialize()); } void testSerialize_EmptyAttributeValue() { XMLElement testling("foo"); testling.setAttribute("myatt", ""); CPPUNIT_ASSERT_EQUAL(std::string(""), testling.serialize()); } void testEscape_SpecialAttributeCharacters() { auto testling = XMLElement::escapeAttributeValue(R"(<"'&>not escaped.)"); CPPUNIT_ASSERT_EQUAL(std::string("<"'&>not escaped."), testling); } }; CPPUNIT_TEST_SUITE_REGISTRATION(XMLElementTest);