Home | History | Annotate | Download | only in unit
      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