FixedSizeByteArrayTest.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 "../FixedSizeByteArray.h"
00025 #include "Imports.cpp"
00026 
00027 namespace Utils {
00028 namespace Testing {
00029 
00031 
00034 class FixedSizeByteArrayTest : public CppUnit::TestFixture
00035 {
00036     CPPUNIT_TEST_SUITE (FixedSizeByteArrayTest);
00037     CPPUNIT_TEST (testDefaultCtorCreatesNullArray);
00038     CPPUNIT_TEST (testDefaultCtorCreatingArrayWithZeroSize);
00039     CPPUNIT_TEST (testCtorCreatesCorrectArray);
00040     CPPUNIT_TEST (testCtorCreatingArrayWithZeroSize);
00041     CPPUNIT_TEST (testCompareTwoEqualNonNullArrays);
00042     CPPUNIT_TEST (testCompareTwoEqualNullArrays);
00043     CPPUNIT_TEST (testCompareTwoDifferentNonNullArrays);
00044     CPPUNIT_TEST (testCompareNullAndNonNullArrays);
00045     CPPUNIT_TEST (testCopyCtor);
00046     CPPUNIT_TEST (testAssignment);
00047     CPPUNIT_TEST (testModifyingACopyDoesNotChangeTheOriginal);
00048     CPPUNIT_TEST (testSizeFunction);
00049     CPPUNIT_TEST (testSubscriptOperator);
00050     CPPUNIT_TEST_SUITE_END();
00051 
00052 public:
00054     void testDefaultCtorCreatesNullArray()
00055     {
00056         FixedSizeByteArray <5> array;
00057         CPPUNIT_ASSERT (array.toQByteArray() == QByteArray (5, '\0'));
00058     }
00059 
00061     void testDefaultCtorCreatingArrayWithZeroSize()
00062     {
00063         FixedSizeByteArray <0> array;
00064         CPPUNIT_ASSERT (array.toQByteArray() == QByteArray());
00065     }
00066 
00071     void testCtorCreatesCorrectArray()
00072     {
00073         FixedSizeByteArray <5> array ("abcde");
00074         CPPUNIT_ASSERT (array.toQByteArray() == QByteArray ("abcde"));
00075     }
00076 
00081     void testCtorCreatingArrayWithZeroSize()
00082     {
00083         const QByteArray nullArray;
00084         FixedSizeByteArray <0> array (nullArray);
00085         CPPUNIT_ASSERT (array.toQByteArray() == QByteArray());
00086     }
00087 
00089     void testCompareTwoEqualNonNullArrays()
00090     {
00091         FixedSizeByteArray <20> array1 ("d64h39codifht8rjx42v");
00092         FixedSizeByteArray <20> array2 ("d64h39codifht8rjx42v");
00093 
00094         CPPUNIT_ASSERT (array1 == array2);
00095         CPPUNIT_ASSERT (!(array1 != array2));
00096         CPPUNIT_ASSERT (!(array1 < array2));
00097         CPPUNIT_ASSERT (array1 <= array2);
00098         CPPUNIT_ASSERT (!(array1 > array2));
00099         CPPUNIT_ASSERT (array1 >= array2);
00100     }
00101 
00103     void testCompareTwoEqualNullArrays()
00104     {
00105         FixedSizeByteArray <20> array1, array2;
00106 
00107         CPPUNIT_ASSERT (array1 == array2);
00108         CPPUNIT_ASSERT (!(array1 != array2));
00109         CPPUNIT_ASSERT (!(array1 < array2));
00110         CPPUNIT_ASSERT (array1 <= array2);
00111         CPPUNIT_ASSERT (!(array1 > array2));
00112         CPPUNIT_ASSERT (array1 >= array2);
00113     }
00114 
00116     void testCompareTwoDifferentNonNullArrays()
00117     {
00118         FixedSizeByteArray <20> array1 ("d64h39codifht8rjx42v");
00119         FixedSizeByteArray <20> array2 ("2cxpd84czmkds2309dll");
00120 
00121         CPPUNIT_ASSERT (array1 != array2);
00122         CPPUNIT_ASSERT (!(array1 == array2));
00123         CPPUNIT_ASSERT (!(array1 < array2));
00124         CPPUNIT_ASSERT (!(array1 <= array2));
00125         CPPUNIT_ASSERT (array1 > array2);
00126         CPPUNIT_ASSERT (array1 >= array2);
00127     }
00128 
00130     void testCompareNullAndNonNullArrays()
00131     {
00132         FixedSizeByteArray <20> array1;
00133         FixedSizeByteArray <20> array2 ("f3gdvc54837dgcvxsldf");
00134 
00135         CPPUNIT_ASSERT (array1 != array2);
00136         CPPUNIT_ASSERT (!(array1 == array2));
00137         CPPUNIT_ASSERT (array1 < array2);
00138         CPPUNIT_ASSERT (array1 <= array2);
00139         CPPUNIT_ASSERT (!(array1 > array2));
00140         CPPUNIT_ASSERT (!(array1 >= array2));
00141     }
00142 
00144     void testCopyCtor()
00145     {
00146         FixedSizeByteArray <20> array1 ("3cxds74g293hc8f6dslf");
00147         FixedSizeByteArray <20> array2 (array1);
00148 
00149         CPPUNIT_ASSERT (array1 == array2);
00150     }
00151 
00153     void testAssignment()
00154     {
00155         FixedSizeByteArray <20> array1 ("f3gdvc54837dgcvxsldf");
00156         FixedSizeByteArray <20> array2;
00157 
00158         CPPUNIT_ASSERT (array1 != array2);
00159         array2 = array1;
00160         CPPUNIT_ASSERT (array1 == array2);
00161     }
00162 
00164     void testModifyingACopyDoesNotChangeTheOriginal()
00165     {
00166         FixedSizeByteArray <20> array1 ("f3gdvc54837dgcvxsldf");
00167         FixedSizeByteArray <20> array2;
00168 
00169         array2 = array1;
00170         // After loading the new array the two objects should be different.
00171         array2 = FixedSizeByteArray <20> ("h45cg3cx0f62saqlxmnv");
00172         CPPUNIT_ASSERT (array1 != array2);
00173     }
00174 
00176     void testSizeFunction()
00177     {
00178         FixedSizeByteArray <11> array ("cvxgd536xgs");
00179 
00180         CPPUNIT_ASSERT (FixedSizeByteArray <11> ::size() == 11);
00181         CPPUNIT_ASSERT (array.size() == 11);
00182     }
00183 
00185     void testSubscriptOperator()
00186     {
00187         FixedSizeByteArray <10> array ("ABCDEFGHIJ");
00188 
00189         for (uint i = 0; i < array.size(); ++i)
00190             CPPUNIT_ASSERT (array [i] == static_cast <char> ('A' + i));
00191     }
00192 };
00193 
00194 CPPUNIT_TEST_SUITE_REGISTRATION(FixedSizeByteArrayTest);
00195 
00196 } // namespace Testing
00197 } // namespace Utils