plusminus_test.cpp revision e46c9386c4f79aa40185f79a19fc5b2a7ef528b3
1#include <numeric> 2#include <algorithm> 3#include <functional> 4 5#include "cppunit/cppunit_proxy.h" 6 7#if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES) 8using namespace std; 9#endif 10 11// 12// TestCase class 13// 14class PlusMinusTest : public CPPUNIT_NS::TestCase 15{ 16 CPPUNIT_TEST_SUITE(PlusMinusTest); 17 CPPUNIT_TEST(plus0); 18 CPPUNIT_TEST(minus0); 19 CPPUNIT_TEST_SUITE_END(); 20 21protected: 22 void plus0(); 23 void minus0(); 24}; 25 26CPPUNIT_TEST_SUITE_REGISTRATION(PlusMinusTest); 27 28// 29// tests implementation 30// 31void PlusMinusTest::plus0() 32{ 33 int input1 [4] = { 1, 6, 11, 8 }; 34 int input2 [4] = { 1, 5, 2, 3 }; 35 36 int total = inner_product(input1, input1 + 4, input2, 0, plus<int>(), multiplies <int>()); 37 38 CPPUNIT_ASSERT(total==77); 39} 40void PlusMinusTest::minus0() 41{ 42 int input1 [4] = { 1, 5, 7, 8 }; 43 int input2 [4] = { 1, 4, 8, 3 }; 44 45 int output [4]; 46 47 transform((int*)input1, (int*)input1 + 4, (int*)input2, (int*)output, minus<int>()); 48 CPPUNIT_ASSERT(output[0]==0); 49 CPPUNIT_ASSERT(output[1]==1); 50 CPPUNIT_ASSERT(output[2]==-1); 51 CPPUNIT_ASSERT(output[3]==5); 52} 53