Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenrm_cp_test.cpp
Go to the documentation of this file.
00001 #include <vector> 00002 #include <algorithm> 00003 00004 #include "cppunit/cppunit_proxy.h" 00005 00006 #if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES) 00007 using namespace std; 00008 #endif 00009 00010 // 00011 // TestCase class 00012 // 00013 class RmCpTest : public CPPUNIT_NS::TestCase 00014 { 00015 CPPUNIT_TEST_SUITE(RmCpTest); 00016 CPPUNIT_TEST(remcopy1); 00017 CPPUNIT_TEST(remcpif1); 00018 CPPUNIT_TEST(remif1); 00019 CPPUNIT_TEST(remove1); 00020 CPPUNIT_TEST(repcpif1); 00021 CPPUNIT_TEST(replace0); 00022 CPPUNIT_TEST(replace1); 00023 CPPUNIT_TEST(replcpy1); 00024 CPPUNIT_TEST(replif1); 00025 CPPUNIT_TEST(revcopy1); 00026 CPPUNIT_TEST(reverse1); 00027 CPPUNIT_TEST_SUITE_END(); 00028 00029 protected: 00030 void remcopy1(); 00031 void remcpif1(); 00032 void remif1(); 00033 void remove1(); 00034 void repcpif1(); 00035 void replace0(); 00036 void replace1(); 00037 void replcpy1(); 00038 void replif1(); 00039 void revcopy1(); 00040 void reverse1(); 00041 00042 }; 00043 00044 CPPUNIT_TEST_SUITE_REGISTRATION(RmCpTest); 00045 00046 static bool odd(int a_) 00047 { 00048 return (a_ % 2) != 0; 00049 } 00050 // 00051 // tests implementation 00052 // 00053 00054 void RmCpTest::reverse1() 00055 { 00056 int numbers[6] = { 0, 1, 2, 3, 4, 5 }; 00057 00058 reverse(numbers, numbers + 6); 00059 CPPUNIT_ASSERT(numbers[0]==5); 00060 CPPUNIT_ASSERT(numbers[1]==4); 00061 CPPUNIT_ASSERT(numbers[2]==3); 00062 CPPUNIT_ASSERT(numbers[3]==2); 00063 CPPUNIT_ASSERT(numbers[4]==1); 00064 CPPUNIT_ASSERT(numbers[5]==0); 00065 } 00066 00067 void RmCpTest::revcopy1() 00068 { 00069 int numbers[6] = { 0, 1, 2, 3, 4, 5 }; 00070 00071 int result[6]; 00072 reverse_copy((int*)numbers, (int*)numbers + 6, (int*)result); 00073 // 5 4 3 2 1 0 00074 CPPUNIT_ASSERT(result[0]==5); 00075 CPPUNIT_ASSERT(result[1]==4); 00076 CPPUNIT_ASSERT(result[2]==3); 00077 CPPUNIT_ASSERT(result[3]==2); 00078 CPPUNIT_ASSERT(result[4]==1); 00079 CPPUNIT_ASSERT(result[5]==0); 00080 } 00081 00082 void RmCpTest::replif1() 00083 { 00084 vector <int> v1(10); 00085 for (int i = 0; (size_t)i < v1.size(); ++i) 00086 v1[i] = i % 5; 00087 00088 replace_if(v1.begin(), v1.end(), odd, 42); 00089 00090 // 0 42 2 42 4 0 42 2 42 4 00091 CPPUNIT_ASSERT(v1[0]==0); 00092 CPPUNIT_ASSERT(v1[1]==42); 00093 CPPUNIT_ASSERT(v1[2]==2); 00094 CPPUNIT_ASSERT(v1[3]==42); 00095 CPPUNIT_ASSERT(v1[4]==4); 00096 CPPUNIT_ASSERT(v1[5]==0); 00097 CPPUNIT_ASSERT(v1[6]==42); 00098 CPPUNIT_ASSERT(v1[7]==2); 00099 CPPUNIT_ASSERT(v1[8]==42); 00100 CPPUNIT_ASSERT(v1[9]==4); 00101 } 00102 00103 void RmCpTest::replcpy1() 00104 { 00105 int numbers[6] = { 0, 1, 2, 0, 1, 2 }; 00106 int result[6] = { 0, 0, 0, 0, 0, 0 }; 00107 00108 replace_copy((int*)numbers, (int*)numbers + 6, (int*)result, 2, 42); 00109 CPPUNIT_ASSERT(result[0]==0); 00110 CPPUNIT_ASSERT(result[1]==1); 00111 CPPUNIT_ASSERT(result[2]==42); 00112 CPPUNIT_ASSERT(result[3]==0); 00113 CPPUNIT_ASSERT(result[4]==1); 00114 CPPUNIT_ASSERT(result[5]==42); 00115 } 00116 00117 void RmCpTest::replace0() 00118 { 00119 int numbers[6] = { 0, 1, 2, 0, 1, 2 }; 00120 00121 replace(numbers, numbers + 6, 2, 42); 00122 00123 // 0 1 42 0 1 42 00124 CPPUNIT_ASSERT(numbers[0]==0); 00125 CPPUNIT_ASSERT(numbers[1]==1); 00126 CPPUNIT_ASSERT(numbers[2]==42); 00127 CPPUNIT_ASSERT(numbers[3]==0); 00128 CPPUNIT_ASSERT(numbers[4]==1); 00129 CPPUNIT_ASSERT(numbers[5]==42); 00130 } 00131 00132 void RmCpTest::replace1() 00133 { 00134 vector <int> v1(10); 00135 for (int i = 0; (size_t)i < v1.size(); ++i) 00136 v1[i] = i % 5; 00137 replace(v1.begin(), v1.end(), 2, 42); 00138 00139 // 0 1 2 3 4 0 1 2 3 4 00140 // 0 1 42 3 4 0 1 42 3 4 00141 CPPUNIT_ASSERT(v1[0]==0); 00142 CPPUNIT_ASSERT(v1[1]==1); 00143 CPPUNIT_ASSERT(v1[2]==42); 00144 CPPUNIT_ASSERT(v1[3]==3); 00145 CPPUNIT_ASSERT(v1[4]==4); 00146 CPPUNIT_ASSERT(v1[5]==0); 00147 CPPUNIT_ASSERT(v1[6]==1); 00148 CPPUNIT_ASSERT(v1[7]==42); 00149 CPPUNIT_ASSERT(v1[8]==3); 00150 CPPUNIT_ASSERT(v1[9]==4); 00151 } 00152 00153 void RmCpTest::repcpif1() 00154 { 00155 vector <int> v1(10); 00156 for (int i = 0; (size_t)i < v1.size(); ++i) 00157 v1[i] = i % 5; 00158 vector <int> v2(v1.size()); 00159 00160 // 0 1 2 3 4 0 1 2 3 4 00161 // 0 1 2 3 4 0 1 2 3 4 00162 // 0 42 2 42 4 0 42 2 42 4 00163 replace_copy_if(v1.begin(), v1.end(), v2.begin(), odd, 42); 00164 CPPUNIT_ASSERT(v1[0]==0); 00165 CPPUNIT_ASSERT(v1[1]==1); 00166 CPPUNIT_ASSERT(v1[2]==2); 00167 CPPUNIT_ASSERT(v1[3]==3); 00168 CPPUNIT_ASSERT(v1[4]==4); 00169 CPPUNIT_ASSERT(v1[5]==0); 00170 CPPUNIT_ASSERT(v1[6]==1); 00171 CPPUNIT_ASSERT(v1[7]==2); 00172 CPPUNIT_ASSERT(v1[8]==3); 00173 CPPUNIT_ASSERT(v1[9]==4); 00174 00175 CPPUNIT_ASSERT(v2[0]==0); 00176 CPPUNIT_ASSERT(v2[1]==42); 00177 CPPUNIT_ASSERT(v2[2]==2); 00178 CPPUNIT_ASSERT(v2[3]==42); 00179 CPPUNIT_ASSERT(v2[4]==4); 00180 CPPUNIT_ASSERT(v2[5]==0); 00181 CPPUNIT_ASSERT(v2[6]==42); 00182 CPPUNIT_ASSERT(v2[7]==2); 00183 CPPUNIT_ASSERT(v2[8]==42); 00184 CPPUNIT_ASSERT(v2[9]==4); 00185 } 00186 00187 void RmCpTest::remove1() 00188 { 00189 int numbers[6] = { 1, 2, 3, 1, 2, 3 }; 00190 remove((int*)numbers, (int*)numbers + 6, 1); 00191 00192 // 2 3 2 3 2 3 00193 CPPUNIT_ASSERT(numbers[0]==2); 00194 CPPUNIT_ASSERT(numbers[1]==3); 00195 CPPUNIT_ASSERT(numbers[2]==2); 00196 CPPUNIT_ASSERT(numbers[3]==3); 00197 CPPUNIT_ASSERT(numbers[4]==2); 00198 CPPUNIT_ASSERT(numbers[5]==3); 00199 } 00200 00201 void RmCpTest::remif1() 00202 { 00203 int numbers[6] = { 0, 0, 1, 1, 2, 2 }; 00204 00205 remove_if((int*)numbers, (int*)numbers + 6, odd); 00206 00207 // 0 0 2 2 2 2 00208 CPPUNIT_ASSERT(numbers[0]==0); 00209 CPPUNIT_ASSERT(numbers[1]==0); 00210 CPPUNIT_ASSERT(numbers[2]==2); 00211 CPPUNIT_ASSERT(numbers[3]==2); 00212 CPPUNIT_ASSERT(numbers[4]==2); 00213 CPPUNIT_ASSERT(numbers[5]==2); 00214 } 00215 00216 void RmCpTest::remcopy1() 00217 { 00218 int numbers[6] = { 1, 2, 3, 1, 2, 3 }; 00219 int result[6] = { 0, 0, 0, 0, 0, 0 }; 00220 00221 remove_copy((int*)numbers, (int*)numbers + 6, (int*)result, 2); 00222 00223 CPPUNIT_ASSERT(result[0]==1); 00224 CPPUNIT_ASSERT(result[1]==3); 00225 CPPUNIT_ASSERT(result[2]==1); 00226 CPPUNIT_ASSERT(result[3]==3); 00227 CPPUNIT_ASSERT(result[4]==0); 00228 CPPUNIT_ASSERT(result[5]==0); 00229 } 00230 00231 void RmCpTest::remcpif1() 00232 { 00233 int numbers[6] = { 1, 2, 3, 1, 2, 3 }; 00234 int result[6] = { 0, 0, 0, 0, 0, 0 }; 00235 00236 remove_copy_if((int*)numbers, (int*)numbers + 6, (int*)result, odd); 00237 00238 // 2 2 0 0 0 0 00239 CPPUNIT_ASSERT(result[0]==2); 00240 CPPUNIT_ASSERT(result[1]==2); 00241 CPPUNIT_ASSERT(result[2]==0); 00242 CPPUNIT_ASSERT(result[3]==0); 00243 CPPUNIT_ASSERT(result[4]==0); 00244 CPPUNIT_ASSERT(result[5]==0); 00245 } Generated on Sun May 27 2012 04:35:44 for ReactOS by
1.7.6.1
|