⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 partition_test.cpp

📁 symbian 上的stl_port进过编译的。
💻 CPP
字号:
#include <algorithm>#include <vector>#include <cstdlib>#include <iterator>#include <functional>#include "cppunit/cppunit_proxy.h"#if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)using namespace std;#endif//// TestCase class//class PartitionTest : public CPPUNIT_NS::TestCase{  CPPUNIT_TEST_SUITE(PartitionTest);  CPPUNIT_TEST(ptition0);  CPPUNIT_TEST(ptition1);  CPPUNIT_TEST(stblptn0);  CPPUNIT_TEST(stblptn1);  CPPUNIT_TEST_SUITE_END();protected:  void ptition0();  void ptition1();  void stblptn0();  void stblptn1();  struct less_n {    less_n(int limit, size_t &nb_calls)      : _limit(limit), _nb_calls(nb_calls) {}    bool operator() (int a_) const {      ++_nb_calls;      return a_ < _limit;    }    int _limit;    size_t &_nb_calls;  private:    //explicitely defined as private to avoid warnings:    less_n& operator = (less_n const&);  };};CPPUNIT_TEST_SUITE_REGISTRATION(PartitionTest);//// tests implementation//void PartitionTest::stblptn0(){  int numbers[6] = { 10, 5, 11, 20, 6, -2 };  size_t nb_pred_calls = 0;  stable_partition((int*)numbers, (int*)numbers + 6, less_n(10, nb_pred_calls));  // 5 6 -2 10 11 20  CPPUNIT_ASSERT(numbers[0]==5);  CPPUNIT_ASSERT(numbers[1]==6);  CPPUNIT_ASSERT(numbers[2]==-2);  CPPUNIT_ASSERT(numbers[3]==10);  CPPUNIT_ASSERT(numbers[4]==11);  CPPUNIT_ASSERT(numbers[5]==20);  //Complexity check:  CPPUNIT_ASSERT( nb_pred_calls == sizeof(numbers) / sizeof(numbers[0]) );}void PartitionTest::stblptn1(){  //5 5 2 10 0 12 5 0 0 19  //5 5 2 10 0 5 0 0 12 19  int numbers[] = { 5, 5, 2, 10, 0, 12, 5, 0, 0, 19 };  vector <int> v1(numbers, numbers+10);  size_t nb_pred_calls = 0;  stable_partition(v1.begin(), v1.end(), less_n(11, nb_pred_calls));  CPPUNIT_ASSERT(v1[0]==5);  CPPUNIT_ASSERT(v1[1]==5);  CPPUNIT_ASSERT(v1[2]==2);  CPPUNIT_ASSERT(v1[3]==10);  CPPUNIT_ASSERT(v1[4]==0);  CPPUNIT_ASSERT(v1[5]==5);  CPPUNIT_ASSERT(v1[6]==0);  CPPUNIT_ASSERT(v1[7]==0);  CPPUNIT_ASSERT(v1[8]==12);  CPPUNIT_ASSERT(v1[9]==19);  CPPUNIT_ASSERT( nb_pred_calls == v1.size() );}void PartitionTest::ptition0(){  int numbers[6] = { 6, 12, 3, 10, 1, 20 };  size_t nb_pred_calls = 0;  // 6 1 3 10 12 20  partition((int*)numbers, (int*)numbers + 6, less_n(10, nb_pred_calls));  CPPUNIT_ASSERT(numbers[0]==6);  CPPUNIT_ASSERT(numbers[1]==1);  CPPUNIT_ASSERT(numbers[2]==3);  CPPUNIT_ASSERT(numbers[3]==10);  CPPUNIT_ASSERT(numbers[4]==12);  CPPUNIT_ASSERT(numbers[5]==20);  CPPUNIT_ASSERT( nb_pred_calls == sizeof(numbers) / sizeof(numbers[0]) );}void PartitionTest::ptition1(){  // 19 3 11 14 10 19 8 17 9 6  // 6 3 9 8 10 19 14 17 11 19  int numbers[10] ={ 19, 3, 11, 14, 10, 19, 8, 17, 9, 6 };  vector <int> v1(numbers, numbers+10);  size_t nb_pred_calls = 0;  partition(v1.begin(), v1.end(), less_n(11, nb_pred_calls));  CPPUNIT_ASSERT(v1[0]==6);  CPPUNIT_ASSERT(v1[1]==3);  CPPUNIT_ASSERT(v1[2]==9);  CPPUNIT_ASSERT(v1[3]==8);  CPPUNIT_ASSERT(v1[4]==10);  CPPUNIT_ASSERT(v1[5]==19);  CPPUNIT_ASSERT(v1[6]==14);  CPPUNIT_ASSERT(v1[7]==17);  CPPUNIT_ASSERT(v1[8]==11);  CPPUNIT_ASSERT(v1[9]==19);  CPPUNIT_ASSERT( nb_pred_calls == v1.size() );}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -