QueryRoutingTable.cpp
Go to the documentation of this file.00001 #include "../QueryRoutingTable.h"
00002 #include "cppunit/extensions/HelperMacros.h"
00003 #include <iostream>
00004 #include <memory>
00005
00006 namespace Gnutella {
00007 namespace PacketProcessing {
00008 namespace QueryRouting {
00009
00010 class QueryRoutingTableTest : public CppUnit::TestFixture
00011 {
00012 CPPUNIT_TEST_SUITE(QueryRoutingTableTest);
00013 CPPUNIT_TEST(testReset);
00014 CPPUNIT_TEST(testApplyPatch);
00015 CPPUNIT_TEST_SUITE_END();
00016 std::auto_ptr<QueryRoutingTable> m_p;
00017 public:
00018 void setUp()
00019 {
00020 m_p.reset (new QueryRoutingTable);
00021 }
00022
00023 void testReset()
00024 {
00025 m_p->reset (64);
00026 for (int i = 0; i < 2; ++i)
00027 {
00028 CPPUNIT_ASSERT (m_p->size() == 64);
00029 QByteArray rawTable = m_p->rawTable();
00030 CPPUNIT_ASSERT (rawTable.count('\0') == rawTable.size());
00031 CPPUNIT_ASSERT (m_p->sizeBits_ == 5);
00032 m_p->reset (64);
00033 }
00034 }
00035
00036 void testApplyPatch()
00037 {
00038 m_p->reset (64);
00039 QByteArray patchBuffer (8, '\0');
00040 m_p->applyPatch (patchBuffer, 1);
00041 QByteArray rawTable = m_p->rawTable();
00042 CPPUNIT_ASSERT (rawTable.count('\0') == rawTable.size());
00043
00044 QByteArray patchBuffer1 (8, '\1');
00045 m_p->applyPatch (patchBuffer1, 1);
00046 rawTable = m_p->rawTable();
00047 CPPUNIT_ASSERT (rawTable.count('\1') == rawTable.size());
00048
00049 QByteArray patchBuffer2 (32, char(0xF1));
00050 m_p->applyPatch (patchBuffer2, 4);
00051 rawTable = m_p->rawTable();
00052 CPPUNIT_ASSERT (rawTable.count(char(0xFE)) == rawTable.size());
00053
00054 QByteArray patchBuffer3 (64, char(0xF1));
00055 m_p->applyPatch (patchBuffer3, 8);
00056 rawTable = m_p->rawTable();
00057 CPPUNIT_ASSERT (rawTable.count(char(0x01)) == rawTable.size());
00058 }
00059 };
00060
00061 CPPUNIT_TEST_SUITE_REGISTRATION(QueryRoutingTableTest);
00062 };
00063 };
00064 };
00065