| #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 ); |
| } |