/* * Copyright (c) 2010 Remko Tronçon * Licensed under the GNU General Public License v3. * See Documentation/Licenses/GPLv3.txt for more information. */ #pragma once #include #include "Swiften/Client/StanzaChannel.h" namespace Swift { class DummyStanzaChannel : public StanzaChannel { public: DummyStanzaChannel() : available_(true) {} virtual void sendStanza(boost::shared_ptr stanza) { sentStanzas.push_back(stanza); } void setAvailable(bool available) { available_ = available; onAvailableChanged(available); } virtual void sendIQ(boost::shared_ptr iq) { sentStanzas.push_back(iq); } virtual void sendMessage(boost::shared_ptr message) { sentStanzas.push_back(message); } virtual void sendPresence(boost::shared_ptr presence) { sentStanzas.push_back(presence); } virtual std::string getNewIQID() { return "test-id"; } virtual bool isAvailable() const { return available_; } virtual bool getStreamManagementEnabled() const { return false; } template bool isRequestAtIndex(size_t index, const JID& jid, IQ::Type type) { if (index >= sentStanzas.size()) { return false; } boost::shared_ptr iqStanza = boost::dynamic_pointer_cast(sentStanzas[index]); return iqStanza && iqStanza->getType() == type && iqStanza->getTo() == jid && iqStanza->getPayload(); } bool isResultAtIndex(size_t index, const std::string& id) { if (index >= sentStanzas.size()) { return false; } boost::shared_ptr iqStanza = boost::dynamic_pointer_cast(sentStanzas[index]); return iqStanza && iqStanza->getType() == IQ::Result && iqStanza->getID() == id; } bool isErrorAtIndex(size_t index, const std::string& id) { if (index >= sentStanzas.size()) { return false; } boost::shared_ptr iqStanza = boost::dynamic_pointer_cast(sentStanzas[index]); return iqStanza && iqStanza->getType() == IQ::Error && iqStanza->getID() == id; } template boost::shared_ptr getStanzaAtIndex(size_t index) { if (sentStanzas.size() <= index) { return boost::shared_ptr(); } return boost::dynamic_pointer_cast(sentStanzas[index]); } std::vector > sentStanzas; bool available_; }; }