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