1#include <vector> 2#include <algorithm> 3#include <functional> 4 5#include "cppunit/cppunit_proxy.h" 6 7#if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES) 8using namespace std; 9#endif 10 11// 12// TestCase class 13// 14class FuncTest : public CPPUNIT_NS::TestCase 15{ 16 CPPUNIT_TEST_SUITE(FuncTest); 17 CPPUNIT_TEST(func1); 18 CPPUNIT_TEST(func2); 19 CPPUNIT_TEST(func3); 20 CPPUNIT_TEST_SUITE_END(); 21 22protected: 23 void func1(); 24 void func2(); 25 void func3(); 26 static bool bigger(int i_); 27 static bool bigger_than(int x_, int y_); 28}; 29 30CPPUNIT_TEST_SUITE_REGISTRATION(FuncTest); 31 32// 33// tests implementation 34// 35bool FuncTest::bigger(int i_) 36{ 37 return i_ > 3; 38} 39bool FuncTest::bigger_than(int x_, int y_) 40{ 41 return x_ > y_; 42} 43void FuncTest::func1() 44{ 45 vector<int>v; 46 v.push_back(4); 47 v.push_back(1); 48 v.push_back(5); 49 int n = count_if(v.begin(), v.end(), bigger); 50 CPPUNIT_ASSERT( n == 2 ) 51} 52 53void FuncTest::func2() 54{ 55 vector<int> v; 56 v.push_back(4); 57 v.push_back(1); 58 v.push_back(5); 59 sort(v.begin(), v.end(), bigger_than); 60 61 CPPUNIT_ASSERT( v[0] == 5 ); 62 CPPUNIT_ASSERT( v[1] == 4 ); 63 CPPUNIT_ASSERT( v[2] == 1 ); 64} 65void FuncTest::func3() 66{ 67 vector<int> v; 68 v.push_back(4); 69 v.push_back(1); 70 v.push_back(5); 71 sort(v.begin(), v.end(), greater<int>()); 72 73 CPPUNIT_ASSERT( v[0] == 5 ); 74 CPPUNIT_ASSERT( v[1] == 4 ); 75 CPPUNIT_ASSERT( v[2] == 1 ); 76} 77