sl@0: #include sl@0: #include sl@0: sl@0: #include "cppunit/cppunit_proxy.h" sl@0: sl@0: #if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES) sl@0: using namespace std; sl@0: #endif sl@0: sl@0: // sl@0: // TestCase class sl@0: // sl@0: class RmCpTest : public CPPUNIT_NS::TestCase sl@0: { sl@0: CPPUNIT_TEST_SUITE(RmCpTest); sl@0: CPPUNIT_TEST(remcopy1); sl@0: CPPUNIT_TEST(remcpif1); sl@0: CPPUNIT_TEST(remif1); sl@0: CPPUNIT_TEST(remove1); sl@0: CPPUNIT_TEST(repcpif1); sl@0: CPPUNIT_TEST(replace0); sl@0: CPPUNIT_TEST(replace1); sl@0: CPPUNIT_TEST(replcpy1); sl@0: CPPUNIT_TEST(replif1); sl@0: CPPUNIT_TEST(revcopy1); sl@0: CPPUNIT_TEST(reverse1); sl@0: CPPUNIT_TEST_SUITE_END(); sl@0: sl@0: protected: sl@0: void remcopy1(); sl@0: void remcpif1(); sl@0: void remif1(); sl@0: void remove1(); sl@0: void repcpif1(); sl@0: void replace0(); sl@0: void replace1(); sl@0: void replcpy1(); sl@0: void replif1(); sl@0: void revcopy1(); sl@0: void reverse1(); sl@0: sl@0: }; sl@0: sl@0: CPPUNIT_TEST_SUITE_REGISTRATION(RmCpTest); sl@0: sl@0: static bool odd(int a_) sl@0: { sl@0: return (a_ % 2) != 0; sl@0: } sl@0: // sl@0: // tests implementation sl@0: // sl@0: sl@0: void RmCpTest::reverse1() sl@0: { sl@0: int numbers[6] = { 0, 1, 2, 3, 4, 5 }; sl@0: sl@0: reverse(numbers, numbers + 6); sl@0: CPPUNIT_ASSERT(numbers[0]==5); sl@0: CPPUNIT_ASSERT(numbers[1]==4); sl@0: CPPUNIT_ASSERT(numbers[2]==3); sl@0: CPPUNIT_ASSERT(numbers[3]==2); sl@0: CPPUNIT_ASSERT(numbers[4]==1); sl@0: CPPUNIT_ASSERT(numbers[5]==0); sl@0: } sl@0: sl@0: void RmCpTest::revcopy1() sl@0: { sl@0: int numbers[6] = { 0, 1, 2, 3, 4, 5 }; sl@0: sl@0: int result[6]; sl@0: reverse_copy((int*)numbers, (int*)numbers + 6, (int*)result); sl@0: // 5 4 3 2 1 0 sl@0: CPPUNIT_ASSERT(result[0]==5); sl@0: CPPUNIT_ASSERT(result[1]==4); sl@0: CPPUNIT_ASSERT(result[2]==3); sl@0: CPPUNIT_ASSERT(result[3]==2); sl@0: CPPUNIT_ASSERT(result[4]==1); sl@0: CPPUNIT_ASSERT(result[5]==0); sl@0: } sl@0: sl@0: void RmCpTest::replif1() sl@0: { sl@0: vector v1(10); sl@0: for (int i = 0; (size_t)i < v1.size(); ++i) sl@0: v1[i] = i % 5; sl@0: sl@0: replace_if(v1.begin(), v1.end(), odd, 42); sl@0: sl@0: // 0 42 2 42 4 0 42 2 42 4 sl@0: CPPUNIT_ASSERT(v1[0]==0); sl@0: CPPUNIT_ASSERT(v1[1]==42); sl@0: CPPUNIT_ASSERT(v1[2]==2); sl@0: CPPUNIT_ASSERT(v1[3]==42); sl@0: CPPUNIT_ASSERT(v1[4]==4); sl@0: CPPUNIT_ASSERT(v1[5]==0); sl@0: CPPUNIT_ASSERT(v1[6]==42); sl@0: CPPUNIT_ASSERT(v1[7]==2); sl@0: CPPUNIT_ASSERT(v1[8]==42); sl@0: CPPUNIT_ASSERT(v1[9]==4); sl@0: } sl@0: sl@0: void RmCpTest::replcpy1() sl@0: { sl@0: int numbers[6] = { 0, 1, 2, 0, 1, 2 }; sl@0: int result[6] = { 0, 0, 0, 0, 0, 0 }; sl@0: sl@0: replace_copy((int*)numbers, (int*)numbers + 6, (int*)result, 2, 42); sl@0: CPPUNIT_ASSERT(result[0]==0); sl@0: CPPUNIT_ASSERT(result[1]==1); sl@0: CPPUNIT_ASSERT(result[2]==42); sl@0: CPPUNIT_ASSERT(result[3]==0); sl@0: CPPUNIT_ASSERT(result[4]==1); sl@0: CPPUNIT_ASSERT(result[5]==42); sl@0: } sl@0: sl@0: void RmCpTest::replace0() sl@0: { sl@0: int numbers[6] = { 0, 1, 2, 0, 1, 2 }; sl@0: sl@0: replace(numbers, numbers + 6, 2, 42); sl@0: sl@0: // 0 1 42 0 1 42 sl@0: CPPUNIT_ASSERT(numbers[0]==0); sl@0: CPPUNIT_ASSERT(numbers[1]==1); sl@0: CPPUNIT_ASSERT(numbers[2]==42); sl@0: CPPUNIT_ASSERT(numbers[3]==0); sl@0: CPPUNIT_ASSERT(numbers[4]==1); sl@0: CPPUNIT_ASSERT(numbers[5]==42); sl@0: } sl@0: sl@0: void RmCpTest::replace1() sl@0: { sl@0: vector v1(10); sl@0: for (int i = 0; (size_t)i < v1.size(); ++i) sl@0: v1[i] = i % 5; sl@0: replace(v1.begin(), v1.end(), 2, 42); sl@0: sl@0: // 0 1 2 3 4 0 1 2 3 4 sl@0: // 0 1 42 3 4 0 1 42 3 4 sl@0: CPPUNIT_ASSERT(v1[0]==0); sl@0: CPPUNIT_ASSERT(v1[1]==1); sl@0: CPPUNIT_ASSERT(v1[2]==42); sl@0: CPPUNIT_ASSERT(v1[3]==3); sl@0: CPPUNIT_ASSERT(v1[4]==4); sl@0: CPPUNIT_ASSERT(v1[5]==0); sl@0: CPPUNIT_ASSERT(v1[6]==1); sl@0: CPPUNIT_ASSERT(v1[7]==42); sl@0: CPPUNIT_ASSERT(v1[8]==3); sl@0: CPPUNIT_ASSERT(v1[9]==4); sl@0: } sl@0: sl@0: void RmCpTest::repcpif1() sl@0: { sl@0: vector v1(10); sl@0: for (int i = 0; (size_t)i < v1.size(); ++i) sl@0: v1[i] = i % 5; sl@0: vector v2(v1.size()); sl@0: sl@0: // 0 1 2 3 4 0 1 2 3 4 sl@0: // 0 1 2 3 4 0 1 2 3 4 sl@0: // 0 42 2 42 4 0 42 2 42 4 sl@0: replace_copy_if(v1.begin(), v1.end(), v2.begin(), odd, 42); sl@0: CPPUNIT_ASSERT(v1[0]==0); sl@0: CPPUNIT_ASSERT(v1[1]==1); sl@0: CPPUNIT_ASSERT(v1[2]==2); sl@0: CPPUNIT_ASSERT(v1[3]==3); sl@0: CPPUNIT_ASSERT(v1[4]==4); sl@0: CPPUNIT_ASSERT(v1[5]==0); sl@0: CPPUNIT_ASSERT(v1[6]==1); sl@0: CPPUNIT_ASSERT(v1[7]==2); sl@0: CPPUNIT_ASSERT(v1[8]==3); sl@0: CPPUNIT_ASSERT(v1[9]==4); sl@0: sl@0: CPPUNIT_ASSERT(v2[0]==0); sl@0: CPPUNIT_ASSERT(v2[1]==42); sl@0: CPPUNIT_ASSERT(v2[2]==2); sl@0: CPPUNIT_ASSERT(v2[3]==42); sl@0: CPPUNIT_ASSERT(v2[4]==4); sl@0: CPPUNIT_ASSERT(v2[5]==0); sl@0: CPPUNIT_ASSERT(v2[6]==42); sl@0: CPPUNIT_ASSERT(v2[7]==2); sl@0: CPPUNIT_ASSERT(v2[8]==42); sl@0: CPPUNIT_ASSERT(v2[9]==4); sl@0: } sl@0: sl@0: void RmCpTest::remove1() sl@0: { sl@0: int numbers[6] = { 1, 2, 3, 1, 2, 3 }; sl@0: remove((int*)numbers, (int*)numbers + 6, 1); sl@0: sl@0: // 2 3 2 3 2 3 sl@0: CPPUNIT_ASSERT(numbers[0]==2); sl@0: CPPUNIT_ASSERT(numbers[1]==3); sl@0: CPPUNIT_ASSERT(numbers[2]==2); sl@0: CPPUNIT_ASSERT(numbers[3]==3); sl@0: CPPUNIT_ASSERT(numbers[4]==2); sl@0: CPPUNIT_ASSERT(numbers[5]==3); sl@0: } sl@0: sl@0: void RmCpTest::remif1() sl@0: { sl@0: int numbers[6] = { 0, 0, 1, 1, 2, 2 }; sl@0: sl@0: remove_if((int*)numbers, (int*)numbers + 6, odd); sl@0: sl@0: // 0 0 2 2 2 2 sl@0: CPPUNIT_ASSERT(numbers[0]==0); sl@0: CPPUNIT_ASSERT(numbers[1]==0); sl@0: CPPUNIT_ASSERT(numbers[2]==2); sl@0: CPPUNIT_ASSERT(numbers[3]==2); sl@0: CPPUNIT_ASSERT(numbers[4]==2); sl@0: CPPUNIT_ASSERT(numbers[5]==2); sl@0: } sl@0: sl@0: void RmCpTest::remcopy1() sl@0: { sl@0: int numbers[6] = { 1, 2, 3, 1, 2, 3 }; sl@0: int result[6] = { 0, 0, 0, 0, 0, 0 }; sl@0: sl@0: remove_copy((int*)numbers, (int*)numbers + 6, (int*)result, 2); sl@0: sl@0: CPPUNIT_ASSERT(result[0]==1); sl@0: CPPUNIT_ASSERT(result[1]==3); sl@0: CPPUNIT_ASSERT(result[2]==1); sl@0: CPPUNIT_ASSERT(result[3]==3); sl@0: CPPUNIT_ASSERT(result[4]==0); sl@0: CPPUNIT_ASSERT(result[5]==0); sl@0: } sl@0: sl@0: void RmCpTest::remcpif1() sl@0: { sl@0: int numbers[6] = { 1, 2, 3, 1, 2, 3 }; sl@0: int result[6] = { 0, 0, 0, 0, 0, 0 }; sl@0: sl@0: remove_copy_if((int*)numbers, (int*)numbers + 6, (int*)result, odd); sl@0: sl@0: // 2 2 0 0 0 0 sl@0: CPPUNIT_ASSERT(result[0]==2); sl@0: CPPUNIT_ASSERT(result[1]==2); sl@0: CPPUNIT_ASSERT(result[2]==0); sl@0: CPPUNIT_ASSERT(result[3]==0); sl@0: CPPUNIT_ASSERT(result[4]==0); sl@0: CPPUNIT_ASSERT(result[5]==0); sl@0: }