TrackerResponseTest.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include "Qt.h"
00024 #include "../TrackerResponse.h"
00025 #include "../TrackerResponseParser.h"
00026 #include "Imports.cpp"
00027
00028 namespace Protocols {
00029 namespace BitTorrent {
00030 namespace Trackers {
00031 namespace Testing {
00032
00034
00036 class TrackerResponseTest : public CppUnit::TestFixture
00037 {
00038 CPPUNIT_TEST_SUITE (TrackerResponseTest);
00039 CPPUNIT_TEST (testCompareTwoEqualNonEmptyTrackerResponses);
00040 CPPUNIT_TEST (testCompareTwoEqualEmptyTrackerResponses);
00041 CPPUNIT_TEST (testCompareTwoDifferentNonEmptyTrackerResponses);
00042 CPPUNIT_TEST (testCompareEmptyAndNonEmptyTrackerResponses);
00043 CPPUNIT_TEST (testCopyCtor);
00044 CPPUNIT_TEST (testAssignment);
00045 CPPUNIT_TEST (testModifyingACopyDoesNotChangeTheOriginal);
00046 CPPUNIT_TEST_SUITE_END();
00047
00048 const QByteArray rawResponseDataOk1;
00049 const QByteArray rawResponseDataOk2;
00050
00051 public:
00052 TrackerResponseTest();
00053
00055 void testCompareTwoEqualNonEmptyTrackerResponses()
00056 {
00057 TrackerResponse response1, response2;
00058 bool loadedOk1 = TrackerResponseParser::parseAndLoadTrackerResponse (
00059 rawResponseDataOk1, response1);
00060 bool loadedOk2 = TrackerResponseParser::parseAndLoadTrackerResponse (
00061 rawResponseDataOk1, response2);
00062 CPPUNIT_ASSERT (loadedOk1 && loadedOk2);
00063
00064 CPPUNIT_ASSERT (response1 == response2);
00065 CPPUNIT_ASSERT (!(response1 != response2));
00066 }
00067
00069 void testCompareTwoEqualEmptyTrackerResponses()
00070 {
00071 TrackerResponse response1, response2;
00072
00073 CPPUNIT_ASSERT (response1 == response2);
00074 CPPUNIT_ASSERT (!(response1 != response2));
00075 }
00076
00078 void testCompareTwoDifferentNonEmptyTrackerResponses()
00079 {
00080 TrackerResponse response1, response2;
00081 bool loadedOk1 = TrackerResponseParser::parseAndLoadTrackerResponse (
00082 rawResponseDataOk1, response1);
00083 bool loadedOk2 = TrackerResponseParser::parseAndLoadTrackerResponse (
00084 rawResponseDataOk2, response2);
00085 CPPUNIT_ASSERT (loadedOk1 && loadedOk2);
00086
00087 CPPUNIT_ASSERT (response1 != response2);
00088 CPPUNIT_ASSERT (!(response1 == response2));
00089 }
00090
00092 void testCompareEmptyAndNonEmptyTrackerResponses()
00093 {
00094 TrackerResponse response1;
00095 bool loadedOk1 = TrackerResponseParser::parseAndLoadTrackerResponse (
00096 rawResponseDataOk1, response1);
00097 CPPUNIT_ASSERT (loadedOk1);
00098
00099 CPPUNIT_ASSERT (response1 != TrackerResponse());
00100 CPPUNIT_ASSERT (!(response1 == TrackerResponse()));
00101 }
00102
00104 void testCopyCtor()
00105 {
00106 TrackerResponse response1;
00107 bool loadedOk1 = TrackerResponseParser::parseAndLoadTrackerResponse (
00108 rawResponseDataOk1, response1);
00109 CPPUNIT_ASSERT (loadedOk1);
00110
00111 TrackerResponse response2 (response1);
00112 CPPUNIT_ASSERT (response1 == response2);
00113 }
00114
00116 void testAssignment()
00117 {
00118 TrackerResponse response1, response2;
00119 bool loadedOk1 = TrackerResponseParser::parseAndLoadTrackerResponse (
00120 rawResponseDataOk1, response1);
00121 CPPUNIT_ASSERT (loadedOk1);
00122
00123 CPPUNIT_ASSERT (response1 != response2);
00124 response2 = response1;
00125 CPPUNIT_ASSERT (response1 == response2);
00126 }
00127
00129 void testModifyingACopyDoesNotChangeTheOriginal()
00130 {
00131 TrackerResponse response1, response2;
00132 bool loadedOk1 = TrackerResponseParser::parseAndLoadTrackerResponse (
00133 rawResponseDataOk1, response1);
00134 CPPUNIT_ASSERT (loadedOk1);
00135
00136 response2 = response1;
00137
00138 bool loadedOk2 = TrackerResponseParser::parseAndLoadTrackerResponse (
00139 rawResponseDataOk2, response2);
00140 CPPUNIT_ASSERT (loadedOk2);
00141 CPPUNIT_ASSERT (response1 != response2);
00142 }
00143 };
00144
00145 CPPUNIT_TEST_SUITE_REGISTRATION(TrackerResponseTest);
00146
00148
00153 TrackerResponseTest::TrackerResponseTest()
00154 : rawResponseDataOk1 (
00155 "d"
00156 "8:intervali300e"
00157 "5:peersle"
00158 "e"),
00159 rawResponseDataOk2 (
00160 "d"
00161 "15:warning message7:Warning"
00162 "8:intervali300e"
00163 "12:min intervali600e"
00164 "10:tracker id20:dg47sk3ld06jvnzmaq23"
00165 "8:completei10e"
00166 "10:incompletei20e"
00167 "5:peers"
00168 "l"
00169 "d"
00170 "7:peer id20:agd538x9fo4bf85jg076"
00171 "2:ip9:127.0.0.1"
00172 "4:porti6881e"
00173 "e"
00174 "e"
00175 "e")
00176 {
00177 }
00178
00179 }
00180 }
00181 }
00182 }