Line data Source code
1 : //
2 : // Author: Vladimir Migashko <migashko@gmail.com>, (C) 2012
3 : //
4 : // Copyright: See COPYING file that comes with this distribution
5 : //
6 :
7 : #include <vset/multiset.hpp>
8 : #include <fas/testing.hpp>
9 :
10 3 : UNIT(multiset_basic, "")
11 : {
12 : using namespace fas::testing;
13 : using namespace vset;
14 :
15 : typedef multiset<int, std::greater<int> > multiset_type;
16 1 : multiset_type int_set;
17 :
18 1 : int_set.insert(1);
19 1 : int_set.insert(1);
20 1 : int_set.insert(1);
21 :
22 1 : int_set.insert(2);
23 1 : int_set.insert(2);
24 1 : int_set.insert(2);
25 :
26 1 : t << equal<expect, size_t>( int_set.size(), 6) << FAS_TESTING_FILE_LINE;
27 :
28 :
29 1 : multiset_type::iterator itr = int_set.find(2);
30 :
31 1 : int_set.erase(itr);
32 :
33 1 : t << equal<expect, size_t>( int_set.size(), 5) << FAS_TESTING_FILE_LINE;
34 :
35 1 : int_set.erase(1);
36 :
37 1 : t << equal<expect, size_t>( int_set.size(), 2) << FAS_TESTING_FILE_LINE;
38 :
39 :
40 1 : t << nothing;
41 1 : }
42 :
43 3 : UNIT(multiset_lower_up, "")
44 : {
45 : using namespace fas::testing;
46 1 : vset::multiset<int> ms;
47 1001 : for (int i=0; i < 1000; ++i)
48 1000 : ms.insert(i);
49 901 : for (int i=0; i < 900; ++i)
50 : {
51 900 : vset::multiset<int>::iterator lower = ms.lower_bound(i);
52 900 : vset::multiset<int>::iterator upper = ms.upper_bound(i + 10);
53 900 : t << equal<expect>( *lower, i ) << FAS_FL;
54 900 : t << equal<expect>( *(--upper), i+10 ) << FAS_FL;
55 1 : }
56 :
57 1 : }
58 :
59 1 : BEGIN_SUITE(multiset_suite, "")
60 : ADD_UNIT(multiset_basic)
61 : ADD_UNIT(multiset_lower_up)
62 7 : END_SUITE(multiset_suite)
|