1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/ossrv/genericopenlibs/cppstdlib/stl/test/unit/rm_cp_test.cpp Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,245 @@
1.4 +#include <vector>
1.5 +#include <algorithm>
1.6 +
1.7 +#include "cppunit/cppunit_proxy.h"
1.8 +
1.9 +#if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
1.10 +using namespace std;
1.11 +#endif
1.12 +
1.13 +//
1.14 +// TestCase class
1.15 +//
1.16 +class RmCpTest : public CPPUNIT_NS::TestCase
1.17 +{
1.18 + CPPUNIT_TEST_SUITE(RmCpTest);
1.19 + CPPUNIT_TEST(remcopy1);
1.20 + CPPUNIT_TEST(remcpif1);
1.21 + CPPUNIT_TEST(remif1);
1.22 + CPPUNIT_TEST(remove1);
1.23 + CPPUNIT_TEST(repcpif1);
1.24 + CPPUNIT_TEST(replace0);
1.25 + CPPUNIT_TEST(replace1);
1.26 + CPPUNIT_TEST(replcpy1);
1.27 + CPPUNIT_TEST(replif1);
1.28 + CPPUNIT_TEST(revcopy1);
1.29 + CPPUNIT_TEST(reverse1);
1.30 + CPPUNIT_TEST_SUITE_END();
1.31 +
1.32 +protected:
1.33 + void remcopy1();
1.34 + void remcpif1();
1.35 + void remif1();
1.36 + void remove1();
1.37 + void repcpif1();
1.38 + void replace0();
1.39 + void replace1();
1.40 + void replcpy1();
1.41 + void replif1();
1.42 + void revcopy1();
1.43 + void reverse1();
1.44 +
1.45 +};
1.46 +
1.47 +CPPUNIT_TEST_SUITE_REGISTRATION(RmCpTest);
1.48 +
1.49 +static bool odd(int a_)
1.50 +{
1.51 + return (a_ % 2) != 0;
1.52 +}
1.53 +//
1.54 +// tests implementation
1.55 +//
1.56 +
1.57 +void RmCpTest::reverse1()
1.58 +{
1.59 + int numbers[6] = { 0, 1, 2, 3, 4, 5 };
1.60 +
1.61 + reverse(numbers, numbers + 6);
1.62 + CPPUNIT_ASSERT(numbers[0]==5);
1.63 + CPPUNIT_ASSERT(numbers[1]==4);
1.64 + CPPUNIT_ASSERT(numbers[2]==3);
1.65 + CPPUNIT_ASSERT(numbers[3]==2);
1.66 + CPPUNIT_ASSERT(numbers[4]==1);
1.67 + CPPUNIT_ASSERT(numbers[5]==0);
1.68 +}
1.69 +
1.70 +void RmCpTest::revcopy1()
1.71 +{
1.72 + int numbers[6] = { 0, 1, 2, 3, 4, 5 };
1.73 +
1.74 + int result[6];
1.75 + reverse_copy((int*)numbers, (int*)numbers + 6, (int*)result);
1.76 + // 5 4 3 2 1 0
1.77 + CPPUNIT_ASSERT(result[0]==5);
1.78 + CPPUNIT_ASSERT(result[1]==4);
1.79 + CPPUNIT_ASSERT(result[2]==3);
1.80 + CPPUNIT_ASSERT(result[3]==2);
1.81 + CPPUNIT_ASSERT(result[4]==1);
1.82 + CPPUNIT_ASSERT(result[5]==0);
1.83 +}
1.84 +
1.85 +void RmCpTest::replif1()
1.86 +{
1.87 + vector <int> v1(10);
1.88 + for (int i = 0; (size_t)i < v1.size(); ++i)
1.89 + v1[i] = i % 5;
1.90 +
1.91 + replace_if(v1.begin(), v1.end(), odd, 42);
1.92 +
1.93 + // 0 42 2 42 4 0 42 2 42 4
1.94 + CPPUNIT_ASSERT(v1[0]==0);
1.95 + CPPUNIT_ASSERT(v1[1]==42);
1.96 + CPPUNIT_ASSERT(v1[2]==2);
1.97 + CPPUNIT_ASSERT(v1[3]==42);
1.98 + CPPUNIT_ASSERT(v1[4]==4);
1.99 + CPPUNIT_ASSERT(v1[5]==0);
1.100 + CPPUNIT_ASSERT(v1[6]==42);
1.101 + CPPUNIT_ASSERT(v1[7]==2);
1.102 + CPPUNIT_ASSERT(v1[8]==42);
1.103 + CPPUNIT_ASSERT(v1[9]==4);
1.104 +}
1.105 +
1.106 +void RmCpTest::replcpy1()
1.107 +{
1.108 + int numbers[6] = { 0, 1, 2, 0, 1, 2 };
1.109 + int result[6] = { 0, 0, 0, 0, 0, 0 };
1.110 +
1.111 + replace_copy((int*)numbers, (int*)numbers + 6, (int*)result, 2, 42);
1.112 + CPPUNIT_ASSERT(result[0]==0);
1.113 + CPPUNIT_ASSERT(result[1]==1);
1.114 + CPPUNIT_ASSERT(result[2]==42);
1.115 + CPPUNIT_ASSERT(result[3]==0);
1.116 + CPPUNIT_ASSERT(result[4]==1);
1.117 + CPPUNIT_ASSERT(result[5]==42);
1.118 +}
1.119 +
1.120 +void RmCpTest::replace0()
1.121 +{
1.122 + int numbers[6] = { 0, 1, 2, 0, 1, 2 };
1.123 +
1.124 + replace(numbers, numbers + 6, 2, 42);
1.125 +
1.126 + // 0 1 42 0 1 42
1.127 + CPPUNIT_ASSERT(numbers[0]==0);
1.128 + CPPUNIT_ASSERT(numbers[1]==1);
1.129 + CPPUNIT_ASSERT(numbers[2]==42);
1.130 + CPPUNIT_ASSERT(numbers[3]==0);
1.131 + CPPUNIT_ASSERT(numbers[4]==1);
1.132 + CPPUNIT_ASSERT(numbers[5]==42);
1.133 +}
1.134 +
1.135 +void RmCpTest::replace1()
1.136 +{
1.137 + vector <int> v1(10);
1.138 + for (int i = 0; (size_t)i < v1.size(); ++i)
1.139 + v1[i] = i % 5;
1.140 + replace(v1.begin(), v1.end(), 2, 42);
1.141 +
1.142 + // 0 1 2 3 4 0 1 2 3 4
1.143 + // 0 1 42 3 4 0 1 42 3 4
1.144 + CPPUNIT_ASSERT(v1[0]==0);
1.145 + CPPUNIT_ASSERT(v1[1]==1);
1.146 + CPPUNIT_ASSERT(v1[2]==42);
1.147 + CPPUNIT_ASSERT(v1[3]==3);
1.148 + CPPUNIT_ASSERT(v1[4]==4);
1.149 + CPPUNIT_ASSERT(v1[5]==0);
1.150 + CPPUNIT_ASSERT(v1[6]==1);
1.151 + CPPUNIT_ASSERT(v1[7]==42);
1.152 + CPPUNIT_ASSERT(v1[8]==3);
1.153 + CPPUNIT_ASSERT(v1[9]==4);
1.154 +}
1.155 +
1.156 +void RmCpTest::repcpif1()
1.157 +{
1.158 + vector <int> v1(10);
1.159 + for (int i = 0; (size_t)i < v1.size(); ++i)
1.160 + v1[i] = i % 5;
1.161 + vector <int> v2(v1.size());
1.162 +
1.163 + // 0 1 2 3 4 0 1 2 3 4
1.164 + // 0 1 2 3 4 0 1 2 3 4
1.165 + // 0 42 2 42 4 0 42 2 42 4
1.166 + replace_copy_if(v1.begin(), v1.end(), v2.begin(), odd, 42);
1.167 + CPPUNIT_ASSERT(v1[0]==0);
1.168 + CPPUNIT_ASSERT(v1[1]==1);
1.169 + CPPUNIT_ASSERT(v1[2]==2);
1.170 + CPPUNIT_ASSERT(v1[3]==3);
1.171 + CPPUNIT_ASSERT(v1[4]==4);
1.172 + CPPUNIT_ASSERT(v1[5]==0);
1.173 + CPPUNIT_ASSERT(v1[6]==1);
1.174 + CPPUNIT_ASSERT(v1[7]==2);
1.175 + CPPUNIT_ASSERT(v1[8]==3);
1.176 + CPPUNIT_ASSERT(v1[9]==4);
1.177 +
1.178 + CPPUNIT_ASSERT(v2[0]==0);
1.179 + CPPUNIT_ASSERT(v2[1]==42);
1.180 + CPPUNIT_ASSERT(v2[2]==2);
1.181 + CPPUNIT_ASSERT(v2[3]==42);
1.182 + CPPUNIT_ASSERT(v2[4]==4);
1.183 + CPPUNIT_ASSERT(v2[5]==0);
1.184 + CPPUNIT_ASSERT(v2[6]==42);
1.185 + CPPUNIT_ASSERT(v2[7]==2);
1.186 + CPPUNIT_ASSERT(v2[8]==42);
1.187 + CPPUNIT_ASSERT(v2[9]==4);
1.188 +}
1.189 +
1.190 +void RmCpTest::remove1()
1.191 +{
1.192 + int numbers[6] = { 1, 2, 3, 1, 2, 3 };
1.193 + remove((int*)numbers, (int*)numbers + 6, 1);
1.194 +
1.195 + // 2 3 2 3 2 3
1.196 + CPPUNIT_ASSERT(numbers[0]==2);
1.197 + CPPUNIT_ASSERT(numbers[1]==3);
1.198 + CPPUNIT_ASSERT(numbers[2]==2);
1.199 + CPPUNIT_ASSERT(numbers[3]==3);
1.200 + CPPUNIT_ASSERT(numbers[4]==2);
1.201 + CPPUNIT_ASSERT(numbers[5]==3);
1.202 +}
1.203 +
1.204 +void RmCpTest::remif1()
1.205 +{
1.206 + int numbers[6] = { 0, 0, 1, 1, 2, 2 };
1.207 +
1.208 + remove_if((int*)numbers, (int*)numbers + 6, odd);
1.209 +
1.210 + // 0 0 2 2 2 2
1.211 + CPPUNIT_ASSERT(numbers[0]==0);
1.212 + CPPUNIT_ASSERT(numbers[1]==0);
1.213 + CPPUNIT_ASSERT(numbers[2]==2);
1.214 + CPPUNIT_ASSERT(numbers[3]==2);
1.215 + CPPUNIT_ASSERT(numbers[4]==2);
1.216 + CPPUNIT_ASSERT(numbers[5]==2);
1.217 +}
1.218 +
1.219 +void RmCpTest::remcopy1()
1.220 +{
1.221 + int numbers[6] = { 1, 2, 3, 1, 2, 3 };
1.222 + int result[6] = { 0, 0, 0, 0, 0, 0 };
1.223 +
1.224 + remove_copy((int*)numbers, (int*)numbers + 6, (int*)result, 2);
1.225 +
1.226 + CPPUNIT_ASSERT(result[0]==1);
1.227 + CPPUNIT_ASSERT(result[1]==3);
1.228 + CPPUNIT_ASSERT(result[2]==1);
1.229 + CPPUNIT_ASSERT(result[3]==3);
1.230 + CPPUNIT_ASSERT(result[4]==0);
1.231 + CPPUNIT_ASSERT(result[5]==0);
1.232 +}
1.233 +
1.234 +void RmCpTest::remcpif1()
1.235 +{
1.236 + int numbers[6] = { 1, 2, 3, 1, 2, 3 };
1.237 + int result[6] = { 0, 0, 0, 0, 0, 0 };
1.238 +
1.239 + remove_copy_if((int*)numbers, (int*)numbers + 6, (int*)result, odd);
1.240 +
1.241 + // 2 2 0 0 0 0
1.242 + CPPUNIT_ASSERT(result[0]==2);
1.243 + CPPUNIT_ASSERT(result[1]==2);
1.244 + CPPUNIT_ASSERT(result[2]==0);
1.245 + CPPUNIT_ASSERT(result[3]==0);
1.246 + CPPUNIT_ASSERT(result[4]==0);
1.247 + CPPUNIT_ASSERT(result[5]==0);
1.248 +}