Browse Source

Fixed issue with signed enum constants with tests.

pull/43/head
triton 13 years ago
parent
commit
523e8d7989
  1. 5
      src/AST/Enumeration.cs
  2. 3
      tests/Basic/Basic.Tests.cs
  3. 7
      tests/Basic/Basic.h

5
src/AST/Enumeration.cs

@ -56,10 +56,11 @@ namespace CppSharp.AST @@ -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()

3
tests/Basic/Basic.Tests.cs

@ -38,6 +38,9 @@ public class BasicTests @@ -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)

7
tests/Basic/Basic.h

@ -34,7 +34,10 @@ struct DLL_API Bar2 : public Bar @@ -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: @@ -57,4 +60,4 @@ public:
int AddBar2(Bar2);
int RetEnum(Enum);
};
};
Loading…
Cancel
Save