Update contrib.
4 #include "cppunit/cppunit_proxy.h"
6 #if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
13 class RmCpTest : public CPPUNIT_NS::TestCase
15 CPPUNIT_TEST_SUITE(RmCpTest);
16 CPPUNIT_TEST(remcopy1);
17 CPPUNIT_TEST(remcpif1);
19 CPPUNIT_TEST(remove1);
20 CPPUNIT_TEST(repcpif1);
21 CPPUNIT_TEST(replace0);
22 CPPUNIT_TEST(replace1);
23 CPPUNIT_TEST(replcpy1);
24 CPPUNIT_TEST(replif1);
25 CPPUNIT_TEST(revcopy1);
26 CPPUNIT_TEST(reverse1);
27 CPPUNIT_TEST_SUITE_END();
44 CPPUNIT_TEST_SUITE_REGISTRATION(RmCpTest);
46 static bool odd(int a_)
51 // tests implementation
54 void RmCpTest::reverse1()
56 int numbers[6] = { 0, 1, 2, 3, 4, 5 };
58 reverse(numbers, numbers + 6);
59 CPPUNIT_ASSERT(numbers[0]==5);
60 CPPUNIT_ASSERT(numbers[1]==4);
61 CPPUNIT_ASSERT(numbers[2]==3);
62 CPPUNIT_ASSERT(numbers[3]==2);
63 CPPUNIT_ASSERT(numbers[4]==1);
64 CPPUNIT_ASSERT(numbers[5]==0);
67 void RmCpTest::revcopy1()
69 int numbers[6] = { 0, 1, 2, 3, 4, 5 };
72 reverse_copy((int*)numbers, (int*)numbers + 6, (int*)result);
74 CPPUNIT_ASSERT(result[0]==5);
75 CPPUNIT_ASSERT(result[1]==4);
76 CPPUNIT_ASSERT(result[2]==3);
77 CPPUNIT_ASSERT(result[3]==2);
78 CPPUNIT_ASSERT(result[4]==1);
79 CPPUNIT_ASSERT(result[5]==0);
82 void RmCpTest::replif1()
85 for (int i = 0; (size_t)i < v1.size(); ++i)
88 replace_if(v1.begin(), v1.end(), odd, 42);
90 // 0 42 2 42 4 0 42 2 42 4
91 CPPUNIT_ASSERT(v1[0]==0);
92 CPPUNIT_ASSERT(v1[1]==42);
93 CPPUNIT_ASSERT(v1[2]==2);
94 CPPUNIT_ASSERT(v1[3]==42);
95 CPPUNIT_ASSERT(v1[4]==4);
96 CPPUNIT_ASSERT(v1[5]==0);
97 CPPUNIT_ASSERT(v1[6]==42);
98 CPPUNIT_ASSERT(v1[7]==2);
99 CPPUNIT_ASSERT(v1[8]==42);
100 CPPUNIT_ASSERT(v1[9]==4);
103 void RmCpTest::replcpy1()
105 int numbers[6] = { 0, 1, 2, 0, 1, 2 };
106 int result[6] = { 0, 0, 0, 0, 0, 0 };
108 replace_copy((int*)numbers, (int*)numbers + 6, (int*)result, 2, 42);
109 CPPUNIT_ASSERT(result[0]==0);
110 CPPUNIT_ASSERT(result[1]==1);
111 CPPUNIT_ASSERT(result[2]==42);
112 CPPUNIT_ASSERT(result[3]==0);
113 CPPUNIT_ASSERT(result[4]==1);
114 CPPUNIT_ASSERT(result[5]==42);
117 void RmCpTest::replace0()
119 int numbers[6] = { 0, 1, 2, 0, 1, 2 };
121 replace(numbers, numbers + 6, 2, 42);
124 CPPUNIT_ASSERT(numbers[0]==0);
125 CPPUNIT_ASSERT(numbers[1]==1);
126 CPPUNIT_ASSERT(numbers[2]==42);
127 CPPUNIT_ASSERT(numbers[3]==0);
128 CPPUNIT_ASSERT(numbers[4]==1);
129 CPPUNIT_ASSERT(numbers[5]==42);
132 void RmCpTest::replace1()
135 for (int i = 0; (size_t)i < v1.size(); ++i)
137 replace(v1.begin(), v1.end(), 2, 42);
139 // 0 1 2 3 4 0 1 2 3 4
140 // 0 1 42 3 4 0 1 42 3 4
141 CPPUNIT_ASSERT(v1[0]==0);
142 CPPUNIT_ASSERT(v1[1]==1);
143 CPPUNIT_ASSERT(v1[2]==42);
144 CPPUNIT_ASSERT(v1[3]==3);
145 CPPUNIT_ASSERT(v1[4]==4);
146 CPPUNIT_ASSERT(v1[5]==0);
147 CPPUNIT_ASSERT(v1[6]==1);
148 CPPUNIT_ASSERT(v1[7]==42);
149 CPPUNIT_ASSERT(v1[8]==3);
150 CPPUNIT_ASSERT(v1[9]==4);
153 void RmCpTest::repcpif1()
156 for (int i = 0; (size_t)i < v1.size(); ++i)
158 vector <int> v2(v1.size());
160 // 0 1 2 3 4 0 1 2 3 4
161 // 0 1 2 3 4 0 1 2 3 4
162 // 0 42 2 42 4 0 42 2 42 4
163 replace_copy_if(v1.begin(), v1.end(), v2.begin(), odd, 42);
164 CPPUNIT_ASSERT(v1[0]==0);
165 CPPUNIT_ASSERT(v1[1]==1);
166 CPPUNIT_ASSERT(v1[2]==2);
167 CPPUNIT_ASSERT(v1[3]==3);
168 CPPUNIT_ASSERT(v1[4]==4);
169 CPPUNIT_ASSERT(v1[5]==0);
170 CPPUNIT_ASSERT(v1[6]==1);
171 CPPUNIT_ASSERT(v1[7]==2);
172 CPPUNIT_ASSERT(v1[8]==3);
173 CPPUNIT_ASSERT(v1[9]==4);
175 CPPUNIT_ASSERT(v2[0]==0);
176 CPPUNIT_ASSERT(v2[1]==42);
177 CPPUNIT_ASSERT(v2[2]==2);
178 CPPUNIT_ASSERT(v2[3]==42);
179 CPPUNIT_ASSERT(v2[4]==4);
180 CPPUNIT_ASSERT(v2[5]==0);
181 CPPUNIT_ASSERT(v2[6]==42);
182 CPPUNIT_ASSERT(v2[7]==2);
183 CPPUNIT_ASSERT(v2[8]==42);
184 CPPUNIT_ASSERT(v2[9]==4);
187 void RmCpTest::remove1()
189 int numbers[6] = { 1, 2, 3, 1, 2, 3 };
190 remove((int*)numbers, (int*)numbers + 6, 1);
193 CPPUNIT_ASSERT(numbers[0]==2);
194 CPPUNIT_ASSERT(numbers[1]==3);
195 CPPUNIT_ASSERT(numbers[2]==2);
196 CPPUNIT_ASSERT(numbers[3]==3);
197 CPPUNIT_ASSERT(numbers[4]==2);
198 CPPUNIT_ASSERT(numbers[5]==3);
201 void RmCpTest::remif1()
203 int numbers[6] = { 0, 0, 1, 1, 2, 2 };
205 remove_if((int*)numbers, (int*)numbers + 6, odd);
208 CPPUNIT_ASSERT(numbers[0]==0);
209 CPPUNIT_ASSERT(numbers[1]==0);
210 CPPUNIT_ASSERT(numbers[2]==2);
211 CPPUNIT_ASSERT(numbers[3]==2);
212 CPPUNIT_ASSERT(numbers[4]==2);
213 CPPUNIT_ASSERT(numbers[5]==2);
216 void RmCpTest::remcopy1()
218 int numbers[6] = { 1, 2, 3, 1, 2, 3 };
219 int result[6] = { 0, 0, 0, 0, 0, 0 };
221 remove_copy((int*)numbers, (int*)numbers + 6, (int*)result, 2);
223 CPPUNIT_ASSERT(result[0]==1);
224 CPPUNIT_ASSERT(result[1]==3);
225 CPPUNIT_ASSERT(result[2]==1);
226 CPPUNIT_ASSERT(result[3]==3);
227 CPPUNIT_ASSERT(result[4]==0);
228 CPPUNIT_ASSERT(result[5]==0);
231 void RmCpTest::remcpif1()
233 int numbers[6] = { 1, 2, 3, 1, 2, 3 };
234 int result[6] = { 0, 0, 0, 0, 0, 0 };
236 remove_copy_if((int*)numbers, (int*)numbers + 6, (int*)result, odd);
239 CPPUNIT_ASSERT(result[0]==2);
240 CPPUNIT_ASSERT(result[1]==2);
241 CPPUNIT_ASSERT(result[2]==0);
242 CPPUNIT_ASSERT(result[3]==0);
243 CPPUNIT_ASSERT(result[4]==0);
244 CPPUNIT_ASSERT(result[5]==0);