enum_set: add toggle()
This commit is contained in:
@@ -239,6 +239,15 @@ public:
|
||||
_mask |= mask_for(e);
|
||||
}
|
||||
|
||||
template<enum_type e>
|
||||
void toggle() {
|
||||
_mask ^= mask_for<e>();
|
||||
}
|
||||
|
||||
void toggle(enum_type e) {
|
||||
_mask ^= mask_for(e);
|
||||
}
|
||||
|
||||
void add(const enum_set& other) {
|
||||
_mask |= other._mask;
|
||||
}
|
||||
|
||||
@@ -150,3 +150,60 @@ BOOST_AUTO_TEST_CASE(set_add) {
|
||||
fs0.add(fruit_set::of<fruit::apple>());
|
||||
BOOST_REQUIRE(!fs0.contains(fruit::pear) && fs0.contains(fruit::apple) && !fs0.contains(fruit::banana));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(set_toggle) {
|
||||
auto fs = fruit_set();
|
||||
fs.set<fruit::pear>();
|
||||
|
||||
BOOST_REQUIRE(!fs.contains<fruit::apple>());
|
||||
BOOST_REQUIRE(fs.contains<fruit::pear>());
|
||||
BOOST_REQUIRE(!fs.contains<fruit::banana>());
|
||||
|
||||
fs.toggle<fruit::pear>();
|
||||
|
||||
BOOST_REQUIRE(!fs.contains<fruit::apple>());
|
||||
BOOST_REQUIRE(!fs.contains<fruit::pear>());
|
||||
BOOST_REQUIRE(!fs.contains<fruit::banana>());
|
||||
|
||||
fs.toggle<fruit::pear>();
|
||||
|
||||
BOOST_REQUIRE(!fs.contains<fruit::apple>());
|
||||
BOOST_REQUIRE(fs.contains<fruit::pear>());
|
||||
BOOST_REQUIRE(!fs.contains<fruit::banana>());
|
||||
|
||||
fs.toggle(fruit::pear);
|
||||
|
||||
BOOST_REQUIRE(!fs.contains<fruit::apple>());
|
||||
BOOST_REQUIRE(!fs.contains<fruit::pear>());
|
||||
BOOST_REQUIRE(!fs.contains<fruit::banana>());
|
||||
|
||||
fs.toggle(fruit::pear);
|
||||
|
||||
BOOST_REQUIRE(!fs.contains<fruit::apple>());
|
||||
BOOST_REQUIRE(fs.contains<fruit::pear>());
|
||||
BOOST_REQUIRE(!fs.contains<fruit::banana>());
|
||||
|
||||
fs.toggle<fruit::banana>();
|
||||
|
||||
BOOST_REQUIRE(!fs.contains<fruit::apple>());
|
||||
BOOST_REQUIRE(fs.contains<fruit::pear>());
|
||||
BOOST_REQUIRE(fs.contains<fruit::banana>());
|
||||
|
||||
fs.toggle<fruit::apple>();
|
||||
|
||||
BOOST_REQUIRE(fs.contains<fruit::apple>());
|
||||
BOOST_REQUIRE(fs.contains<fruit::pear>());
|
||||
BOOST_REQUIRE(fs.contains<fruit::banana>());
|
||||
|
||||
fs.toggle(fruit::banana);
|
||||
|
||||
BOOST_REQUIRE(fs.contains<fruit::apple>());
|
||||
BOOST_REQUIRE(fs.contains<fruit::pear>());
|
||||
BOOST_REQUIRE(!fs.contains<fruit::banana>());
|
||||
|
||||
fs.toggle(fruit::apple);
|
||||
|
||||
BOOST_REQUIRE(!fs.contains<fruit::apple>());
|
||||
BOOST_REQUIRE(fs.contains<fruit::pear>());
|
||||
BOOST_REQUIRE(!fs.contains<fruit::banana>());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user