1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/ossrv/genericopenlibs/cppstdlib/stl/test/unit/bvector_test.cpp Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,163 @@
1.4 +/*
1.5 +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
1.6 +* All rights reserved.
1.7 + */
1.8 +
1.9 +#include <vector>
1.10 +#include <e32std.h>
1.11 +#include "cppunit/cppunit_proxy.h"
1.12 +
1.13 +#if defined(_STLP_USE_NAMESPACES)
1.14 +using namespace std;
1.15 +#endif
1.16 +
1.17 +//
1.18 +// TestCase class
1.19 +//
1.20 +class BvectorTest : public CPPUNIT_NS::TestCase
1.21 +{
1.22 + CPPUNIT_TEST_SUITE(BvectorTest);
1.23 +#if !defined (STLPORT) || defined (_STLP_NO_EXTENSIONS)
1.24 + CPPUNIT_IGNORE;
1.25 +#endif
1.26 + CPPUNIT_TEST(bvec1);
1.27 + CPPUNIT_TEST(bvec_cov);
1.28 + CPPUNIT_TEST(bvec_cov1);
1.29 + CPPUNIT_TEST_SUITE_END();
1.30 +
1.31 +protected:
1.32 + void bvec1();
1.33 + void bvec_cov();
1.34 + void bvec_cov1();
1.35 +};
1.36 +
1.37 +CPPUNIT_TEST_SUITE_REGISTRATION(BvectorTest);
1.38 +
1.39 +//
1.40 +// tests implementation
1.41 +//
1.42 +void BvectorTest::bvec1()
1.43 +{
1.44 +#if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS)
1.45 + bool ii[3]= {1,0,1};
1.46 + bit_vector b(3);
1.47 +
1.48 + CPPUNIT_ASSERT(b[0]==0);
1.49 + CPPUNIT_ASSERT(b[1]==0);
1.50 + CPPUNIT_ASSERT(b[2]==0);
1.51 +
1.52 + b[0] = b[2] = 1;
1.53 +
1.54 + CPPUNIT_ASSERT(b[0]==1);
1.55 + CPPUNIT_ASSERT(b[1]==0);
1.56 + CPPUNIT_ASSERT(b[2]==1);
1.57 +
1.58 + b.insert(b.begin(),(bool*)ii, ii+2);
1.59 +
1.60 + CPPUNIT_ASSERT(b[0]==1);
1.61 + CPPUNIT_ASSERT(b[1]==0);
1.62 + CPPUNIT_ASSERT(b[2]==1);
1.63 + CPPUNIT_ASSERT(b[3]==0);
1.64 + CPPUNIT_ASSERT(b[4]==1);
1.65 +
1.66 + bit_vector bb = b;
1.67 + if (bb != b)
1.68 + exit(1);
1.69 +
1.70 + b[0] |= 0;
1.71 + b[1] |= 0;
1.72 + b[2] |= 1;
1.73 + b[3] |= 1;
1.74 + CPPUNIT_ASSERT(!((b[0] != 1) || (b[1] != 0) || (b[2] != 1) || (b[3] != 1)));
1.75 +
1.76 +
1.77 + bb[0] &= 0;
1.78 + bb[1] &= 0;
1.79 + bb[2] &= 1;
1.80 + bb[3] &= 1;
1.81 + CPPUNIT_ASSERT(!((bb[0] != 0) || (bb[1] != 0) || (bb[2] != 1) || (bb[3] != 0)));
1.82 +#endif
1.83 +}
1.84 +void BvectorTest::bvec_cov()
1.85 + {
1.86 +// __UHEAP_MARK;
1.87 +#if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS)
1.88 + {
1.89 + bit_vector b1(3),b2(2);
1.90 + b1[0] = b1[2] = 1;
1.91 + b2[1] = 1;
1.92 +
1.93 + b1.swap(b2);
1.94 + CPPUNIT_ASSERT(b1.size() == 2);
1.95 + CPPUNIT_ASSERT(b2.size() == 3);
1.96 +
1.97 + CPPUNIT_ASSERT(*b1.rbegin() == 1);
1.98 + CPPUNIT_ASSERT(*b1.rend() == 0);
1.99 +
1.100 + b2.pop_back();
1.101 + CPPUNIT_ASSERT(b2.size() == 2);
1.102 + CPPUNIT_ASSERT(*b2.rbegin() == 0);
1.103 + bool val = b2[0];
1.104 + CPPUNIT_ASSERT(val == true);
1.105 + }
1.106 + {
1.107 + bit_vector b1(3),b2(2);
1.108 + b1[0] = b1[2] = 1;
1.109 + b2[1] = 1;
1.110 +
1.111 + b1.max_size();
1.112 + CPPUNIT_ASSERT(b1.front() == 1);
1.113 + CPPUNIT_ASSERT(b1.back() == 1);
1.114 + b1.erase(b1.begin());
1.115 + CPPUNIT_ASSERT(b1.size() == 2);
1.116 + b1.erase(b1.begin(),b1.end());
1.117 + CPPUNIT_ASSERT(b1.size() == 0);
1.118 + CPPUNIT_ASSERT(b1.empty() == true);
1.119 + const bool &res1 = b2.at(0);
1.120 + CPPUNIT_ASSERT(res1 == false);
1.121 + CPPUNIT_ASSERT(b2.at(1) == true);
1.122 + b2.clear();
1.123 + CPPUNIT_ASSERT(b2.empty() == true);
1.124 + }
1.125 +#endif
1.126 +// __UHEAP_MARKEND;
1.127 + }
1.128 +void BvectorTest::bvec_cov1()
1.129 + {
1.130 +// __UHEAP_MARK;
1.131 +#if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS)
1.132 + {
1.133 + bit_vector b1(5),b2(2);
1.134 + b1[0] = b1[2] = 1;
1.135 + b2[1] = 1;
1.136 +
1.137 + b1.assign(b1.begin()+1,b1.begin()+3);
1.138 + CPPUNIT_ASSERT(b1.size() == 2);
1.139 + b1.assign(7,1);
1.140 + CPPUNIT_ASSERT(b1.size() == 7);
1.141 + b2.resize(3,1);
1.142 + CPPUNIT_ASSERT(b2.size() == 3);
1.143 + }
1.144 + {
1.145 + bit_vector b1(2),b2(2);
1.146 + b1[1] = 1;
1.147 + b2[0] = 1;
1.148 + b1.flip();
1.149 + CPPUNIT_ASSERT(b1.front() == 1);
1.150 + CPPUNIT_ASSERT(b1.back() == 0);
1.151 + CPPUNIT_ASSERT(b1 == b2);
1.152 + CPPUNIT_ASSERT(!(b1 < b2));
1.153 +
1.154 + b2.reserve(10);
1.155 + CPPUNIT_ASSERT(b2.capacity() >= 10);
1.156 + }
1.157 + {
1.158 + bit_vector b(2);
1.159 + b[1] = 1;
1.160 + b.insert(b.begin(),1);
1.161 + CPPUNIT_ASSERT(b.size() == 3);
1.162 + CPPUNIT_ASSERT(b.front() == 1);
1.163 + }
1.164 +#endif
1.165 +// __UHEAP_MARKEND;
1.166 + }