diff --git a/src/AST/Enumeration.cs b/src/AST/Enumeration.cs index 88acd292..8d0fd59a 100644 --- a/src/AST/Enumeration.cs +++ b/src/AST/Enumeration.cs @@ -56,10 +56,11 @@ namespace CppSharp.AST public string GetItemValueAsString(Item item) { - var format = item.IsHexadecimal ? "x" : string.Empty; + var printAsHex = item.IsHexadecimal && BuiltinType.IsUnsigned; + var format = printAsHex ? "x" : string.Empty; var value = BuiltinType.IsUnsigned ? item.Value.ToString(format) : ((long)item.Value).ToString(format); - return item.IsHexadecimal ? "0x" + value : value; + return printAsHex ? "0x" + value : value; } public Enumeration SetFlags() diff --git a/tests/Basic/Basic.Tests.cs b/tests/Basic/Basic.Tests.cs index c676c27b..fafa1a92 100644 --- a/tests/Basic/Basic.Tests.cs +++ b/tests/Basic/Basic.Tests.cs @@ -38,6 +38,9 @@ public class BasicTests Assert.That(hello.RetEnum(Enum.A), Is.EqualTo(0)); Assert.That(hello.RetEnum(Enum.B), Is.EqualTo(2)); Assert.That(hello.RetEnum(Enum.C), Is.EqualTo(5)); + Assert.That(hello.RetEnum(Enum.D), Is.EqualTo(-2147483648)); + Assert.That(hello.RetEnum(Enum.E), Is.EqualTo(1)); + Assert.That(hello.RetEnum(Enum.F), Is.EqualTo(-9)); } static void Main(string[] args) diff --git a/tests/Basic/Basic.h b/tests/Basic/Basic.h index 9f289f1e..bb6bcdb9 100644 --- a/tests/Basic/Basic.h +++ b/tests/Basic/Basic.h @@ -34,7 +34,10 @@ struct DLL_API Bar2 : public Bar enum Enum { - A = 0, B = 2, C = 5 + A = 0, B = 2, C = 5, + Signed = 0x80000000, + F = 0x1, + H = -9 }; class DLL_API Hello @@ -57,4 +60,4 @@ public: int AddBar2(Bar2); int RetEnum(Enum); -}; +}; \ No newline at end of file