5 #include "cppunit/cppunit_proxy.h"
7 #if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
14 class InnerprodTest
: public CPPUNIT_NS::TestCase
16 CPPUNIT_TEST_SUITE(InnerprodTest
);
17 CPPUNIT_TEST(inprod0
);
18 CPPUNIT_TEST(inprod1
);
19 CPPUNIT_TEST(inprod2
);
20 CPPUNIT_TEST_SUITE_END();
27 static size_t add(size_t a_
, size_t b_
) {
31 static size_t mult(size_t a_
, size_t b_
) {
36 CPPUNIT_TEST_SUITE_REGISTRATION(InnerprodTest
);
39 // tests implementation
41 void InnerprodTest::inprod0()
43 int vector1
[5] = { 1, 2, 3, 4, 5 };
44 int vector2
[5] = { 1, 2, 3, 4, 5 };
47 result
= inner_product(vector1
, vector1
+ 5, vector2
, 0);
48 CPPUNIT_ASSERT(result
==55);
50 void InnerprodTest::inprod1()
53 vector
<size_t> v2(v1
.size());
54 for (size_t i
= 0; i
< v1
.size(); ++i
) {
56 v2
[i
] = v1
.size() - i
;
58 size_t result
= inner_product(v1
.begin(), v1
.end(), v2
.begin(), (size_t)0);
59 CPPUNIT_ASSERT(result
== 10);
61 void InnerprodTest::inprod2()
64 vector
<size_t> v2(v1
.size());
65 for(size_t i
= 0; i
< v1
.size(); ++i
) {
67 v2
[i
] = v1
.size() - i
;
69 size_t result
=inner_product(v1
.begin(), v1
.end(), v2
.begin(), (size_t)1, mult
, add
);
71 CPPUNIT_ASSERT(result
== 64);