From adf9b1b91586bef6749c3774cd7975b0df8d6377 Mon Sep 17 00:00:00 2001 From: yanghuan Date: Mon, 3 Jun 2024 19:43:17 +0800 Subject: [PATCH] fix #511 --- CSharp.lua/CoreSystem.Lua/CoreSystem/Enum.lua | 2 +- .../Batch1/src/BasicCSharp/TestFromIssue.cs | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/CSharp.lua/CoreSystem.Lua/CoreSystem/Enum.lua b/CSharp.lua/CoreSystem.Lua/CoreSystem/Enum.lua index 4fbe3573..8dcf368f 100644 --- a/CSharp.lua/CoreSystem.Lua/CoreSystem/Enum.lua +++ b/CSharp.lua/CoreSystem.Lua/CoreSystem/Enum.lua @@ -44,7 +44,7 @@ local function hasFlag(this, flag) if this == flag then return true end - return band(this, flag) ~= 0 + return band(this, flag) == flag end Number.EnumToString = toString diff --git a/test/BridgeNetTests/Batch1/src/BasicCSharp/TestFromIssue.cs b/test/BridgeNetTests/Batch1/src/BasicCSharp/TestFromIssue.cs index 88c3ae22..8ea39740 100644 --- a/test/BridgeNetTests/Batch1/src/BasicCSharp/TestFromIssue.cs +++ b/test/BridgeNetTests/Batch1/src/BasicCSharp/TestFromIssue.cs @@ -149,6 +149,17 @@ public static void TestOf472() Assert.AreEqual(Context.Instance, 2); } + [Test] + public static void TestOf511() { + Assert.AreEqual(TestFlag.None.HasFlag(TestFlag.None), true); + Assert.AreEqual(TestFlag.None.HasFlag(TestFlag.A), false); + Assert.AreEqual(TestFlag.A.HasFlag(TestFlag.None), true); + Assert.AreEqual(TestFlag.A.HasFlag(TestFlag.A), true); + Assert.AreEqual(TestFlag.A.HasFlag(TestFlag.A | TestFlag.B), false); + Assert.AreEqual((TestFlag.A | TestFlag.B).HasFlag(TestFlag.A), true); + Assert.AreEqual((TestFlag.A | TestFlag.B).HasFlag(TestFlag.A | TestFlag.C), false); + } + private class BattleModelSlotPrototype { public string a; public string b; @@ -221,4 +232,13 @@ static LuaContext() Instance = 1; } } + + [Flags] + public enum TestFlag + { + None = 0, + A = 1, + B = 2, + C = 4, + } }