1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/ossrv/genericopenlibs/cppstdlib/stl/test/unit/foreach_test.cpp Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,73 @@
1.4 +#include <vector>
1.5 +#include <algorithm>
1.6 +#include "fadapter.h"
1.7 +
1.8 +#include "cppunit/cppunit_proxy.h"
1.9 +
1.10 +#if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
1.11 +using namespace std;
1.12 +#endif
1.13 +
1.14 +//
1.15 +// TestCase class
1.16 +//
1.17 +class ForeachTest : public CPPUNIT_NS::TestCase
1.18 +{
1.19 + CPPUNIT_TEST_SUITE(ForeachTest);
1.20 + CPPUNIT_TEST(foreach0);
1.21 + CPPUNIT_TEST(foreach1);
1.22 + CPPUNIT_TEST_SUITE_END();
1.23 +
1.24 +protected:
1.25 + void foreach0();
1.26 + void foreach1();
1.27 +};
1.28 +
1.29 +CPPUNIT_TEST_SUITE_REGISTRATION(ForeachTest);
1.30 +
1.31 +//
1.32 +// tests implementation
1.33 +//
1.34 +static void increase(int& a_)
1.35 +{
1.36 + a_ += 1;
1.37 +}
1.38 +void ForeachTest::foreach0()
1.39 +{
1.40 + int numbers[10] = { 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 };
1.41 +
1.42 + for_each(numbers, numbers + 10, ptr_fun(increase));
1.43 +
1.44 + CPPUNIT_ASSERT(numbers[0]==2);
1.45 + CPPUNIT_ASSERT(numbers[1]==2);
1.46 + CPPUNIT_ASSERT(numbers[2]==3);
1.47 + CPPUNIT_ASSERT(numbers[3]==4);
1.48 + CPPUNIT_ASSERT(numbers[4]==6);
1.49 + CPPUNIT_ASSERT(numbers[5]==9);
1.50 + CPPUNIT_ASSERT(numbers[6]==14);
1.51 + CPPUNIT_ASSERT(numbers[7]==22);
1.52 + CPPUNIT_ASSERT(numbers[8]==35);
1.53 + CPPUNIT_ASSERT(numbers[9]==56);
1.54 +}
1.55 +static void sqr(int& a_)
1.56 +{
1.57 + a_ = a_ * a_;
1.58 +}
1.59 +void ForeachTest::foreach1()
1.60 +{
1.61 + vector<int> v1(10);
1.62 + for (int i = 0; (size_t)i < v1.size(); ++i)
1.63 + v1[i] = i;
1.64 + for_each(v1.begin(), v1.end(), ptr_fun(sqr) );
1.65 +
1.66 + CPPUNIT_ASSERT(v1[0]==0);
1.67 + CPPUNIT_ASSERT(v1[1]==1);
1.68 + CPPUNIT_ASSERT(v1[2]==4);
1.69 + CPPUNIT_ASSERT(v1[3]==9);
1.70 + CPPUNIT_ASSERT(v1[4]==16);
1.71 + CPPUNIT_ASSERT(v1[5]==25);
1.72 + CPPUNIT_ASSERT(v1[6]==36);
1.73 + CPPUNIT_ASSERT(v1[7]==49);
1.74 + CPPUNIT_ASSERT(v1[8]==64);
1.75 + CPPUNIT_ASSERT(v1[9]==81);
1.76 +}