Skip to content

Commit 1d1fd58

Browse files
committed
Add enum base type validation tests
1 parent 7fb5e06 commit 1d1fd58

File tree

3 files changed

+37
-7
lines changed

3 files changed

+37
-7
lines changed

src/Generator.Tests/CppSharp.Generator.Tests.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22
<ItemGroup>
3-
<None Include="..\..\tests\Native\AST.h" LinkBase="tests\Native" />
4-
<None Include="..\..\tests\Native\ASTExtensions.h" LinkBase="tests\Native" />
5-
<None Include="..\..\tests\Native\Passes.h" LinkBase="tests\Native" />
3+
<None Include="..\..\tests\dotnet\Native\AST.h" LinkBase="tests\Native" />
4+
<None Include="..\..\tests\dotnet\Native\ASTExtensions.h" LinkBase="tests\Native" />
5+
<None Include="..\..\tests\dotnet\Native\Passes.h" LinkBase="tests\Native" />
66
</ItemGroup>
77
<ItemGroup>
88
<ProjectReference Include="..\Generator\CppSharp.Generator.csproj" />

src/Generator.Tests/Passes/TestPasses.cs

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,19 +39,35 @@ public void TestExtractInterfacePass()
3939
}
4040

4141
[Test]
42-
public void TestCheckFlagEnumsPass()
42+
public void TestCheckEnumsPass()
4343
{
4444
var @enum = AstContext.Enum("FlagEnum");
45+
var enum2 = AstContext.Enum("FlagEnum2");
46+
var boolClassEnum = AstContext.Enum("BoolEnum");
47+
var ucharClassEnum = AstContext.Enum("UCharEnum");
48+
4549
Assert.IsFalse(@enum.IsFlags);
50+
Assert.IsFalse(enum2.IsFlags);
51+
Assert.IsFalse(boolClassEnum.IsFlags);
52+
Assert.IsFalse(ucharClassEnum.IsFlags);
4653

47-
var @enum2 = AstContext.Enum("FlagEnum2");
48-
Assert.IsFalse(@enum2.IsFlags);
54+
Assert.IsTrue(@enum.BuiltinType.Type == PrimitiveType.Int);
55+
Assert.IsTrue(enum2.BuiltinType.Type == PrimitiveType.Int);
56+
Assert.IsTrue(boolClassEnum.BuiltinType.Type == PrimitiveType.Bool);
57+
Assert.IsTrue(ucharClassEnum.BuiltinType.Type == PrimitiveType.UChar);
4958

5059
passBuilder.AddPass(new CheckEnumsPass());
5160
passBuilder.RunPasses(pass => pass.VisitASTContext(AstContext));
5261

5362
Assert.IsTrue(@enum.IsFlags);
54-
Assert.IsFalse(@enum2.IsFlags);
63+
Assert.IsFalse(enum2.IsFlags);
64+
Assert.IsFalse(boolClassEnum.IsFlags);
65+
Assert.IsTrue(ucharClassEnum.IsFlags);
66+
67+
Assert.IsTrue(@enum.BuiltinType.Type == PrimitiveType.Int);
68+
Assert.IsTrue(enum2.BuiltinType.Type == PrimitiveType.Int);
69+
Assert.IsTrue(boolClassEnum.BuiltinType.Type != PrimitiveType.Bool, "C# does not support Bool enums");
70+
Assert.IsTrue(ucharClassEnum.BuiltinType.Type == PrimitiveType.UChar);
5571
}
5672

5773
[Test]

tests/dotnet/Native/Passes.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,20 @@ enum FlagEnum2
1414
D1 = 1 << 4,
1515
};
1616

17+
enum class BoolEnum : bool
18+
{
19+
True = true,
20+
False = false,
21+
};
22+
23+
enum class UCharEnum : unsigned char
24+
{
25+
A = 1 << 0,
26+
B = 1 << 1,
27+
C = 1 << 2,
28+
D = 1 << 3,
29+
};
30+
1731
class Foo
1832
{
1933
void toIgnore() { }

0 commit comments

Comments
 (0)