stdcpp/tsrc/Boost_test/multi_index/src/test_capacity.cpp
changeset 31 ce057bb09d0b
parent 0 e4d67989cc36
equal deleted inserted replaced
30:e20de85af2ee 31:ce057bb09d0b
       
     1 /* Boost.MultiIndex test for capacity memfuns.
       
     2  *
       
     3  * Copyright 2003-2006 Joaquín M López Muñoz.
       
     4  * Distributed under the Boost Software License, Version 1.0.
       
     5  * (See accompanying file LICENSE_1_0.txt or copy at
       
     6  * http://www.boost.org/LICENSE_1_0.txt)
       
     7  *
       
     8  * See http://www.boost.org/libs/multi_index for library home page.
       
     9  */
       
    10 
       
    11 #include "test_capacity.hpp"
       
    12 
       
    13 #include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
       
    14 #include "pre_multi_index.hpp"
       
    15 #include "employee.hpp"
       
    16 #include <boost/test/test_tools.hpp>
       
    17 
       
    18 using namespace boost::multi_index;
       
    19 
       
    20 void test_capacity()
       
    21 {
       
    22   employee_set es;
       
    23 
       
    24   es.insert(employee(0,"Joe",31,1123));
       
    25   es.insert(employee(1,"Robert",27,5601));
       
    26   es.insert(employee(2,"John",40,7889));
       
    27   es.insert(employee(3,"Albert",20,9012));
       
    28   es.insert(employee(4,"John",57,1002));
       
    29 
       
    30   BOOST_CHECK(!es.empty());
       
    31   BOOST_CHECK(es.size()==5);
       
    32   BOOST_CHECK(es.size()<=es.max_size());
       
    33 
       
    34   es.erase(es.begin());
       
    35   BOOST_CHECK(!get<name>(es).empty());
       
    36   BOOST_CHECK(get<name>(es).size()==4);
       
    37   BOOST_CHECK(get<name>(es).size()<=get<name>(es).max_size());
       
    38 
       
    39   es.erase(es.begin());
       
    40   BOOST_CHECK(!get<as_inserted>(es).empty());
       
    41   BOOST_CHECK(get<as_inserted>(es).size()==3);
       
    42   BOOST_CHECK(get<as_inserted>(es).size()<=get<as_inserted>(es).max_size());
       
    43 
       
    44   multi_index_container<int,indexed_by<sequenced<> > > ss;
       
    45 
       
    46   ss.resize(10);
       
    47   BOOST_CHECK(ss.size()==10);
       
    48   BOOST_CHECK(ss.size()<=ss.max_size());
       
    49 
       
    50   ss.resize(20);
       
    51   BOOST_CHECK(ss.size()==20);
       
    52 
       
    53   ss.resize(5);
       
    54   BOOST_CHECK(ss.size()==5);
       
    55 
       
    56   multi_index_container<int,indexed_by<random_access<> > > rs;
       
    57 
       
    58   rs.resize(10);
       
    59   BOOST_CHECK(rs.size()==10);
       
    60   BOOST_CHECK(rs.size()<=rs.max_size());
       
    61   BOOST_CHECK(rs.size()<=rs.capacity());
       
    62 
       
    63   rs.resize(20);
       
    64   BOOST_CHECK(rs.size()==20);
       
    65   BOOST_CHECK(rs.size()<=rs.capacity());
       
    66 
       
    67   unsigned int c=rs.capacity();
       
    68   rs.resize(5);
       
    69   BOOST_CHECK(rs.size()==5);
       
    70   BOOST_CHECK(rs.capacity()==c);
       
    71 
       
    72   rs.reserve(100);
       
    73   BOOST_CHECK(rs.size()==5);
       
    74   BOOST_CHECK(rs.capacity()>=100);
       
    75 
       
    76   c=rs.capacity();
       
    77   rs.reserve(99);
       
    78   BOOST_CHECK(rs.size()==5);
       
    79   BOOST_CHECK(rs.capacity()==c);
       
    80 }