1e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <vector>
2e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <algorithm>
3e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
4e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include "cppunit/cppunit_proxy.h"
5e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
6e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
7e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottusing namespace std;
8e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
9e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
10e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott//
11e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// TestCase class
12e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott//
13e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottclass RmCpTest : public CPPUNIT_NS::TestCase
14e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{
15e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_TEST_SUITE(RmCpTest);
16e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_TEST(remcopy1);
17e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_TEST(remcpif1);
18e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_TEST(remif1);
19e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_TEST(remove1);
20e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_TEST(repcpif1);
21e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_TEST(replace0);
22e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_TEST(replace1);
23e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_TEST(replcpy1);
24e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_TEST(replif1);
25e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_TEST(revcopy1);
26e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_TEST(reverse1);
27e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_TEST_SUITE_END();
28e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
29e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottprotected:
30e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  void remcopy1();
31e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  void remcpif1();
32e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  void remif1();
33e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  void remove1();
34e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  void repcpif1();
35e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  void replace0();
36e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  void replace1();
37e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  void replcpy1();
38e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  void replif1();
39e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  void revcopy1();
40e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  void reverse1();
41e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
42e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott};
43e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
44e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick ScottCPPUNIT_TEST_SUITE_REGISTRATION(RmCpTest);
45e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
46e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottstatic bool odd(int a_)
47e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{
48e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  return (a_ % 2) != 0;
49e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}
50e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott//
51e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// tests implementation
52e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott//
53e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
54e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid RmCpTest::reverse1()
55e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{
56e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  int numbers[6] = { 0, 1, 2, 3, 4, 5 };
57e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
58e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  reverse(numbers, numbers + 6);
59e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(numbers[0]==5);
60e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(numbers[1]==4);
61e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(numbers[2]==3);
62e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(numbers[3]==2);
63e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(numbers[4]==1);
64e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(numbers[5]==0);
65e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}
66e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
67e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid RmCpTest::revcopy1()
68e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{
69e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  int numbers[6] = { 0, 1, 2, 3, 4, 5 };
70e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
71e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  int result[6];
72e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  reverse_copy((int*)numbers, (int*)numbers + 6, (int*)result);
73e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  // 5 4 3 2 1 0
74e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(result[0]==5);
75e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(result[1]==4);
76e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(result[2]==3);
77e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(result[3]==2);
78e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(result[4]==1);
79e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(result[5]==0);
80e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}
81e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
82e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid RmCpTest::replif1()
83e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{
84e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  vector <int> v1(10);
85e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  for (int i = 0; (size_t)i < v1.size(); ++i)
86e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    v1[i] = i % 5;
87e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
88e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  replace_if(v1.begin(), v1.end(), odd, 42);
89e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
90e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  // 0 42 2 42 4 0 42 2 42 4
91e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v1[0]==0);
92e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v1[1]==42);
93e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v1[2]==2);
94e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v1[3]==42);
95e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v1[4]==4);
96e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v1[5]==0);
97e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v1[6]==42);
98e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v1[7]==2);
99e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v1[8]==42);
100e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v1[9]==4);
101e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}
102e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
103e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid RmCpTest::replcpy1()
104e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{
105e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  int numbers[6] = { 0, 1, 2, 0, 1, 2 };
106e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  int result[6] = { 0, 0, 0, 0, 0, 0 };
107e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
108e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  replace_copy((int*)numbers, (int*)numbers + 6, (int*)result, 2, 42);
109e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(result[0]==0);
110e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(result[1]==1);
111e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(result[2]==42);
112e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(result[3]==0);
113e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(result[4]==1);
114e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(result[5]==42);
115e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}
116e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
117e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid RmCpTest::replace0()
118e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{
119e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  int numbers[6] = { 0, 1, 2, 0, 1, 2 };
120e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
121e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  replace(numbers, numbers + 6, 2, 42);
122e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
123e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  // 0 1 42 0 1 42
124e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(numbers[0]==0);
125e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(numbers[1]==1);
126e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(numbers[2]==42);
127e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(numbers[3]==0);
128e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(numbers[4]==1);
129e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(numbers[5]==42);
130e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}
131e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
132e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid RmCpTest::replace1()
133e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{
134e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  vector <int> v1(10);
135e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  for (int i = 0; (size_t)i < v1.size(); ++i)
136e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    v1[i] = i % 5;
137e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  replace(v1.begin(), v1.end(), 2, 42);
138e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
139e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  // 0 1 2 3 4 0 1 2 3 4
140e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  // 0 1 42 3 4 0 1 42 3 4
141e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v1[0]==0);
142e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v1[1]==1);
143e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v1[2]==42);
144e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v1[3]==3);
145e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v1[4]==4);
146e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v1[5]==0);
147e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v1[6]==1);
148e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v1[7]==42);
149e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v1[8]==3);
150e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v1[9]==4);
151e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}
152e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
153e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid RmCpTest::repcpif1()
154e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{
155e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  vector <int> v1(10);
156e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  for (int i = 0; (size_t)i < v1.size(); ++i)
157e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    v1[i] = i % 5;
158e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  vector <int> v2(v1.size());
159e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
160e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  // 0 1 2 3 4 0 1 2 3 4
161e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  // 0 1 2 3 4 0 1 2 3 4
162e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  // 0 42 2 42 4 0 42 2 42 4
163e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  replace_copy_if(v1.begin(), v1.end(), v2.begin(), odd, 42);
164e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v1[0]==0);
165e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v1[1]==1);
166e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v1[2]==2);
167e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v1[3]==3);
168e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v1[4]==4);
169e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v1[5]==0);
170e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v1[6]==1);
171e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v1[7]==2);
172e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v1[8]==3);
173e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v1[9]==4);
174e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
175e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v2[0]==0);
176e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v2[1]==42);
177e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v2[2]==2);
178e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v2[3]==42);
179e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v2[4]==4);
180e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v2[5]==0);
181e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v2[6]==42);
182e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v2[7]==2);
183e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v2[8]==42);
184e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(v2[9]==4);
185e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}
186e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
187e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid RmCpTest::remove1()
188e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{
189e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  int numbers[6] = { 1, 2, 3, 1, 2, 3 };
190e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  remove((int*)numbers, (int*)numbers + 6, 1);
191e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
192e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  // 2 3 2 3 2 3
193e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(numbers[0]==2);
194e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(numbers[1]==3);
195e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(numbers[2]==2);
196e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(numbers[3]==3);
197e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(numbers[4]==2);
198e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(numbers[5]==3);
199e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}
200e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
201e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid RmCpTest::remif1()
202e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{
203e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  int numbers[6] = { 0, 0, 1, 1, 2, 2 };
204e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
205e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  remove_if((int*)numbers, (int*)numbers + 6, odd);
206e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
207e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  // 0 0 2 2 2 2
208e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(numbers[0]==0);
209e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(numbers[1]==0);
210e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(numbers[2]==2);
211e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(numbers[3]==2);
212e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(numbers[4]==2);
213e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(numbers[5]==2);
214e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}
215e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
216e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid RmCpTest::remcopy1()
217e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{
218e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  int numbers[6] = { 1, 2, 3, 1, 2, 3 };
219e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  int result[6] = { 0, 0, 0, 0, 0, 0 };
220e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
221e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  remove_copy((int*)numbers, (int*)numbers + 6, (int*)result, 2);
222e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
223e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(result[0]==1);
224e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(result[1]==3);
225e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(result[2]==1);
226e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(result[3]==3);
227e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(result[4]==0);
228e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(result[5]==0);
229e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}
230e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
231e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid RmCpTest::remcpif1()
232e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{
233e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  int numbers[6] = { 1, 2, 3, 1, 2, 3 };
234e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  int result[6] = { 0, 0, 0, 0, 0, 0 };
235e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
236e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  remove_copy_if((int*)numbers, (int*)numbers + 6, (int*)result, odd);
237e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
238e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  // 2 2 0 0 0 0
239e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(result[0]==2);
240e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(result[1]==2);
241e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(result[2]==0);
242e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(result[3]==0);
243e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(result[4]==0);
244e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_ASSERT(result[5]==0);
245e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}
246