enum_set: Introduce full()
This commit is contained in:
@@ -172,6 +172,14 @@ public:
|
||||
return enum_set(mask);
|
||||
}
|
||||
|
||||
static constexpr mask_type full_mask() {
|
||||
return ~(std::numeric_limits<mask_type>::max() << (Enum::max_sequence + 1));
|
||||
}
|
||||
|
||||
static constexpr enum_set full() {
|
||||
return enum_set(full_mask());
|
||||
}
|
||||
|
||||
static inline mask_type mask_for(enum_type e) {
|
||||
return mask_type(1) << Enum::sequence_for(e);
|
||||
}
|
||||
|
||||
@@ -79,6 +79,13 @@ BOOST_AUTO_TEST_CASE(set_contains) {
|
||||
BOOST_REQUIRE(!fs.contains(fruit::pear));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(full_set) {
|
||||
const auto fs = fruit_set::full();
|
||||
BOOST_REQUIRE(fs.contains(fruit::apple));
|
||||
BOOST_REQUIRE(fs.contains(fruit::pear));
|
||||
BOOST_REQUIRE(fs.contains(fruit::banana));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(set_from_mask) {
|
||||
const auto fs = fruit_set::of<fruit::apple, fruit::banana>();
|
||||
BOOST_REQUIRE_EQUAL(fs.mask(), fruit_set::from_mask(fs.mask()).mask());
|
||||
|
||||
Reference in New Issue
Block a user