#include #include #include "Swiften/Elements/Storage.h" #include "Swiften/Parser/PayloadParsers/PrivateStorageParser.h" #include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h" #include "Swiften/Parser/PayloadParsers/UnitTest/PayloadParserTester.h" using namespace Swift; class PrivateStorageParserTest : public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(PrivateStorageParserTest); CPPUNIT_TEST(testParse); CPPUNIT_TEST(testParse_NoPayload); CPPUNIT_TEST(testParse_MultiplePayloads); CPPUNIT_TEST_SUITE_END(); public: PrivateStorageParserTest() {} void testParse() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse( "" "" "" "Alice" "" "" "")); boost::shared_ptr payload = boost::dynamic_pointer_cast(parser.getPayload()); CPPUNIT_ASSERT(payload); boost::shared_ptr storage = boost::dynamic_pointer_cast(payload->getPayload()); CPPUNIT_ASSERT(storage); CPPUNIT_ASSERT_EQUAL(String("Alice"), storage->getConferences()[0].nick); CPPUNIT_ASSERT_EQUAL(JID("swift@rooms.swift.im"), storage->getConferences()[0].jid); } void testParse_NoPayload() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse("")); boost::shared_ptr payload = boost::dynamic_pointer_cast(parser.getPayload()); CPPUNIT_ASSERT(payload); CPPUNIT_ASSERT(!payload->getPayload()); } void testParse_MultiplePayloads() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse( "" "" "" "Alice" "" "" "" "" "Rabbit" "" "" "")); boost::shared_ptr payload = boost::dynamic_pointer_cast(parser.getPayload()); CPPUNIT_ASSERT(payload); boost::shared_ptr storage = boost::dynamic_pointer_cast(payload->getPayload()); CPPUNIT_ASSERT(storage); CPPUNIT_ASSERT_EQUAL(String("Rabbit"), storage->getConferences()[0].nick); } void testParse_UnsupportedPayload() { PayloadParserFactoryCollection factories; PrivateStorageParser testling(&factories); PayloadParserTester parser(&testling); CPPUNIT_ASSERT(parser.parse( "" "Bar" "")); CPPUNIT_ASSERT(!boost::dynamic_pointer_cast(testling.getPayload())->getPayload()); } }; CPPUNIT_TEST_SUITE_REGISTRATION(PrivateStorageParserTest);