mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2025-08-09 20:24:16 +00:00
Use compile-time flag setting
This commit is contained in:
@@ -10,9 +10,65 @@ enum class TestFlag : uint8_t {
|
||||
};
|
||||
|
||||
/**
|
||||
* Test bitset flags
|
||||
* Test bitset flags (compile-time methods)
|
||||
*/
|
||||
TEST(FlagTests, FlagMethodTest) {
|
||||
TEST(FlagTests, FlagMethodTestCompileTime) {
|
||||
using enum TestFlag;
|
||||
|
||||
auto flag = Flag<TestFlag>{};
|
||||
|
||||
// Test setting and reading single flags, exclusively
|
||||
flag.Reset<FLAG0>();
|
||||
ASSERT_TRUE(flag.HasOnly<FLAG0>());
|
||||
flag.Reset<FLAG2>();
|
||||
ASSERT_TRUE(flag.HasOnly<FLAG2>());
|
||||
ASSERT_FALSE(flag.HasOnly<FLAG1>());
|
||||
|
||||
// Test setting and reading multiple flags, exclusively
|
||||
flag.Reset<FLAG3, FLAG1>();
|
||||
ASSERT_FALSE(flag.Has<FLAG2>());
|
||||
ASSERT_TRUE(flag.Has<FLAG3>());
|
||||
ASSERT_TRUE(flag.Has<FLAG1>());
|
||||
ASSERT_TRUE((flag.Has<FLAG3, FLAG1>()));
|
||||
ASSERT_FALSE(flag.HasOnly<FLAG3>());
|
||||
ASSERT_FALSE(flag.HasOnly<FLAG1>());
|
||||
ASSERT_TRUE((flag.HasOnly<FLAG3, FLAG1>()));
|
||||
|
||||
// Test flags are being properly reset for next batch of tests
|
||||
flag.Reset<FLAG0>();
|
||||
ASSERT_TRUE(flag.Has<FLAG0>());
|
||||
ASSERT_TRUE(flag.HasOnly<FLAG0>());
|
||||
ASSERT_FALSE(flag.Has<FLAG3>());
|
||||
ASSERT_FALSE((flag.Has<FLAG3, FLAG1, FLAG2>()));
|
||||
|
||||
// Test setting and reading single flags, non-exclusively
|
||||
flag.Set<FLAG3>();
|
||||
ASSERT_TRUE(flag.Has<FLAG3>());
|
||||
ASSERT_FALSE(flag.Has<FLAG1>());
|
||||
|
||||
// Test setting and reading multiple flags, non-exclusively
|
||||
flag.Set<FLAG2, FLAG4>();
|
||||
ASSERT_TRUE((flag.Has<FLAG2, FLAG4>()));
|
||||
ASSERT_TRUE(flag.Has<FLAG3>());
|
||||
ASSERT_FALSE((flag.Has<FLAG3, FLAG1>()));
|
||||
ASSERT_TRUE((flag.Has<FLAG3, FLAG2, FLAG4>()));
|
||||
ASSERT_FALSE(flag.Has<FLAG1>());
|
||||
ASSERT_FALSE((flag.Has<FLAG1, FLAG3, FLAG2, FLAG4>()));
|
||||
|
||||
// Test unsetting and reading multiple flags, non-exclusively
|
||||
flag.Unset<FLAG3, FLAG1>();
|
||||
ASSERT_FALSE((flag.Has<FLAG3, FLAG1>()));
|
||||
ASSERT_FALSE(flag.Has<FLAG3>());
|
||||
ASSERT_TRUE((flag.Has<FLAG2, FLAG4>()));
|
||||
ASSERT_FALSE((flag.Has<FLAG3, FLAG2, FLAG4>()));
|
||||
ASSERT_FALSE(flag.Has<FLAG1>());
|
||||
ASSERT_FALSE((flag.Has<FLAG1, FLAG3, FLAG2, FLAG4>()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test bitset flags (run-time methods)
|
||||
*/
|
||||
TEST(FlagTests, FlagMethodTestRunTime) {
|
||||
using enum TestFlag;
|
||||
|
||||
auto flag = Flag<TestFlag>{};
|
||||
@@ -64,4 +120,3 @@ TEST(FlagTests, FlagMethodTest) {
|
||||
ASSERT_FALSE(flag.Has(FLAG1));
|
||||
ASSERT_FALSE(flag.Has(FLAG1, FLAG3, FLAG2, FLAG4));
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user