os/ossrv/genericopenlibs/cppstdlib/stl/test/unit/bvector_test.cpp
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
sl@0
     1
/*
sl@0
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     3
* All rights reserved.
sl@0
     4
 */
sl@0
     5
sl@0
     6
#include <vector>
sl@0
     7
#include <e32std.h>
sl@0
     8
#include "cppunit/cppunit_proxy.h"
sl@0
     9
sl@0
    10
#if defined(_STLP_USE_NAMESPACES)
sl@0
    11
using namespace std;
sl@0
    12
#endif
sl@0
    13
sl@0
    14
//
sl@0
    15
// TestCase class
sl@0
    16
//
sl@0
    17
class BvectorTest : public CPPUNIT_NS::TestCase
sl@0
    18
{
sl@0
    19
  CPPUNIT_TEST_SUITE(BvectorTest);
sl@0
    20
#if !defined (STLPORT) || defined (_STLP_NO_EXTENSIONS)
sl@0
    21
  CPPUNIT_IGNORE;
sl@0
    22
#endif
sl@0
    23
  CPPUNIT_TEST(bvec1);
sl@0
    24
  CPPUNIT_TEST(bvec_cov);
sl@0
    25
  CPPUNIT_TEST(bvec_cov1);
sl@0
    26
  CPPUNIT_TEST_SUITE_END();
sl@0
    27
sl@0
    28
protected:
sl@0
    29
  void bvec1();
sl@0
    30
  void bvec_cov();
sl@0
    31
  void bvec_cov1();
sl@0
    32
};
sl@0
    33
sl@0
    34
CPPUNIT_TEST_SUITE_REGISTRATION(BvectorTest);
sl@0
    35
sl@0
    36
//
sl@0
    37
// tests implementation
sl@0
    38
//
sl@0
    39
void BvectorTest::bvec1()
sl@0
    40
{
sl@0
    41
#if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS)
sl@0
    42
  bool ii[3]= {1,0,1};
sl@0
    43
  bit_vector b(3);
sl@0
    44
sl@0
    45
  CPPUNIT_ASSERT(b[0]==0);
sl@0
    46
  CPPUNIT_ASSERT(b[1]==0);
sl@0
    47
  CPPUNIT_ASSERT(b[2]==0);
sl@0
    48
sl@0
    49
  b[0] = b[2] = 1;
sl@0
    50
sl@0
    51
  CPPUNIT_ASSERT(b[0]==1);
sl@0
    52
  CPPUNIT_ASSERT(b[1]==0);
sl@0
    53
  CPPUNIT_ASSERT(b[2]==1);
sl@0
    54
sl@0
    55
  b.insert(b.begin(),(bool*)ii, ii+2);
sl@0
    56
sl@0
    57
  CPPUNIT_ASSERT(b[0]==1);
sl@0
    58
  CPPUNIT_ASSERT(b[1]==0);
sl@0
    59
  CPPUNIT_ASSERT(b[2]==1);
sl@0
    60
  CPPUNIT_ASSERT(b[3]==0);
sl@0
    61
  CPPUNIT_ASSERT(b[4]==1);
sl@0
    62
sl@0
    63
  bit_vector bb = b;
sl@0
    64
  if (bb != b)
sl@0
    65
    exit(1);
sl@0
    66
sl@0
    67
  b[0] |= 0;
sl@0
    68
  b[1] |= 0;
sl@0
    69
  b[2] |= 1;
sl@0
    70
  b[3] |= 1;
sl@0
    71
  CPPUNIT_ASSERT(!((b[0] != 1) || (b[1] != 0) || (b[2] != 1) || (b[3] != 1)));
sl@0
    72
sl@0
    73
sl@0
    74
  bb[0] &= 0;
sl@0
    75
  bb[1] &= 0;
sl@0
    76
  bb[2] &= 1;
sl@0
    77
  bb[3] &= 1;
sl@0
    78
  CPPUNIT_ASSERT(!((bb[0] != 0) || (bb[1] != 0) || (bb[2] != 1) || (bb[3] != 0)));
sl@0
    79
#endif
sl@0
    80
}
sl@0
    81
void BvectorTest::bvec_cov()
sl@0
    82
	{
sl@0
    83
//	__UHEAP_MARK;
sl@0
    84
#if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS)
sl@0
    85
		{
sl@0
    86
		bit_vector b1(3),b2(2);
sl@0
    87
		b1[0] = b1[2] = 1;
sl@0
    88
		b2[1] = 1;
sl@0
    89
	
sl@0
    90
		b1.swap(b2);
sl@0
    91
		CPPUNIT_ASSERT(b1.size() == 2);
sl@0
    92
		CPPUNIT_ASSERT(b2.size() == 3);
sl@0
    93
		
sl@0
    94
		CPPUNIT_ASSERT(*b1.rbegin() == 1);
sl@0
    95
		CPPUNIT_ASSERT(*b1.rend() == 0);
sl@0
    96
		
sl@0
    97
		b2.pop_back();
sl@0
    98
		CPPUNIT_ASSERT(b2.size() == 2);
sl@0
    99
		CPPUNIT_ASSERT(*b2.rbegin() == 0);
sl@0
   100
		bool val = b2[0];
sl@0
   101
		CPPUNIT_ASSERT(val == true);
sl@0
   102
		}
sl@0
   103
		{
sl@0
   104
		bit_vector b1(3),b2(2);
sl@0
   105
		b1[0] = b1[2] = 1;
sl@0
   106
		b2[1] = 1;
sl@0
   107
		
sl@0
   108
		b1.max_size();
sl@0
   109
		CPPUNIT_ASSERT(b1.front() == 1);
sl@0
   110
		CPPUNIT_ASSERT(b1.back() == 1);
sl@0
   111
		b1.erase(b1.begin());
sl@0
   112
		CPPUNIT_ASSERT(b1.size() == 2);
sl@0
   113
		b1.erase(b1.begin(),b1.end());
sl@0
   114
		CPPUNIT_ASSERT(b1.size() == 0);
sl@0
   115
		CPPUNIT_ASSERT(b1.empty() == true);
sl@0
   116
		const bool &res1 = b2.at(0);
sl@0
   117
		CPPUNIT_ASSERT(res1 == false);
sl@0
   118
		CPPUNIT_ASSERT(b2.at(1) == true);
sl@0
   119
		b2.clear();
sl@0
   120
		CPPUNIT_ASSERT(b2.empty() == true);
sl@0
   121
		}
sl@0
   122
#endif	
sl@0
   123
//	__UHEAP_MARKEND;
sl@0
   124
	}
sl@0
   125
void BvectorTest::bvec_cov1()
sl@0
   126
	{
sl@0
   127
//	__UHEAP_MARK;
sl@0
   128
#if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS)
sl@0
   129
		{
sl@0
   130
		bit_vector b1(5),b2(2);
sl@0
   131
		b1[0] = b1[2] = 1;
sl@0
   132
		b2[1] = 1;
sl@0
   133
		
sl@0
   134
		b1.assign(b1.begin()+1,b1.begin()+3);
sl@0
   135
		CPPUNIT_ASSERT(b1.size() == 2);
sl@0
   136
		b1.assign(7,1);
sl@0
   137
		CPPUNIT_ASSERT(b1.size() == 7);
sl@0
   138
		b2.resize(3,1);
sl@0
   139
		CPPUNIT_ASSERT(b2.size() == 3);
sl@0
   140
		}
sl@0
   141
		{
sl@0
   142
		bit_vector b1(2),b2(2);
sl@0
   143
		b1[1] = 1;	
sl@0
   144
		b2[0] = 1;
sl@0
   145
		b1.flip();
sl@0
   146
		CPPUNIT_ASSERT(b1.front() == 1);
sl@0
   147
		CPPUNIT_ASSERT(b1.back() == 0);
sl@0
   148
		CPPUNIT_ASSERT(b1 == b2);
sl@0
   149
		CPPUNIT_ASSERT(!(b1 < b2));
sl@0
   150
		
sl@0
   151
		b2.reserve(10);
sl@0
   152
		CPPUNIT_ASSERT(b2.capacity() >= 10);
sl@0
   153
		}
sl@0
   154
		{
sl@0
   155
		bit_vector b(2);
sl@0
   156
		b[1] = 1;
sl@0
   157
		b.insert(b.begin(),1);	
sl@0
   158
		CPPUNIT_ASSERT(b.size() == 3);
sl@0
   159
		CPPUNIT_ASSERT(b.front() == 1);
sl@0
   160
		}
sl@0
   161
#endif	
sl@0
   162
//	__UHEAP_MARKEND;
sl@0
   163
	}