diff options
Diffstat (limited to 'Swiften/QA/ClientTest')
-rw-r--r-- | Swiften/QA/ClientTest/ClientTest.cpp | 63 | ||||
-rw-r--r-- | Swiften/QA/ClientTest/Makefile.inc | 16 |
2 files changed, 79 insertions, 0 deletions
diff --git a/Swiften/QA/ClientTest/ClientTest.cpp b/Swiften/QA/ClientTest/ClientTest.cpp new file mode 100644 index 0000000..20a03a4 --- /dev/null +++ b/Swiften/QA/ClientTest/ClientTest.cpp @@ -0,0 +1,63 @@ +#include <boost/bind.hpp> +#include <boost/thread.hpp> + +#include "Swiften/Client/Client.h" +#include "Swiften/Network/Timer.h" +#include "Swiften/EventLoop/MainEventLoop.h" +#include "Swiften/EventLoop/SimpleEventLoop.h" +#include "Swiften/Queries/Requests/GetRosterRequest.h" + +using namespace Swift; + +SimpleEventLoop eventLoop; + +Client* client = 0; +bool rosterReceived = false; + +void printIncomingData(const String& data) { + std::cout << "<- " << data << std::endl; +} + +void printOutgoingData(const String& data) { + std::cout << "-> " << data << std::endl; +} + +void handleRosterReceived(boost::shared_ptr<Payload>) { + rosterReceived = true; + eventLoop.stop(); +} + +void handleConnected() { + GetRosterRequest* rosterRequest = new GetRosterRequest(client, Request::AutoDeleteAfterResponse); + rosterRequest->onResponse.connect(boost::bind(&handleRosterReceived, _1)); + rosterRequest->send(); +} + +int main(int, char**) { + char* jid = getenv("SWIFT_CLIENTTEST_JID"); + if (!jid) { + std::cerr << "Please set the SWIFT_CLIENTTEST_JID environment variable" << std::endl; + return -1; + } + char* pass = getenv("SWIFT_CLIENTTEST_PASS"); + if (!pass) { + std::cerr << "Please set the SWIFT_CLIENTTEST_PASS environment variable" << std::endl; + return -1; + } + + client = new Swift::Client(JID(jid), String(pass)); + client->onConnected.connect(&handleConnected); + client->onDataRead.connect(&printIncomingData); + client->onDataWritten.connect(&printOutgoingData); + client->connect(); + + { + Timer timer(10000); + timer.onTick.connect(boost::bind(&SimpleEventLoop::stop, &eventLoop)); + timer.start(); + + eventLoop.run(); + } + delete client; + return !rosterReceived; +} diff --git a/Swiften/QA/ClientTest/Makefile.inc b/Swiften/QA/ClientTest/Makefile.inc new file mode 100644 index 0000000..d01ccf8 --- /dev/null +++ b/Swiften/QA/ClientTest/Makefile.inc @@ -0,0 +1,16 @@ +CLIENTTEST_TARGET = Swiften/QA/ClientTest/ClientTest +CLIENTTEST_SOURCES += \ + Swiften/QA/ClientTest/ClientTest.cpp +CLIENTTEST_OBJECTS = \ + $(CLIENTTEST_SOURCES:.cpp=.o) + +TEST_TARGETS += ClientTest + +CLEANFILES += $(CLIENTTEST_OBJECTS) $(CLIENTTEST_TARGET) + +$(CLIENTTEST_TARGET): $(SWIFTEN_TARGET) $(CLIENTTEST_OBJECTS) + $(QUIET_LINK)$(CXX) -o $(CLIENTTEST_TARGET) $(CLIENTTEST_OBJECTS) $(LDFLAGS) $(CPPCLIENT_LDFLAGS) $(SWIFTEN_TARGET) $(LIBS) + +.PHONY: ClientTest +ClientTest: $(CLIENTTEST_TARGET) + $(TEST_RUNNER) $(CLIENTTEST_TARGET) |