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