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