Imported Upstream version 14.45.0
[platform/upstream/libzypp.git] / tests / zypp / Flags_test.cc
index a6ca80b..95dee3c 100644 (file)
@@ -11,82 +11,74 @@ using std::cout;
 using std::endl;
 using namespace zypp;
 
-enum class E
+enum TBits
 {
-  _0   = 0,
-  _1   = 1 << 0,
-  _2   = 1 << 1,
-  _3   = _2 | _1,
-  _4   = 1 << 2,
-  _5   = _4 | _1,
-  _8   = 1 << 3,
+  T_0  = 0,
+  T_1  = 1 << 0,
+  T_2  = 1 << 1,
+  T_3  = T_2 | T_1,
+  T_4  = 1 << 2,
+  T_5  = T_4 | T_1,
+  T_8  = 1 << 3,
 };
 
-ZYPP_DECLARE_FLAGS( TFlags, E );
+ZYPP_DECLARE_FLAGS( TFlags, TBits );
 ZYPP_DECLARE_OPERATORS_FOR_FLAGS( TFlags );
 
-inline std::ostream & operator<<( std::ostream & str, const E & obj )
-{ return str << TFlags(obj); }
-
-static const TFlags T_6( E::_4 | E::_2 );
-static const TFlags T_7( E::_4 | E::_2 | E::_1 );
-
+static const TFlags T_6( T_4 | T_2 );
+static const TFlags T_7( T_4 | T_2 | T_1 );
 
 BOOST_AUTO_TEST_CASE(flags)
 {
   TFlags t0;
   BOOST_CHECK_EQUAL( t0, 0 );
-  BOOST_CHECK_EQUAL( E::_0, t0 );
-  BOOST_CHECK_EQUAL( t0, E::_0 );
+  BOOST_CHECK_EQUAL( t0, T_0 );
   BOOST_CHECK_EQUAL( t0, TFlags(0) );
   BOOST_CHECK_EQUAL( ~t0, ~0 );
   BOOST_CHECK_EQUAL( ~~t0, 0 );
-  BOOST_CHECK_EQUAL( ~t0, ~E::_0 );
-  BOOST_CHECK_EQUAL( ~~t0, E::_0 );
-
-  BOOST_CHECK_EQUAL( TFlags::none(), TFlags(0) );
-  BOOST_CHECK_EQUAL( TFlags::all(), ~TFlags(0) );
+  BOOST_CHECK_EQUAL( ~t0, ~T_0 );
+  BOOST_CHECK_EQUAL( ~~t0, T_0 );
 
-  TFlags t1( E::_1 );
+  TFlags t1( T_1 );
   BOOST_CHECK_EQUAL( t1, 1 );
-  BOOST_CHECK_EQUAL( t1, E::_1 );
+  BOOST_CHECK_EQUAL( t1, T_1 );
   BOOST_CHECK_EQUAL( t1, TFlags(1) );
 
   TFlags t;
-  //t = 1;     // must not compile: assign from int_type
-  t = E::_2;   // = enum
-  BOOST_CHECK_EQUAL( t, E::_2 );
+  // t = 1;    // must not compile: assign from int_type
+  t = T_2;     // = enum
+  BOOST_CHECK_EQUAL( t, T_2 );
   t = T_6;     // = TFlags
   BOOST_CHECK_EQUAL( t, T_6 );
 
   // enum op enum
-  t = ~E::_1;          BOOST_CHECK_EQUAL( ~t, E::_1 );
-  t = E::_1 & E::_2;   BOOST_CHECK_EQUAL( t, E::_0 );
-  t = E::_1 | E::_2;   BOOST_CHECK_EQUAL( t, E::_3 );
-  t = E::_1 ^ E::_2;   BOOST_CHECK_EQUAL( t, E::_3 );
+  t = ~T_1;     BOOST_CHECK_EQUAL( ~t, T_1 );
+  t = T_1 & T_2; BOOST_CHECK_EQUAL( t, T_0 );
+  t = T_1 | T_2; BOOST_CHECK_EQUAL( t, T_3 );
+  t = T_1 ^ T_2; BOOST_CHECK_EQUAL( t, T_3 );
 
   // enum op TFlags
-  t = E::_2 & T_6;     BOOST_CHECK_EQUAL( t, E::_2 );
-  t = E::_2 | T_6;     BOOST_CHECK_EQUAL( t, T_6 );
-  t = E::_2 ^ T_6;     BOOST_CHECK_EQUAL( t, E::_4 );
+  t = T_2 & T_6; BOOST_CHECK_EQUAL( t, T_2 );
+  t = T_2 | T_6; BOOST_CHECK_EQUAL( t, T_6 );
+  t = T_2 ^ T_6; BOOST_CHECK_EQUAL( t, T_4 );
+
+  // TFlags op enum
+  t = ~T_7;     BOOST_CHECK_EQUAL( ~t, T_7 );
+  t = T_7 & T_2; BOOST_CHECK_EQUAL( t, T_2 );
+  t = T_7 | T_2; BOOST_CHECK_EQUAL( t, T_7 );
+  t = T_7 ^ T_2; BOOST_CHECK_EQUAL( t, T_5 );
 
   // TFlags op enum
-  t = ~T_7;            BOOST_CHECK_EQUAL( ~t, T_7 );
-  t = T_7 & E::_2;     BOOST_CHECK_EQUAL( t, E::_2 );
-  t = T_7 | E::_2;     BOOST_CHECK_EQUAL( t, T_7 );
-  t = T_7 ^ E::_2;     BOOST_CHECK_EQUAL( t, E::_5 );
+  t = T_7 & T_6; BOOST_CHECK_EQUAL( t, T_6 );
+  t = T_7 | T_6; BOOST_CHECK_EQUAL( t, T_7 );
+  t = T_7 ^ T_7; BOOST_CHECK_EQUAL( t, T_0 );
 
-  // TFlags op TFlags
-  t = T_7 & T_6;       BOOST_CHECK_EQUAL( t, T_6 );
-  t = T_7 | T_6;       BOOST_CHECK_EQUAL( t, T_7 );
-  t = T_7 ^ T_7;       BOOST_CHECK_EQUAL( t, E::_0 );
 
-  t = E::_3;
-  BOOST_CHECK( ! t.testFlag( E::_0 ) );        // fails as t != 0
-  BOOST_CHECK( t.testFlag( E::_1 ) );
-  BOOST_CHECK( t.testFlag( E::_2 ) );
-  BOOST_CHECK( t.testFlag( E::_3 ) );
-  t.unsetFlag( E::_2 );                BOOST_CHECK( t.testFlag( E::_1 ) );
-  t.setFlag( E::_1, false );   BOOST_CHECK( t.testFlag( E::_0 ) );             // succeed as t == 0
-  t.setFlag( E::_3, true );    BOOST_CHECK( t.testFlag( E::_3 ) );
+  t = T_3;
+  BOOST_CHECK( t.testFlag( T_1 ) );
+  BOOST_CHECK( t.testFlag( T_2 ) );
+  BOOST_CHECK( t.testFlag( T_3 ) );
+  t.unsetFlag( T_2 );          BOOST_CHECK( t.testFlag( T_1 ) );
+  t.setFlag( T_1, false );     BOOST_CHECK( t.testFlag( T_0 ) );
+  t.setFlag( T_3, true );      BOOST_CHECK( t.testFlag( T_3 ) );
 }