添加my_enum1枚举及其位运算测试

This commit is contained in:
2026-01-03 01:20:50 +08:00
parent a83ce95393
commit 7dfce1484a
2 changed files with 32 additions and 0 deletions

10
tests/flag_enum_test.h Normal file
View File

@@ -0,0 +1,10 @@
#pragma once
#include "core/flag_enum.h"
enum class my_enum1 {
apple,
banana,
cherry
};
MIRAI_FLAG_ENUM(my_enum1)

View File

@@ -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);
}