添加my_enum1枚举及其位运算测试
This commit is contained in:
10
tests/flag_enum_test.h
Normal file
10
tests/flag_enum_test.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#pragma once
|
||||
#include "core/flag_enum.h"
|
||||
|
||||
enum class my_enum1 {
|
||||
apple,
|
||||
banana,
|
||||
cherry
|
||||
};
|
||||
|
||||
MIRAI_FLAG_ENUM(my_enum1)
|
||||
@@ -1,5 +1,6 @@
|
||||
#include <gtest/gtest.h>
|
||||
#include "object_test.h"
|
||||
#include "flag_enum_test.h"
|
||||
|
||||
TEST(test_object, derived) {
|
||||
auto test_obj = mirai::make_obj<test_class1>();
|
||||
@@ -23,3 +24,24 @@ TEST(test_object, derived) {
|
||||
EXPECT_EQ(test_obj->type_name(), "class test_class1");
|
||||
EXPECT_EQ(test_obj2->type_name(), "class test_class2");
|
||||
}
|
||||
|
||||
TEST(test_flag_enum, basic_operations) {
|
||||
my_enum1 flags = my_enum1::apple | my_enum1::banana;
|
||||
|
||||
// 检查按位或操作
|
||||
EXPECT_EQ(flags & my_enum1::apple, my_enum1::apple);
|
||||
EXPECT_EQ(flags & my_enum1::banana, my_enum1::banana);
|
||||
EXPECT_EQ(flags & my_enum1::cherry, static_cast<my_enum1>(0));
|
||||
|
||||
// 检查按位与操作
|
||||
flags &= my_enum1::apple;
|
||||
EXPECT_EQ(flags, my_enum1::apple);
|
||||
|
||||
// 检查按位异或操作
|
||||
flags ^= my_enum1::banana;
|
||||
EXPECT_EQ(flags, my_enum1::apple | my_enum1::banana);
|
||||
|
||||
// 检查按位非操作
|
||||
auto not_flags = ~flags;
|
||||
EXPECT_EQ(not_flags & my_enum1::cherry, my_enum1::cherry);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user