]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
test/mon: few more cases for mon_feature_t
authorJoao Eduardo Luis <joao@suse.de>
Sat, 20 Aug 2016 12:04:28 +0000 (13:04 +0100)
committerJoao Eduardo Luis <joao@suse.de>
Wed, 2 Nov 2016 23:50:12 +0000 (23:50 +0000)
Signed-off-by: Joao Eduardo Luis <joao@suse.de>
src/test/mon/test_mon_types.cc

index 255839a037f1a8bb047d605c9ea517833e442648..3ffb49dbccd87f9e40a9ab3321bfc176773183fa 100644 (file)
@@ -112,3 +112,30 @@ TEST(mon_features, set_funcs) {
   ASSERT_EQ(foo.intersection(FEATURE_ALL), foo);
   ASSERT_EQ(bar.intersection(FEATURE_ALL), bar);
 }
+
+TEST(mon_features, set_unset) {
+
+  mon_feature_t FEATURE_A((1ULL << 1));
+  mon_feature_t FEATURE_B((1ULL << 2));
+  mon_feature_t FEATURE_C((1ULL << 3));
+
+  mon_feature_t foo;
+  ASSERT_EQ(ceph::features::mon::FEATURE_NONE, foo);
+
+  foo.set_feature(FEATURE_A);
+  ASSERT_EQ(FEATURE_A, foo);
+  ASSERT_TRUE(foo.contains_all(FEATURE_A));
+
+  foo.set_feature(FEATURE_B|FEATURE_C);
+  ASSERT_EQ((FEATURE_A|FEATURE_B|FEATURE_C), foo);
+  ASSERT_TRUE(foo.contains_all((FEATURE_A|FEATURE_B|FEATURE_C)));
+
+  foo.unset_feature(FEATURE_A);
+  ASSERT_EQ((FEATURE_B|FEATURE_C), foo);
+  ASSERT_FALSE(foo.contains_any(FEATURE_A));
+  ASSERT_TRUE(foo.contains_all((FEATURE_B|FEATURE_C)));
+
+  foo.unset_feature(FEATURE_B|FEATURE_C);
+  ASSERT_EQ(ceph::features::mon::FEATURE_NONE, foo);
+  ASSERT_FALSE(foo.contains_any(FEATURE_A|FEATURE_B|FEATURE_C));
+}