os/ossrv/genericopenlibs/cppstdlib/stl/test/unit/count_test.cpp
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
     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 }