#include <algorithm> #include <vector> #include "cppunit/cppunit_proxy.h" #if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES) using namespace std; #endif // // TestCase class // class CountTest : public CPPUNIT_NS::TestCase { CPPUNIT_TEST_SUITE(CountTest); CPPUNIT_TEST(count0); CPPUNIT_TEST(count1); CPPUNIT_TEST(countif1); CPPUNIT_TEST_SUITE_END(); protected: void count0(); void count1(); void countif1(); static int odd(int a_); }; CPPUNIT_TEST_SUITE_REGISTRATION(CountTest); // // tests implementation // void CountTest::count0() { int numbers[10] = { 1, 2, 4, 1, 2, 4, 1, 2, 4, 1 }; int result = count(numbers, numbers + 10, 1); CPPUNIT_ASSERT(result==4); #if defined (STLPORT) && !defined (_STLP_NO_ANACHRONISMS) result = 0; count(numbers, numbers + 10, 1, result); CPPUNIT_ASSERT(result==4); #endif } void CountTest::count1() { vector <int> numbers(100); for(int i = 0; i < 100; i++) numbers[i] = i % 3; int elements = count(numbers.begin(), numbers.end(), 2); CPPUNIT_ASSERT(elements==33); #if defined (STLPORT) && !defined (_STLP_NO_ANACHRONISMS) elements = 0; count(numbers.begin(), numbers.end(), 2, elements); CPPUNIT_ASSERT(elements==33); #endif } void CountTest::countif1() { vector <int> numbers(100); for(int i = 0; i < 100; i++) numbers[i] = i % 3; int elements = count_if(numbers.begin(), numbers.end(), odd); CPPUNIT_ASSERT(elements==33); #if defined (STLPORT) && !defined (_STLP_NO_ANACHRONISMS) elements = 0; count_if(numbers.begin(), numbers.end(), odd, elements); CPPUNIT_ASSERT(elements==33); #endif } int CountTest::odd(int a_) { return a_ % 2; }