ctkNetworkConnectorQXMLRPCTest.cpp 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. /*
  2. * ctkNetworkConnectorQXMLRPCTest.cpp
  3. * ctkNetworkConnectorQXMLRPCTest
  4. *
  5. * Created by Daniele Giunchi on 27/03/09.
  6. * Copyright 2009 B3C. All rights reserved.
  7. *
  8. * See Licence at: http://tiny.cc/QXJ4D
  9. *
  10. */
  11. #include "ctkTestSuite.h"
  12. #include <ctkNetworkConnectorQXMLRPC.h>
  13. #include <ctkEventBusManager.h>
  14. #include <QApplication>
  15. using namespace ctkEventBus;
  16. //-------------------------------------------------------------------------
  17. /**
  18. Class name: ctkObjectCustom
  19. Custom object needed for testing.
  20. */
  21. class testObjectCustomForNetworkConnectorXMLRPC : public QObject {
  22. Q_OBJECT
  23. public:
  24. /// constructor.
  25. testObjectCustomForNetworkConnectorXMLRPC();
  26. /// Return tha var's value.
  27. int var() {return m_Var;}
  28. public Q_SLOTS:
  29. /// Test slot that will increment the value of m_Var when an UPDATE_OBJECT event is raised.
  30. void updateObject();
  31. void setObjectValue(int v);
  32. Q_SIGNALS:
  33. void valueModified(int v);
  34. void objectModified();
  35. private:
  36. int m_Var; ///< Test var.
  37. };
  38. testObjectCustomForNetworkConnectorXMLRPC::testObjectCustomForNetworkConnectorXMLRPC() : m_Var(0) {
  39. }
  40. void testObjectCustomForNetworkConnectorXMLRPC::updateObject() {
  41. m_Var++;
  42. }
  43. void testObjectCustomForNetworkConnectorXMLRPC::setObjectValue(int v) {
  44. m_Var = v;
  45. }
  46. /**
  47. Class name: ctkNetworkConnectorQXMLRPCTest
  48. This class implements the test suite for ctkNetworkConnectorQXMLRPC.
  49. */
  50. //! <title>
  51. //ctkNetworkConnectorQXMLRPC
  52. //! </title>
  53. //! <description>
  54. //ctkNetworkConnectorQXMLRPC provides the connection with xml-rpc protocol.
  55. //It has been used qxmlrpc library.
  56. //! </description>
  57. class ctkNetworkConnectorQXMLRPCTest : public QObject {
  58. Q_OBJECT
  59. private Q_SLOTS:
  60. /// Initialize test variables
  61. void initTestCase() {
  62. m_EventBus = ctkEventBusManager::instance();
  63. m_NetWorkConnectorQXMLRPC = new ctkEventBus::ctkNetworkConnectorQXMLRPC();
  64. m_ObjectTest = new testObjectCustomForNetworkConnectorXMLRPC();
  65. }
  66. /// Cleanup tes variables memory allocation.
  67. void cleanupTestCase() {
  68. if(m_ObjectTest) {
  69. delete m_ObjectTest;
  70. m_ObjectTest = NULL;
  71. }
  72. delete m_NetWorkConnectorQXMLRPC;
  73. m_EventBus->shutdown();
  74. }
  75. /// Check the existence of the ctkNetworkConnectorQXMLRPCe singletone creation.
  76. void ctkNetworkConnectorQXMLRPCConstructorTest();
  77. /// Check the existence of the ctkNetworkConnectorQXMLRPCe singletone creation.
  78. void ctkNetworkConnectorQXMLRPCCommunictionTest();
  79. private:
  80. ctkEventBusManager *m_EventBus; ///< event bus instance
  81. ctkNetworkConnectorQXMLRPC *m_NetWorkConnectorQXMLRPC; ///< EventBus test variable instance.
  82. testObjectCustomForNetworkConnectorXMLRPC *m_ObjectTest;
  83. };
  84. void ctkNetworkConnectorQXMLRPCTest::ctkNetworkConnectorQXMLRPCConstructorTest() {
  85. QVERIFY(m_NetWorkConnectorQXMLRPC != NULL);
  86. }
  87. void ctkNetworkConnectorQXMLRPCTest::ctkNetworkConnectorQXMLRPCCommunictionTest() {
  88. m_NetWorkConnectorQXMLRPC->createServer(8000);
  89. m_NetWorkConnectorQXMLRPC->startListen();
  90. // Register callback (done by the remote object).
  91. ctkRegisterLocalCallback("ctk/local/eventBus/globalUpdate", m_ObjectTest, "updateObject()");
  92. //m_EventBus->createClient("XMLRPC", "localhost", 8000);
  93. m_NetWorkConnectorQXMLRPC->createClient("localhost", 8000);
  94. //create list to send from the client
  95. //first parameter is a list which contains event prperties
  96. QVariantList eventParameters;
  97. eventParameters.append("ctk/local/eventBus/globalUpdate");
  98. eventParameters.append(ctkEventTypeLocal);
  99. eventParameters.append(ctkSignatureTypeCallback);
  100. eventParameters.append("updateObject()");
  101. QVariantList dataParameters;
  102. ctkEventArgumentsList listToSend;
  103. listToSend.append(ctkEventArgument(QVariantList, eventParameters));
  104. listToSend.append(ctkEventArgument(QVariantList, dataParameters));
  105. m_NetWorkConnectorQXMLRPC->send("ctk/remote/eventBus/comunication/send/xmlrpc", &listToSend);
  106. QTime dieTime = QTime::currentTime().addSecs(3);
  107. while(QTime::currentTime() < dieTime) {
  108. QCoreApplication::processEvents(QEventLoop::AllEvents, 3);
  109. }
  110. }
  111. CTK_REGISTER_TEST(ctkNetworkConnectorQXMLRPCTest);
  112. #include "ctkNetworkConnectorQXMLRPCTest.moc"