a6ec55b78f4c538ab994a19cf4283fee7cce40d2
[platform/upstream/libzypp.git] / tests / sat / Map_test.cc
1 #include <stdio.h>
2 #include <iostream>
3 #include <boost/test/auto_unit_test.hpp>
4
5 #include "zypp/base/LogTools.h"
6 #include "zypp/base/Easy.h"
7 #include "zypp/sat/Map.h"
8
9
10 #define BOOST_TEST_MODULE Map
11
12 using std::endl;
13 using std::cout;
14 using namespace zypp;
15 using namespace boost::unit_test;
16
17
18 BOOST_AUTO_TEST_CASE(basic)
19 {
20   sat::Map m;
21   BOOST_CHECK_EQUAL( m.empty(), true );
22   BOOST_CHECK_EQUAL( m.size(), 0 );
23   BOOST_CHECK_EQUAL( m.asString(), "" );
24   BOOST_CHECK( m == sat::Map() );
25
26   m.grow( 8 );
27   BOOST_CHECK_EQUAL( m.empty(), false );
28   BOOST_CHECK_EQUAL( m.size(), 8 );
29   BOOST_CHECK_EQUAL( m.asString(), "00000000" );
30   BOOST_CHECK( m != sat::Map() );
31
32   m.grow( 9 );
33   BOOST_CHECK_EQUAL( m.empty(), false );
34   BOOST_CHECK_EQUAL( m.size(), 16 );
35   BOOST_CHECK_EQUAL( m.asString(), "0000000000000000" );
36
37   m.grow( 0 ); // no shrink!
38   BOOST_CHECK_EQUAL( m.size(), 16 );
39
40   m.setAll();
41   BOOST_CHECK_EQUAL( m.asString(), "1111111111111111" );
42
43   m.clear( 0 );
44   m.assign( 3, false );
45   BOOST_CHECK_EQUAL( m.asString(), "0110111111111111" );
46   BOOST_CHECK_EQUAL( m.test( 0 ), false );
47   BOOST_CHECK_EQUAL( m.test( 1 ), true );
48
49   // COW
50   m.clearAll();
51   sat::Map n(m);
52   BOOST_CHECK_EQUAL( m.asString(), "0000000000000000" );
53   BOOST_CHECK_EQUAL( n.asString(), "0000000000000000" );
54   BOOST_CHECK_EQUAL( m, n );
55
56   m.set( 1 );
57   BOOST_CHECK_EQUAL( m.asString(), "0100000000000000" );
58   BOOST_CHECK_EQUAL( n.asString(), "0000000000000000" );
59   BOOST_CHECK( m != n );
60
61   n.set( 1 );
62   BOOST_CHECK_EQUAL( m.asString(), "0100000000000000" );
63   BOOST_CHECK_EQUAL( n.asString(), "0100000000000000" );
64   BOOST_CHECK( m == n );
65
66
67   BOOST_CHECK_THROW( m.set( 99 ), std::out_of_range );
68 }