| #include <vector> |
| #include "unary.h" |
| #include <algorithm> |
| |
| #include "cppunit/cppunit_proxy.h" |
| |
| #if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES) |
| using namespace std; |
| #endif |
| |
| // |
| // TestCase class |
| // |
| class UnaryTest : public CPPUNIT_NS::TestCase |
| { |
| CPPUNIT_TEST_SUITE(UnaryTest); |
| #if !defined (STLPORT) || defined (_STLP_NO_EXTENSIONS) |
| CPPUNIT_IGNORE; |
| #endif |
| CPPUNIT_TEST(ucompos1); |
| CPPUNIT_TEST(ucompos2); |
| CPPUNIT_STOP_IGNORE; |
| CPPUNIT_TEST(unegate1); |
| CPPUNIT_TEST(unegate2); |
| #if defined (STLPORT) && !defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) |
| CPPUNIT_IGNORE; |
| #endif |
| CPPUNIT_TEST(unegate3); |
| CPPUNIT_TEST_SUITE_END(); |
| |
| protected: |
| void ucompos1(); |
| void ucompos2(); |
| void unegate1(); |
| void unegate2(); |
| void unegate3(); |
| }; |
| |
| CPPUNIT_TEST_SUITE_REGISTRATION(UnaryTest); |
| |
| // |
| // tests implementation |
| // |
| void UnaryTest::unegate1() |
| { |
| int array [3] = { 1, 2, 3 }; |
| //unary_negate<odd>::argument_type arg_val = 0; |
| int* p = find_if((int*)array, (int*)array + 3, unary_negate<odd>(odd())); |
| CPPUNIT_ASSERT((p != array + 3)); |
| CPPUNIT_ASSERT(*p==2); |
| } |
| void UnaryTest::unegate2() |
| { |
| int array [3] = { 1, 2, 3 }; |
| int* p = find_if((int*)array, (int*)array + 3, not1(odd())); |
| CPPUNIT_ASSERT(p != array + 3); |
| CPPUNIT_ASSERT(*p==2); |
| } |
| |
| bool test_func(int param) { |
| return param < 3; |
| } |
| void UnaryTest::unegate3() |
| { |
| #if !defined (STLPORT) || defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) |
| int array [3] = { 1, 2, 3 }; |
| int* p = find_if((int*)array, (int*)array + 3, not1(ptr_fun(test_func))); |
| CPPUNIT_ASSERT(p != array + 3); |
| CPPUNIT_ASSERT(*p==3); |
| #endif |
| } |
| |
| void UnaryTest::ucompos1() |
| { |
| #if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS) |
| int input [3] = { -1, -4, -16 }; |
| |
| double output[3]; |
| transform((int*)input, (int*)input + 3, output, unary_compose<square_root, negate<int> >(square_root(), negate<int>())); |
| |
| CPPUNIT_ASSERT(output[0]==1); |
| CPPUNIT_ASSERT(output[1]==2); |
| CPPUNIT_ASSERT(output[2]==4); |
| #endif |
| } |
| void UnaryTest::ucompos2() |
| { |
| #if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS) |
| int input [3] = { -1, -4, -16 }; |
| |
| double output [3]; |
| transform((int*)input, (int*)input + 3, output, compose1(square_root(), negate<int>())); |
| |
| CPPUNIT_ASSERT(output[0]==1); |
| CPPUNIT_ASSERT(output[1]==2); |
| CPPUNIT_ASSERT(output[2]==4); |
| #endif |
| } |