diff options
| author | Kevin Smith <git@kismith.co.uk> | 2011-09-21 12:25:27 (GMT) | 
|---|---|---|
| committer | Kevin Smith <git@kismith.co.uk> | 2011-09-23 16:47:57 (GMT) | 
| commit | f9c432ca127d6e7d87b49d2fbf6aace34bea0e06 (patch) | |
| tree | d7f069d3c48cc3d768e770df614fe87ade6f3902 /Swiften/Parser/UnitTest/GenericPayloadTreeParserTest.cpp | |
| parent | 20d3385909a2f9d886e7e0781357b23474e9f8dc (diff) | |
| download | swift-contrib-f9c432ca127d6e7d87b49d2fbf6aace34bea0e06.zip swift-contrib-f9c432ca127d6e7d87b49d2fbf6aace34bea0e06.tar.bz2  | |
Add support for kicking people from MUCs.
This also introduces a new DOM-like parser structure, used for the
MUC parsers.
Partially
Resolves: #689
Diffstat (limited to 'Swiften/Parser/UnitTest/GenericPayloadTreeParserTest.cpp')
| -rw-r--r-- | Swiften/Parser/UnitTest/GenericPayloadTreeParserTest.cpp | 58 | 
1 files changed, 58 insertions, 0 deletions
diff --git a/Swiften/Parser/UnitTest/GenericPayloadTreeParserTest.cpp b/Swiften/Parser/UnitTest/GenericPayloadTreeParserTest.cpp new file mode 100644 index 0000000..d095afc --- /dev/null +++ b/Swiften/Parser/UnitTest/GenericPayloadTreeParserTest.cpp @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2011 Kevin Smith + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#include <cppunit/extensions/HelperMacros.h> +#include <cppunit/extensions/TestFactoryRegistry.h> + +#include <Swiften/Parser/GenericPayloadTreeParser.h> +#include <Swiften/Parser/PayloadParsers/UnitTest/PayloadParserTester.h> +#include <Swiften/Elements/RawXMLPayload.h> + +using namespace Swift; + +class GenericPayloadTreeParserTest : public CppUnit::TestFixture { +		CPPUNIT_TEST_SUITE(GenericPayloadTreeParserTest); +		CPPUNIT_TEST(testTree); +		CPPUNIT_TEST_SUITE_END(); + +	public: +		void testTree() { +			MyParser testling; + +			std::string data = "<topLevel xmlns='urn:test:top'><firstLevelInheritedEmpty/><firstLevelInherited><secondLevelMultiChildren num='1'/><secondLevelMultiChildren num='2'/></firstLevelInherited><firstLevelNS xmlns='urn:test:first'/></topLevel>"; + +			PayloadParserTester tester(&testling); +			tester.parse(data); + +			ParserElement::ref tree = testling.tree; + +			CPPUNIT_ASSERT_EQUAL(std::string("topLevel"), tree->getName()); +			CPPUNIT_ASSERT_EQUAL(std::string("urn:test:top"), tree->getNamespace()); +			CPPUNIT_ASSERT(tree->getChild("firstLevelInheritedEmpty", "urn:test:top")); +			CPPUNIT_ASSERT(!*tree->getChild("firstLevelInheritedEmpty", "")); +			CPPUNIT_ASSERT(tree->getChild("firstLevelInherited", "urn:test:top")); +			CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), tree->getChild("firstLevelInherited", "urn:test:top")->getChildren("secondLevelMultiChildren", "urn:test:top").size()); +			CPPUNIT_ASSERT_EQUAL(std::string("1"), tree->getChild("firstLevelInherited", "urn:test:top")->getChildren("secondLevelMultiChildren", "urn:test:top")[0]->getAttributes().getAttribute("num")); +			CPPUNIT_ASSERT_EQUAL(std::string("2"), tree->getChild("firstLevelInherited", "urn:test:top")->getChildren("secondLevelMultiChildren", "urn:test:top")[1]->getAttributes().getAttribute("num")); +			CPPUNIT_ASSERT(tree->getChild("firstLevelNS", "urn:test:first")); +		} + +	private: + + +		class MyParser : public GenericPayloadTreeParser<RawXMLPayload> +		{ +			public: +				virtual ~MyParser() {} +				virtual void handleTree(ParserElement::ref root) { +					tree = root; +				} +				ParserElement::ref tree; +		}; + +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(GenericPayloadTreeParserTest);  | 
 Swift