Home | History | Annotate | Download | only in unit
      1 #include <vector>
      2 #include "unary.h"
      3 #include <algorithm>
      4 
      5 #include "cppunit/cppunit_proxy.h"
      6 
      7 #if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
      8 using namespace std;
      9 #endif
     10 
     11 //
     12 // TestCase class
     13 //
     14 class UnaryTest : public CPPUNIT_NS::TestCase
     15 {
     16   CPPUNIT_TEST_SUITE(UnaryTest);
     17 #if !defined (STLPORT) || defined (_STLP_NO_EXTENSIONS)
     18   CPPUNIT_IGNORE;
     19 #endif
     20   CPPUNIT_TEST(ucompos1);
     21   CPPUNIT_TEST(ucompos2);
     22   CPPUNIT_STOP_IGNORE;
     23   CPPUNIT_TEST(unegate1);
     24   CPPUNIT_TEST(unegate2);
     25 #if defined (STLPORT) && !defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
     26   CPPUNIT_IGNORE;
     27 #endif
     28   CPPUNIT_TEST(unegate3);
     29   CPPUNIT_TEST_SUITE_END();
     30 
     31 protected:
     32   void ucompos1();
     33   void ucompos2();
     34   void unegate1();
     35   void unegate2();
     36   void unegate3();
     37 };
     38 
     39 CPPUNIT_TEST_SUITE_REGISTRATION(UnaryTest);
     40 
     41 //
     42 // tests implementation
     43 //
     44 void UnaryTest::unegate1()
     45 {
     46   int array [3] = { 1, 2, 3 };
     47   //unary_negate<odd>::argument_type arg_val = 0;
     48   int* p = find_if((int*)array, (int*)array + 3, unary_negate<odd>(odd()));
     49   CPPUNIT_ASSERT((p != array + 3));
     50   CPPUNIT_ASSERT(*p==2);
     51 }
     52 void UnaryTest::unegate2()
     53 {
     54   int array [3] = { 1, 2, 3 };
     55   int* p = find_if((int*)array, (int*)array + 3, not1(odd()));
     56   CPPUNIT_ASSERT(p != array + 3);
     57   CPPUNIT_ASSERT(*p==2);
     58 }
     59 
     60 bool test_func(int param) {
     61   return param < 3;
     62 }
     63 void UnaryTest::unegate3()
     64 {
     65 #if !defined (STLPORT) || defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
     66   int array [3] = { 1, 2, 3 };
     67   int* p = find_if((int*)array, (int*)array + 3, not1(ptr_fun(test_func)));
     68   CPPUNIT_ASSERT(p != array + 3);
     69   CPPUNIT_ASSERT(*p==3);
     70 #endif
     71 }
     72 
     73 void UnaryTest::ucompos1()
     74 {
     75 #if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS)
     76   int input [3] = { -1, -4, -16 };
     77 
     78   double output[3];
     79   transform((int*)input, (int*)input + 3, output, unary_compose<square_root, negate<int> >(square_root(), negate<int>()));
     80 
     81   CPPUNIT_ASSERT(output[0]==1);
     82   CPPUNIT_ASSERT(output[1]==2);
     83   CPPUNIT_ASSERT(output[2]==4);
     84 #endif
     85 }
     86 void UnaryTest::ucompos2()
     87 {
     88 #if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS)
     89   int input [3] = { -1, -4, -16 };
     90 
     91   double output [3];
     92   transform((int*)input, (int*)input + 3, output, compose1(square_root(), negate<int>()));
     93 
     94   CPPUNIT_ASSERT(output[0]==1);
     95   CPPUNIT_ASSERT(output[1]==2);
     96   CPPUNIT_ASSERT(output[2]==4);
     97 #endif
     98 }
     99