2 #include <boost/test/auto_unit_test.hpp>
3 #include "zypp/base/LogTools.h"
4 #include "zypp/base/SetTracker.h"
6 typedef std::set<int> SetType;
9 inline ostream & operator<<( ostream & str, const SetType & obj )
10 { return zypp::dumpRangeLine( str, obj.begin(), obj.end() ); }
12 typedef zypp::base::SetTracker<SetType> Tracker;
15 std::set<int> s1 ({1});
16 std::set<int> s2 ({2});
17 std::set<int> s3 ({3});
18 std::set<int> s12 ({1,2});
19 std::set<int> s13 ({1,3});
20 std::set<int> s23 ({2,3});
21 std::set<int> s123 ({1,2,3});
24 BOOST_AUTO_TEST_CASE(basic)
27 BOOST_CHECK_EQUAL( t.current(), s );
28 BOOST_CHECK_EQUAL( t.added(), s );
29 BOOST_CHECK_EQUAL( t.removed(), s );
31 BOOST_CHECK( t.add( 1 ) );
32 BOOST_CHECK_EQUAL( t.current(), s1 );
33 BOOST_CHECK_EQUAL( t.added(), s1 );
34 BOOST_CHECK_EQUAL( t.removed(), s );
36 BOOST_CHECK( !t.add( 1 ) );
37 BOOST_CHECK_EQUAL( t.current(), s1 );
38 BOOST_CHECK_EQUAL( t.added(), s1 );
39 BOOST_CHECK_EQUAL( t.removed(), s );
41 BOOST_CHECK( t.add( 2 ) );
42 BOOST_CHECK_EQUAL( t.current(), s12 );
43 BOOST_CHECK_EQUAL( t.added(), s12 );
44 BOOST_CHECK_EQUAL( t.removed(), s );
46 BOOST_CHECK( t.remove( 1 ) );
47 BOOST_CHECK_EQUAL( t.current(), s2 );
48 BOOST_CHECK_EQUAL( t.added(), s2 );
49 BOOST_CHECK_EQUAL( t.removed(), s );
51 BOOST_CHECK( t.set( s3 ) );
52 BOOST_CHECK_EQUAL( t.current(), s3 );
53 BOOST_CHECK_EQUAL( t.added(), s3 );
54 BOOST_CHECK_EQUAL( t.removed(), s );
56 BOOST_CHECK( t.add( 2 ) );
57 BOOST_CHECK_EQUAL( t.current(), s23 );
58 BOOST_CHECK_EQUAL( t.added(), s23 );
59 BOOST_CHECK_EQUAL( t.removed(), s );
61 BOOST_CHECK( t.remove( 2 ) );
62 BOOST_CHECK_EQUAL( t.current(), s3 );
63 BOOST_CHECK_EQUAL( t.added(), s3 );
64 BOOST_CHECK_EQUAL( t.removed(), s );
66 BOOST_CHECK( ! t.remove( 2 ) );
67 BOOST_CHECK_EQUAL( t.current(), s3 );
68 BOOST_CHECK_EQUAL( t.added(), s3 );
69 BOOST_CHECK_EQUAL( t.removed(), s );
71 BOOST_CHECK( t.set( s ) );
72 BOOST_CHECK_EQUAL( t.current(), s );
73 BOOST_CHECK_EQUAL( t.added(), s );
74 BOOST_CHECK_EQUAL( t.removed(), s );
76 //----------------------------------------------------------------------
78 BOOST_CHECK( t.setInitial( s2 ) );
79 BOOST_CHECK_EQUAL( t.current(), s2 );
80 BOOST_CHECK_EQUAL( t.added(), s );
81 BOOST_CHECK_EQUAL( t.removed(), s );
83 BOOST_CHECK( t.set( s13 ) );
84 BOOST_CHECK_EQUAL( t.current(), s13 );
85 BOOST_CHECK_EQUAL( t.added(), s13 );
86 BOOST_CHECK_EQUAL( t.removed(), s2 );
88 BOOST_CHECK( t.set( s123 ) );
89 BOOST_CHECK_EQUAL( t.current(), s123 );
90 BOOST_CHECK_EQUAL( t.added(), s13 );
91 BOOST_CHECK_EQUAL( t.removed(), s );
93 BOOST_CHECK( t.set( s ) );
94 BOOST_CHECK_EQUAL( t.current(), s );
95 BOOST_CHECK_EQUAL( t.added(), s );
96 BOOST_CHECK_EQUAL( t.removed(), s2 );
98 BOOST_CHECK( t.set( s2 ) );
99 BOOST_CHECK_EQUAL( t.current(), s2 );
100 BOOST_CHECK_EQUAL( t.added(), s );
101 BOOST_CHECK_EQUAL( t.removed(), s );