/* * Copyright (c) 2014-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #include #include #include #include #include using namespace Swift; class MAMQueryParserTest : public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(MAMQueryParserTest); CPPUNIT_TEST(testParse); CPPUNIT_TEST(testParse_XEP0313_Example3); CPPUNIT_TEST(testParse_XEP0313_Example4); CPPUNIT_TEST(testParseEmpty); CPPUNIT_TEST_SUITE_END(); public: void testParse() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse( "" "" "" "urn:xmpp:mam:0" "" "" "2010-08-07T00:00:00Z" "" "" "" "10" "" "")); std::shared_ptr payload = parser.getPayload(); CPPUNIT_ASSERT(!!payload); CPPUNIT_ASSERT(payload->getQueryID()); CPPUNIT_ASSERT_EQUAL(std::string("id0"), *payload->getQueryID()); CPPUNIT_ASSERT_EQUAL(std::string("node1"), *payload->getNode()); CPPUNIT_ASSERT(payload->getForm()); std::shared_ptr fieldType = payload->getForm()->getField("FORM_TYPE"); CPPUNIT_ASSERT(fieldType); CPPUNIT_ASSERT_EQUAL(std::string("urn:xmpp:mam:0"), fieldType->getTextSingleValue()); std::shared_ptr fieldStart = payload->getForm()->getField("start"); CPPUNIT_ASSERT(fieldStart); CPPUNIT_ASSERT_EQUAL(std::string("2010-08-07T00:00:00Z"), fieldStart->getTextSingleValue()); CPPUNIT_ASSERT(payload->getResultSet()); std::shared_ptr resultSet = payload->getResultSet(); CPPUNIT_ASSERT(resultSet->getMaxItems()); CPPUNIT_ASSERT_EQUAL(*resultSet->getMaxItems(), 10); } void testParse_XEP0313_Example3() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse( "" "" "" "urn:xmpp:mam:0" "" "" "juliet@capulet.lit" "" "" "")); std::shared_ptr payload = parser.getPayload(); CPPUNIT_ASSERT(!!payload && !!payload->getForm() && !!payload->getForm()->getField("FORM_TYPE") && !!payload->getForm()->getField("with")); CPPUNIT_ASSERT_EQUAL(std::string("urn:xmpp:mam:0"), payload->getForm()->getField("FORM_TYPE")->getTextSingleValue()); CPPUNIT_ASSERT_EQUAL(std::string("juliet@capulet.lit"), payload->getForm()->getField("with")->getTextSingleValue()); } void testParse_XEP0313_Example4() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse( "" "" "" "urn:xmpp:mam:0" "" "" "2010-06-07T00:00:00Z" "" "" "2010-07-07T13:23:54Z" "" "" "")); std::shared_ptr payload = parser.getPayload(); CPPUNIT_ASSERT(!!payload && !!payload->getForm() && !!payload->getForm()->getField("FORM_TYPE") && !!payload->getForm()->getField("start") && !!payload->getForm()->getField("start")); CPPUNIT_ASSERT_EQUAL(std::string("urn:xmpp:mam:0"), payload->getForm()->getField("FORM_TYPE")->getTextSingleValue()); CPPUNIT_ASSERT_EQUAL(std::string("2010-06-07T00:00:00Z"), payload->getForm()->getField("start")->getTextSingleValue()); CPPUNIT_ASSERT_EQUAL(std::string("2010-07-07T13:23:54Z"), payload->getForm()->getField("end")->getTextSingleValue()); } void testParseEmpty() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse( "" "")); std::shared_ptr payload = parser.getPayload(); CPPUNIT_ASSERT(!!payload); CPPUNIT_ASSERT(payload->getQueryID()); CPPUNIT_ASSERT_EQUAL(std::string("id0"), *payload->getQueryID()); CPPUNIT_ASSERT(!payload->getForm()); CPPUNIT_ASSERT(!payload->getResultSet()); } }; CPPUNIT_TEST_SUITE_REGISTRATION(MAMQueryParserTest);