#include #include #include "Swiften/Serializer/XML/XMLElement.h" #include "Swiften/Serializer/XML/XMLTextNode.h" 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"); boost::shared_ptr barElement(new XMLElement("bar")); barElement->addNode(boost::shared_ptr(new XMLTextNode("Blo"))); testling.addNode(barElement); boost::shared_ptr bazElement(new XMLElement("baz")); bazElement->addNode(boost::shared_ptr(new XMLTextNode("Bli"))); testling.addNode(bazElement); String result = testling.serialize(); String expectedResult = "" "Blo" "Bli" ""; CPPUNIT_ASSERT_EQUAL(expectedResult, result); } void testSerialize_NoChildren() { XMLElement testling("foo", "http://example.com"); CPPUNIT_ASSERT_EQUAL(String(""), testling.serialize()); } void testSerialize_SpecialAttributeCharacters() { XMLElement testling("foo"); testling.setAttribute("myatt", "<\"'&>"); CPPUNIT_ASSERT_EQUAL(String(""), testling.serialize()); } void testSerialize_EmptyAttributeValue() { XMLElement testling("foo"); testling.setAttribute("myatt", ""); CPPUNIT_ASSERT_EQUAL(String(""), testling.serialize()); } }; CPPUNIT_TEST_SUITE_REGISTRATION(XMLElementTest);