| #include <numeric> |
| #include <algorithm> |
| #include <functional> |
| |
| #include "cppunit/cppunit_proxy.h" |
| |
| #if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES) |
| using namespace std; |
| #endif |
| |
| // |
| // TestCase class |
| // |
| class PlusMinusTest : public CPPUNIT_NS::TestCase |
| { |
| CPPUNIT_TEST_SUITE(PlusMinusTest); |
| CPPUNIT_TEST(plus0); |
| CPPUNIT_TEST(minus0); |
| CPPUNIT_TEST_SUITE_END(); |
| |
| protected: |
| void plus0(); |
| void minus0(); |
| }; |
| |
| CPPUNIT_TEST_SUITE_REGISTRATION(PlusMinusTest); |
| |
| // |
| // tests implementation |
| // |
| void PlusMinusTest::plus0() |
| { |
| int input1 [4] = { 1, 6, 11, 8 }; |
| int input2 [4] = { 1, 5, 2, 3 }; |
| |
| int total = inner_product(input1, input1 + 4, input2, 0, plus<int>(), multiplies <int>()); |
| |
| CPPUNIT_ASSERT(total==77); |
| } |
| void PlusMinusTest::minus0() |
| { |
| int input1 [4] = { 1, 5, 7, 8 }; |
| int input2 [4] = { 1, 4, 8, 3 }; |
| |
| int output [4]; |
| |
| transform((int*)input1, (int*)input1 + 4, (int*)input2, (int*)output, minus<int>()); |
| CPPUNIT_ASSERT(output[0]==0); |
| CPPUNIT_ASSERT(output[1]==1); |
| CPPUNIT_ASSERT(output[2]==-1); |
| CPPUNIT_ASSERT(output[3]==5); |
| } |