GgepBlockTest.cpp

Go to the documentation of this file.
00001 /*
00002 
00003 Copyright (C) 2006-2007 by Peter Dimov.
00004 
00005 This file is part of Calitko (http://www.calitko.org).
00006 
00007 Calitko is free software; you can redistribute it and/or modify
00008 it under the terms of the GNU General Public License as published by
00009 the Free Software Foundation; either version 2 of the License, or
00010 (at your option) any later version.
00011 
00012 Calitko is distributed in the hope that it will be useful,
00013 but WITHOUT ANY WARRANTY; without even the implied warranty of
00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015 GNU General Public License for more details.
00016 
00017 You should have received a copy of the GNU General Public License
00018 along with Calitko; if not, write to the Free Software
00019 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
00020 
00021 */
00022 
00023 #include "Qt.h"
00024 #include "../GgepBlock.h"
00025 #include "Imports.cpp"
00026 
00027 namespace Protocols {
00028 namespace Gnutella {
00029 namespace Packets {
00030 namespace Extensions {
00031 namespace Testing {
00032 
00033 class GgepBlockTest : public CppUnit::TestFixture
00034 {
00035     CPPUNIT_TEST_SUITE(GgepBlockTest);
00036     CPPUNIT_TEST(testDefaultCtor);
00037     CPPUNIT_TEST(testCopyCtor);
00038     CPPUNIT_TEST(testAssign);
00039     CPPUNIT_TEST(testAddExtensionsGetExtensions);
00040     CPPUNIT_TEST(testOperatorEqualSizeDifferent);
00041     CPPUNIT_TEST(testOperatorEqualGgepDifferent);
00042     CPPUNIT_TEST(testOperatorEqualAllDifferent);
00043     CPPUNIT_TEST(testOperatorEqualRealEqual);
00044     CPPUNIT_TEST_SUITE_END();
00045 
00046 public:
00047     GgepBlock createBlock(Ggeps::Unknown& ggep)
00048     {
00049         GgepBlock block;
00050         for(int i=0;i<10;i++)
00051             block.addExtension (ggep);
00052         return block;
00053     }
00054 
00055 
00056     void testDefaultCtor()
00057     {
00058         GgepBlock block;
00059         CPPUNIT_ASSERT (block.extensions().empty());
00060     }
00061 
00062     void testCopyCtor()
00063     {
00064         GgepBlock block1;
00065         Ggeps::Unknown  ggep ("unknown", "fortest", 0x00);
00066         block1.addExtension (ggep);
00067         GgepBlock block2 (block1);
00068         CPPUNIT_ASSERT (block1 == block2);
00069     }
00070 
00071     void testAssign()
00072     {
00073         GgepBlock block1;
00074         Ggeps::Unknown  ggep ("unknown", "fortest", 0x00);
00075         block1.addExtension (ggep);
00076         GgepBlock block2;
00077         block2 = block1;
00078         CPPUNIT_ASSERT (block1 == block2);
00079     }
00080 
00081     void testAddExtensionsGetExtensions()
00082     {
00083         GgepBlock block;
00084         Ggeps::Unknown  ggep ("unknown", "fortest", 0x00);
00085         for(int i=0;i<10;i++)
00086             block.addExtension (ggep);
00087         int j=0;
00088         foreach (const Ggep *extension, block.extensions()){
00089             CPPUNIT_ASSERT (*extension == ggep);
00090             j++;
00091         }
00092         CPPUNIT_ASSERT (j == 10);
00093     }
00094 
00095     void scenarioOperatorEqual (const Ggep &lggep, int lsize,
00096                                 const Ggep &rggep, int rsize)
00097     {
00098         GgepBlock lblock;
00099         // Maybe should make extensions different , make parm Array?
00100         for(int i=0; i<lsize; ++i)
00101             lblock.addExtension(lggep);
00102         GgepBlock rblock;
00103         for(int i=0; i<rsize; ++i)
00104             rblock.addExtension(rggep);
00105         bool result = lsize == rsize && lggep == rggep;
00106         CPPUNIT_ASSERT (( lblock == rblock) == result );
00107     }
00108 
00109 
00110     void testOperatorEqualGgepDifferent()
00111     {
00112         Ggeps::Unknown  lggep ("unknown", "fortest",    0x00);
00113         Ggeps::Unknown  rggep ("iknow",     "fortdif",  0x00);
00114         scenarioOperatorEqual (lggep, 1, rggep, 1);
00115     }
00116 
00117     void testOperatorEqualSizeDifferent()
00118     {
00119         Ggeps::Unknown  lggep ("unknown", "fortest",    0x00);
00120         Ggeps::Unknown  rggep ("unknown", "fortest",    0x00);
00121         scenarioOperatorEqual (lggep, 1, rggep, 2);
00122     }
00123 
00124     void testOperatorEqualAllDifferent()
00125     {
00126         Ggeps::Unknown  lggep ("unknown", "fortest",    0x00);
00127         Ggeps::Unknown  rggep ("iknow",     "fortdif",  0x00);
00128         scenarioOperatorEqual (lggep, 1, rggep, 2);
00129     }
00130 
00131     void testOperatorEqualRealEqual()
00132     {
00133         Ggeps::Unknown  lggep ("unknown", "fortest",    0x00);
00134         Ggeps::Unknown  rggep ("unknown", "fortest",    0x00);
00135         scenarioOperatorEqual (lggep, 1, rggep, 1);
00136         scenarioOperatorEqual (lggep, 2, rggep, 2);
00137     }
00138 
00139 };
00140 CPPUNIT_TEST_SUITE_REGISTRATION(GgepBlockTest);
00141 
00142 } // namespace Testing
00143 } // namespace Extensions
00144 } // namespace Packets
00145 } // namespace Gnutella
00146 } // namespace Protocols