#include <vector> #include <algorithm> #include <functional> #include "cppunit/cppunit_proxy.h" #if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES) using namespace std; #endif // // TestCase class // class FuncTest : public CPPUNIT_NS::TestCase { CPPUNIT_TEST_SUITE(FuncTest); CPPUNIT_TEST(func1); CPPUNIT_TEST(func2); CPPUNIT_TEST(func3); CPPUNIT_TEST_SUITE_END(); protected: void func1(); void func2(); void func3(); static bool bigger(int i_); static bool bigger_than(int x_, int y_); }; CPPUNIT_TEST_SUITE_REGISTRATION(FuncTest); // // tests implementation // bool FuncTest::bigger(int i_) { return i_ > 3; } bool FuncTest::bigger_than(int x_, int y_) { return x_ > y_; } void FuncTest::func1() { vector<int>v; v.push_back(4); v.push_back(1); v.push_back(5); int n = count_if(v.begin(), v.end(), bigger); CPPUNIT_ASSERT( n == 2 ) } void FuncTest::func2() { vector<int> v; v.push_back(4); v.push_back(1); v.push_back(5); sort(v.begin(), v.end(), bigger_than); CPPUNIT_ASSERT( v[0] == 5 ); CPPUNIT_ASSERT( v[1] == 4 ); CPPUNIT_ASSERT( v[2] == 1 ); } void FuncTest::func3() { vector<int> v; v.push_back(4); v.push_back(1); v.push_back(5); sort(v.begin(), v.end(), greater<int>()); CPPUNIT_ASSERT( v[0] == 5 ); CPPUNIT_ASSERT( v[1] == 4 ); CPPUNIT_ASSERT( v[2] == 1 ); }