4 #include <boost/test/auto_unit_test.hpp>
5 #include "zypp/base/Logger.h"
6 #include "zypp/base/Flags.h"
9 using boost::unit_test::test_case;
25 ZYPP_DECLARE_FLAGS( TFlags, TBits );
26 ZYPP_DECLARE_OPERATORS_FOR_FLAGS( TFlags );
28 static const TFlags T_6( T_4 | T_2 );
29 static const TFlags T_7( T_4 | T_2 | T_1 );
31 BOOST_AUTO_TEST_CASE(flags)
34 BOOST_CHECK_EQUAL( t0, 0 );
35 BOOST_CHECK_EQUAL( t0, T_0 );
36 BOOST_CHECK_EQUAL( t0, TFlags(0) );
37 BOOST_CHECK_EQUAL( ~t0, ~0 );
38 BOOST_CHECK_EQUAL( ~~t0, 0 );
39 BOOST_CHECK_EQUAL( ~t0, ~T_0 );
40 BOOST_CHECK_EQUAL( ~~t0, T_0 );
43 BOOST_CHECK_EQUAL( t1, 1 );
44 BOOST_CHECK_EQUAL( t1, T_1 );
45 BOOST_CHECK_EQUAL( t1, TFlags(1) );
48 // t = 1; // must not compile: assign from int_type
50 BOOST_CHECK_EQUAL( t, T_2 );
52 BOOST_CHECK_EQUAL( t, T_6 );
55 t = ~T_1; BOOST_CHECK_EQUAL( ~t, T_1 );
56 t = T_1 & T_2; BOOST_CHECK_EQUAL( t, T_0 );
57 t = T_1 | T_2; BOOST_CHECK_EQUAL( t, T_3 );
58 t = T_1 ^ T_2; BOOST_CHECK_EQUAL( t, T_3 );
61 t = T_2 & T_6; BOOST_CHECK_EQUAL( t, T_2 );
62 t = T_2 | T_6; BOOST_CHECK_EQUAL( t, T_6 );
63 t = T_2 ^ T_6; BOOST_CHECK_EQUAL( t, T_4 );
66 t = ~T_7; BOOST_CHECK_EQUAL( ~t, T_7 );
67 t = T_7 & T_2; BOOST_CHECK_EQUAL( t, T_2 );
68 t = T_7 | T_2; BOOST_CHECK_EQUAL( t, T_7 );
69 t = T_7 ^ T_2; BOOST_CHECK_EQUAL( t, T_5 );
72 t = T_7 & T_6; BOOST_CHECK_EQUAL( t, T_6 );
73 t = T_7 | T_6; BOOST_CHECK_EQUAL( t, T_7 );
74 t = T_7 ^ T_7; BOOST_CHECK_EQUAL( t, T_0 );
78 BOOST_CHECK( t.testFlag( T_1 ) );
79 BOOST_CHECK( t.testFlag( T_2 ) );
80 BOOST_CHECK( t.testFlag( T_3 ) );
81 t.unsetFlag( T_2 ); BOOST_CHECK( t.testFlag( T_1 ) );
82 t.setFlag( T_1, false ); BOOST_CHECK( t.testFlag( T_0 ) );
83 t.setFlag( T_3, true ); BOOST_CHECK( t.testFlag( T_3 ) );