summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/QA/ClientTest')
-rw-r--r--Swiften/QA/ClientTest/ClientTest.cpp63
-rw-r--r--Swiften/QA/ClientTest/Makefile.inc16
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)