diff options
Diffstat (limited to 'Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h')
-rw-r--r-- | Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h | 94 |
1 files changed, 46 insertions, 48 deletions
diff --git a/Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h b/Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h index b328670..8f9e0e1 100644 --- a/Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h +++ b/Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h @@ -1,66 +1,64 @@ /* - * Copyright (c) 2010-2013 Remko Tronçon - * Licensed under the GNU General Public License v3. - * See Documentation/Licenses/GPLv3.txt for more information. + * Copyright (c) 2010-2016 Isode Limited. + * All rights reserved. + * See the COPYING file for more information. */ #pragma once +#include <cassert> + +#include <Swiften/Elements/Payload.h> +#include <Swiften/Parser/PayloadParser.h> #include <Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.h> +#include <Swiften/Parser/PlatformXMLParserFactory.h> #include <Swiften/Parser/XMLParser.h> #include <Swiften/Parser/XMLParserClient.h> -#include <Swiften/Parser/PlatformXMLParserFactory.h> -#include <Swiften/Elements/Payload.h> -#include <Swiften/Parser/PayloadParser.h> namespace Swift { - class PayloadsParserTester : public XMLParserClient { - public: - PayloadsParserTester() : level(0) { - xmlParser = PlatformXMLParserFactory().createXMLParser(this); - } - - ~PayloadsParserTester() { - delete xmlParser; - } + class PayloadsParserTester : public XMLParserClient { + public: + PayloadsParserTester() : level(0) { + xmlParser = PlatformXMLParserFactory().createXMLParser(this, false); + } - bool parse(const std::string& data) { - return xmlParser->parse(data); - } + bool parse(const std::string& data) { + return xmlParser->parse(data); + } - virtual void handleStartElement(const std::string& element, const std::string& ns, const AttributeMap& attributes) { - if (level == 0) { - assert(!payloadParser.get()); - PayloadParserFactory* payloadParserFactory = factories.getPayloadParserFactory(element, ns, attributes); - assert(payloadParserFactory); - payloadParser.reset(payloadParserFactory->createPayloadParser()); - } - payloadParser->handleStartElement(element, ns, attributes); - level++; - } + virtual void handleStartElement(const std::string& element, const std::string& ns, const AttributeMap& attributes) { + if (level == 0) { + assert(!payloadParser.get()); + PayloadParserFactory* payloadParserFactory = factories.getPayloadParserFactory(element, ns, attributes); + assert(payloadParserFactory); + payloadParser.reset(payloadParserFactory->createPayloadParser()); + } + payloadParser->handleStartElement(element, ns, attributes); + level++; + } - virtual void handleEndElement(const std::string& element, const std::string& ns) { - level--; - payloadParser->handleEndElement(element, ns); - } + virtual void handleEndElement(const std::string& element, const std::string& ns) { + level--; + payloadParser->handleEndElement(element, ns); + } - virtual void handleCharacterData(const std::string& data) { - payloadParser->handleCharacterData(data); - } + virtual void handleCharacterData(const std::string& data) { + payloadParser->handleCharacterData(data); + } - boost::shared_ptr<Payload> getPayload() const { - return payloadParser->getPayload(); - } + std::shared_ptr<Payload> getPayload() const { + return payloadParser->getPayload(); + } - template<typename T> - boost::shared_ptr<T> getPayload() const { - return boost::dynamic_pointer_cast<T>(payloadParser->getPayload()); - } + template<typename T> + std::shared_ptr<T> getPayload() const { + return std::dynamic_pointer_cast<T>(payloadParser->getPayload()); + } - private: - XMLParser* xmlParser; - FullPayloadParserFactoryCollection factories; - boost::shared_ptr<PayloadParser> payloadParser; - int level; - }; + private: + std::unique_ptr<XMLParser> xmlParser; + FullPayloadParserFactoryCollection factories; + std::shared_ptr<PayloadParser> payloadParser; + int level; + }; } |