📄 rm_cp_test.cpp
字号:
#include <vector>#include <algorithm>#include "cppunit/cppunit_proxy.h"#if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)using namespace std;#endif//// TestCase class//class RmCpTest : public CPPUNIT_NS::TestCase{ CPPUNIT_TEST_SUITE(RmCpTest); CPPUNIT_TEST(remcopy1); CPPUNIT_TEST(remcpif1); CPPUNIT_TEST(remif1); CPPUNIT_TEST(remove1); CPPUNIT_TEST(repcpif1); CPPUNIT_TEST(replace0); CPPUNIT_TEST(replace1); CPPUNIT_TEST(replcpy1); CPPUNIT_TEST(replif1); CPPUNIT_TEST(revcopy1); CPPUNIT_TEST(reverse1); CPPUNIT_TEST_SUITE_END();protected: void remcopy1(); void remcpif1(); void remif1(); void remove1(); void repcpif1(); void replace0(); void replace1(); void replcpy1(); void replif1(); void revcopy1(); void reverse1();};CPPUNIT_TEST_SUITE_REGISTRATION(RmCpTest);static bool odd(int a_){ return (a_ % 2) != 0;}//// tests implementation//void RmCpTest::reverse1(){ int numbers[6] = { 0, 1, 2, 3, 4, 5 }; reverse(numbers, numbers + 6); CPPUNIT_ASSERT(numbers[0]==5); CPPUNIT_ASSERT(numbers[1]==4); CPPUNIT_ASSERT(numbers[2]==3); CPPUNIT_ASSERT(numbers[3]==2); CPPUNIT_ASSERT(numbers[4]==1); CPPUNIT_ASSERT(numbers[5]==0);}void RmCpTest::revcopy1(){ int numbers[6] = { 0, 1, 2, 3, 4, 5 }; int result[6]; reverse_copy((int*)numbers, (int*)numbers + 6, (int*)result); // 5 4 3 2 1 0 CPPUNIT_ASSERT(result[0]==5); CPPUNIT_ASSERT(result[1]==4); CPPUNIT_ASSERT(result[2]==3); CPPUNIT_ASSERT(result[3]==2); CPPUNIT_ASSERT(result[4]==1); CPPUNIT_ASSERT(result[5]==0);}void RmCpTest::replif1(){ vector <int> v1(10); for (int i = 0; (size_t)i < v1.size(); ++i) v1[i] = i % 5; replace_if(v1.begin(), v1.end(), odd, 42); // 0 42 2 42 4 0 42 2 42 4 CPPUNIT_ASSERT(v1[0]==0); CPPUNIT_ASSERT(v1[1]==42); CPPUNIT_ASSERT(v1[2]==2); CPPUNIT_ASSERT(v1[3]==42); CPPUNIT_ASSERT(v1[4]==4); CPPUNIT_ASSERT(v1[5]==0); CPPUNIT_ASSERT(v1[6]==42); CPPUNIT_ASSERT(v1[7]==2); CPPUNIT_ASSERT(v1[8]==42); CPPUNIT_ASSERT(v1[9]==4);}void RmCpTest::replcpy1(){ int numbers[6] = { 0, 1, 2, 0, 1, 2 }; int result[6] = { 0, 0, 0, 0, 0, 0 }; replace_copy((int*)numbers, (int*)numbers + 6, (int*)result, 2, 42); CPPUNIT_ASSERT(result[0]==0); CPPUNIT_ASSERT(result[1]==1); CPPUNIT_ASSERT(result[2]==42); CPPUNIT_ASSERT(result[3]==0); CPPUNIT_ASSERT(result[4]==1); CPPUNIT_ASSERT(result[5]==42);}void RmCpTest::replace0(){ int numbers[6] = { 0, 1, 2, 0, 1, 2 }; replace(numbers, numbers + 6, 2, 42); // 0 1 42 0 1 42 CPPUNIT_ASSERT(numbers[0]==0); CPPUNIT_ASSERT(numbers[1]==1); CPPUNIT_ASSERT(numbers[2]==42); CPPUNIT_ASSERT(numbers[3]==0); CPPUNIT_ASSERT(numbers[4]==1); CPPUNIT_ASSERT(numbers[5]==42);}void RmCpTest::replace1(){ vector <int> v1(10); for (int i = 0; (size_t)i < v1.size(); ++i) v1[i] = i % 5; replace(v1.begin(), v1.end(), 2, 42); // 0 1 2 3 4 0 1 2 3 4 // 0 1 42 3 4 0 1 42 3 4 CPPUNIT_ASSERT(v1[0]==0); CPPUNIT_ASSERT(v1[1]==1); CPPUNIT_ASSERT(v1[2]==42); CPPUNIT_ASSERT(v1[3]==3); CPPUNIT_ASSERT(v1[4]==4); CPPUNIT_ASSERT(v1[5]==0); CPPUNIT_ASSERT(v1[6]==1); CPPUNIT_ASSERT(v1[7]==42); CPPUNIT_ASSERT(v1[8]==3); CPPUNIT_ASSERT(v1[9]==4);}void RmCpTest::repcpif1(){ vector <int> v1(10); for (int i = 0; (size_t)i < v1.size(); ++i) v1[i] = i % 5; vector <int> v2(v1.size()); // 0 1 2 3 4 0 1 2 3 4 // 0 1 2 3 4 0 1 2 3 4 // 0 42 2 42 4 0 42 2 42 4 replace_copy_if(v1.begin(), v1.end(), v2.begin(), odd, 42); CPPUNIT_ASSERT(v1[0]==0); CPPUNIT_ASSERT(v1[1]==1); CPPUNIT_ASSERT(v1[2]==2); CPPUNIT_ASSERT(v1[3]==3); CPPUNIT_ASSERT(v1[4]==4); CPPUNIT_ASSERT(v1[5]==0); CPPUNIT_ASSERT(v1[6]==1); CPPUNIT_ASSERT(v1[7]==2); CPPUNIT_ASSERT(v1[8]==3); CPPUNIT_ASSERT(v1[9]==4); CPPUNIT_ASSERT(v2[0]==0); CPPUNIT_ASSERT(v2[1]==42); CPPUNIT_ASSERT(v2[2]==2); CPPUNIT_ASSERT(v2[3]==42); CPPUNIT_ASSERT(v2[4]==4); CPPUNIT_ASSERT(v2[5]==0); CPPUNIT_ASSERT(v2[6]==42); CPPUNIT_ASSERT(v2[7]==2); CPPUNIT_ASSERT(v2[8]==42); CPPUNIT_ASSERT(v2[9]==4);}void RmCpTest::remove1(){ int numbers[6] = { 1, 2, 3, 1, 2, 3 }; remove((int*)numbers, (int*)numbers + 6, 1); // 2 3 2 3 2 3 CPPUNIT_ASSERT(numbers[0]==2); CPPUNIT_ASSERT(numbers[1]==3); CPPUNIT_ASSERT(numbers[2]==2); CPPUNIT_ASSERT(numbers[3]==3); CPPUNIT_ASSERT(numbers[4]==2); CPPUNIT_ASSERT(numbers[5]==3);}void RmCpTest::remif1(){ int numbers[6] = { 0, 0, 1, 1, 2, 2 }; remove_if((int*)numbers, (int*)numbers + 6, odd); // 0 0 2 2 2 2 CPPUNIT_ASSERT(numbers[0]==0); CPPUNIT_ASSERT(numbers[1]==0); CPPUNIT_ASSERT(numbers[2]==2); CPPUNIT_ASSERT(numbers[3]==2); CPPUNIT_ASSERT(numbers[4]==2); CPPUNIT_ASSERT(numbers[5]==2);}void RmCpTest::remcopy1(){ int numbers[6] = { 1, 2, 3, 1, 2, 3 }; int result[6] = { 0, 0, 0, 0, 0, 0 }; remove_copy((int*)numbers, (int*)numbers + 6, (int*)result, 2); CPPUNIT_ASSERT(result[0]==1); CPPUNIT_ASSERT(result[1]==3); CPPUNIT_ASSERT(result[2]==1); CPPUNIT_ASSERT(result[3]==3); CPPUNIT_ASSERT(result[4]==0); CPPUNIT_ASSERT(result[5]==0);}void RmCpTest::remcpif1(){ int numbers[6] = { 1, 2, 3, 1, 2, 3 }; int result[6] = { 0, 0, 0, 0, 0, 0 }; remove_copy_if((int*)numbers, (int*)numbers + 6, (int*)result, odd); // 2 2 0 0 0 0 CPPUNIT_ASSERT(result[0]==2); CPPUNIT_ASSERT(result[1]==2); CPPUNIT_ASSERT(result[2]==0); CPPUNIT_ASSERT(result[3]==0); CPPUNIT_ASSERT(result[4]==0); CPPUNIT_ASSERT(result[5]==0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -