1 #include <algorithm> 2 #include <vector> 3 #include "cppunit/cppunit_proxy.h" 4 5 #if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES) 6 using namespace std; 7 #endif 8 9 // 10 // TestCase class 11 // 12 class CountTest : public CPPUNIT_NS::TestCase 13 { 14 CPPUNIT_TEST_SUITE(CountTest); 15 CPPUNIT_TEST(count0); 16 CPPUNIT_TEST(count1); 17 CPPUNIT_TEST(countif1); 18 CPPUNIT_TEST_SUITE_END(); 19 20 protected: 21 void count0(); 22 void count1(); 23 void countif1(); 24 static int odd(int a_); 25 }; 26 27 CPPUNIT_TEST_SUITE_REGISTRATION(CountTest); 28 29 // 30 // tests implementation 31 // 32 void CountTest::count0() 33 { 34 int numbers[10] = { 1, 2, 4, 1, 2, 4, 1, 2, 4, 1 }; 35 36 int result = count(numbers, numbers + 10, 1); 37 CPPUNIT_ASSERT(result==4); 38 #if defined (STLPORT) && !defined (_STLP_NO_ANACHRONISMS) 39 result = 0; 40 count(numbers, numbers + 10, 1, result); 41 CPPUNIT_ASSERT(result==4); 42 #endif 43 } 44 void CountTest::count1() 45 { 46 vector <int> numbers(100); 47 for(int i = 0; i < 100; i++) 48 numbers[i] = i % 3; 49 int elements = count(numbers.begin(), numbers.end(), 2); 50 CPPUNIT_ASSERT(elements==33); 51 #if defined (STLPORT) && !defined (_STLP_NO_ANACHRONISMS) 52 elements = 0; 53 count(numbers.begin(), numbers.end(), 2, elements); 54 CPPUNIT_ASSERT(elements==33); 55 #endif 56 } 57 void CountTest::countif1() 58 { 59 vector <int> numbers(100); 60 for(int i = 0; i < 100; i++) 61 numbers[i] = i % 3; 62 int elements = count_if(numbers.begin(), numbers.end(), odd); 63 CPPUNIT_ASSERT(elements==33); 64 #if defined (STLPORT) && !defined (_STLP_NO_ANACHRONISMS) 65 elements = 0; 66 count_if(numbers.begin(), numbers.end(), odd, elements); 67 CPPUNIT_ASSERT(elements==33); 68 #endif 69 } 70 int CountTest::odd(int a_) 71 { 72 return a_ % 2; 73 } 74