/* * Copyright (c) 2010 Remko Tronçon * Licensed under the GNU General Public License v3. * See Documentation/Licenses/GPLv3.txt for more information. */ #include #include #include #include #include #include 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(std::string("Alice"), storage->getRooms()[0].nick); CPPUNIT_ASSERT_EQUAL(JID("swift@rooms.swift.im"), storage->getRooms()[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(std::string("Rabbit"), storage->getRooms()[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);