main.cpp 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. #include <qtest.h>
  2. #include <qmqtt.h>
  3. class tst_message: public QObject
  4. {
  5. Q_OBJECT
  6. private slots:
  7. void emptyMessage();
  8. void message();
  9. void equality_data();
  10. void equality();
  11. void copy_data();
  12. void copy();
  13. void write_data();
  14. void write();
  15. void copyOnWrite_data();
  16. void copyOnWrite();
  17. };
  18. void tst_message::emptyMessage()
  19. {
  20. quint8 qos;
  21. bool retain;
  22. bool dup;
  23. QString topic;
  24. QByteArray payload;
  25. QBENCHMARK {
  26. QMQTT::Message message;
  27. qos = message.qos();
  28. retain = message.retain();
  29. dup = message.dup();
  30. topic = message.topic();
  31. payload = message.payload();
  32. }
  33. QCOMPARE(qos, quint8(0));
  34. QCOMPARE(retain, false);
  35. QCOMPARE(dup, false);
  36. QCOMPARE(topic, QString());
  37. QCOMPARE(payload, QByteArray());
  38. }
  39. void tst_message::message()
  40. {
  41. quint8 qos;
  42. bool retain;
  43. bool dup;
  44. QString topic;
  45. QByteArray payload;
  46. QBENCHMARK {
  47. QMQTT::Message message(0, QStringLiteral("test/test"), QByteArrayLiteral("test"), 1, true, false);
  48. qos = message.qos();
  49. retain = message.retain();
  50. dup = message.dup();
  51. topic = message.topic();
  52. payload = message.payload();
  53. }
  54. QCOMPARE(qos, quint8(1));
  55. QCOMPARE(retain, true);
  56. QCOMPARE(dup, false);
  57. QCOMPARE(topic, QStringLiteral("test/test"));
  58. QCOMPARE(payload, QByteArrayLiteral("test"));
  59. }
  60. void tst_message::equality_data()
  61. {
  62. QTest::addColumn<bool>("firstRun");
  63. QTest::newRow("construction + first run") << true;
  64. QTest::newRow("subsequent runs") << false;
  65. }
  66. void tst_message::equality()
  67. {
  68. QFETCH(bool, firstRun);
  69. if (firstRun) {
  70. bool equals;
  71. QBENCHMARK {
  72. QMQTT::Message message1(0, QStringLiteral("test/1"), QByteArrayLiteral("1"), 1, true, false);
  73. QMQTT::Message message2(0, QStringLiteral("test/2"), QByteArrayLiteral("2"), 2, false, true);
  74. equals = message1 == message2;
  75. }
  76. QCOMPARE(equals, false);
  77. } else {
  78. bool equals;
  79. QMQTT::Message message1(0, QStringLiteral("test/1"), QByteArrayLiteral("1"), 1, true, false);
  80. QMQTT::Message message2(0, QStringLiteral("test/2"), QByteArrayLiteral("2"), 2, false, true);
  81. QBENCHMARK {
  82. equals = message1 == message2;
  83. }
  84. QCOMPARE(equals, false);
  85. }
  86. }
  87. void tst_message::copy_data()
  88. {
  89. QTest::addColumn<bool>("firstRun");
  90. QTest::newRow("construction + first run") << true;
  91. QTest::newRow("subsequent runs") << false;
  92. }
  93. void tst_message::copy()
  94. {
  95. QFETCH(bool, firstRun);
  96. if (firstRun) {
  97. QBENCHMARK {
  98. QMQTT::Message message(0, QStringLiteral("test/test"), QByteArrayLiteral("test"), 1, true, false);
  99. QMQTT::Message tmp;
  100. message = tmp;
  101. }
  102. } else {
  103. QMQTT::Message message(0, QStringLiteral("test/test"), QByteArrayLiteral("test"), 1, true, false);
  104. QMQTT::Message tmp;
  105. QBENCHMARK {
  106. message = tmp;
  107. }
  108. }
  109. }
  110. void tst_message::write_data()
  111. {
  112. QTest::addColumn<bool>("firstRun");
  113. QTest::newRow("construction + first run") << true;
  114. QTest::newRow("subsequent runs") << false;
  115. }
  116. void tst_message::write()
  117. {
  118. QFETCH(bool, firstRun);
  119. if (firstRun) {
  120. QBENCHMARK {
  121. QMQTT::Message message(0, QStringLiteral("test/test"), QByteArrayLiteral("test"), 1, true, false);
  122. message.setRetain(true);
  123. }
  124. } else {
  125. QMQTT::Message message(0, QStringLiteral("test/test"), QByteArrayLiteral("test"), 1, true, false);
  126. QBENCHMARK {
  127. message.setRetain(true);
  128. }
  129. }
  130. }
  131. void tst_message::copyOnWrite_data()
  132. {
  133. QTest::addColumn<bool>("firstRun");
  134. QTest::newRow("construction + first run") << true;
  135. QTest::newRow("subsequent runs") << false;
  136. }
  137. void tst_message::copyOnWrite()
  138. {
  139. QFETCH(bool, firstRun);
  140. if (firstRun) {
  141. QBENCHMARK {
  142. QMQTT::Message message1(0, QStringLiteral("test/1"), QByteArrayLiteral("1"), 1, true, false);
  143. QMQTT::Message message2(0, QStringLiteral("test/2"), QByteArrayLiteral("2"), 2, false, true);
  144. QMQTT::Message message = message1;
  145. message.setRetain(false);
  146. message = message2;
  147. message.setDup(false);
  148. }
  149. } else {
  150. QMQTT::Message message1(0, QStringLiteral("test/1"), QByteArrayLiteral("1"), 1, true, false);
  151. QMQTT::Message message2(0, QStringLiteral("test/2"), QByteArrayLiteral("2"), 2, false, true);
  152. QBENCHMARK {
  153. QMQTT::Message message = message1;
  154. message.setRetain(false);
  155. message = message2;
  156. message.setDup(false);
  157. }
  158. }
  159. }
  160. QTEST_MAIN(tst_message)
  161. #include "main.moc"