Browse Source

Add enum base type validation tests

pull/1899/head
duckdoom5 5 months ago
parent
commit
31ff92c0fe
  1. 6
      src/Generator.Tests/CppSharp.Generator.Tests.csproj
  2. 20
      src/Generator.Tests/Passes/TestPasses.cs
  3. 1
      tests/dotnet/Common/Common.Tests.cs
  4. 2
      tests/dotnet/Native/ASTExtensions.h
  5. 14
      tests/dotnet/Native/Passes.h

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

@ -1,8 +1,8 @@ @@ -1,8 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<None Include="..\..\tests\Native\AST.h" LinkBase="tests\Native" />
<None Include="..\..\tests\Native\ASTExtensions.h" LinkBase="tests\Native" />
<None Include="..\..\tests\Native\Passes.h" LinkBase="tests\Native" />
<None Include="..\..\tests\dotnet\Native\AST.h" LinkBase="tests\Native" />
<None Include="..\..\tests\dotnet\Native\ASTExtensions.h" LinkBase="tests\Native" />
<None Include="..\..\tests\dotnet\Native\Passes.h" LinkBase="tests\Native" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Generator\CppSharp.Generator.csproj" />

20
src/Generator.Tests/Passes/TestPasses.cs

@ -39,19 +39,31 @@ namespace CppSharp.Generator.Tests.Passes @@ -39,19 +39,31 @@ namespace CppSharp.Generator.Tests.Passes
}
[Test]
public void TestCheckFlagEnumsPass()
public void TestCheckEnumsPass()
{
var @enum = AstContext.Enum("FlagEnum");
var enum2 = AstContext.Enum("FlagEnum2");
var boolClassEnum = AstContext.Enum("BoolEnum");
var ucharClassEnum = AstContext.Enum("UCharEnum");
Assert.IsFalse(@enum.IsFlags);
Assert.IsFalse(enum2.IsFlags);
Assert.IsFalse(boolClassEnum.IsFlags);
Assert.IsFalse(ucharClassEnum.IsFlags);
var @enum2 = AstContext.Enum("FlagEnum2");
Assert.IsFalse(@enum2.IsFlags);
Assert.IsTrue(boolClassEnum.BuiltinType.Type == PrimitiveType.Bool);
Assert.IsTrue(ucharClassEnum.BuiltinType.Type == PrimitiveType.UChar);
passBuilder.AddPass(new CheckEnumsPass());
passBuilder.RunPasses(pass => pass.VisitASTContext(AstContext));
Assert.IsTrue(@enum.IsFlags);
Assert.IsFalse(@enum2.IsFlags);
Assert.IsFalse(enum2.IsFlags);
Assert.IsFalse(boolClassEnum.IsFlags);
Assert.IsTrue(ucharClassEnum.IsFlags);
Assert.IsTrue(boolClassEnum.BuiltinType.Type != PrimitiveType.Bool, "C# does not support Bool enums");
Assert.IsTrue(ucharClassEnum.BuiltinType.Type == PrimitiveType.UChar);
}
[Test]

1
tests/dotnet/Common/Common.Tests.cs

@ -172,6 +172,7 @@ public class CommonTests @@ -172,6 +172,7 @@ public class CommonTests
}
}
[Test]
public void TestPrimitiveInOutParameters()
{
using (var hello = new Hello())

2
tests/dotnet/Native/ASTExtensions.h

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
#include "AST.h"
#include <vector>
// Tests class templates accross translation units
// Tests class templates across translation units
// Explicit instantiation
template class TestTemplateClass<Math::Complex>;
// Implicit instantiations

14
tests/dotnet/Native/Passes.h

@ -14,6 +14,20 @@ enum FlagEnum2 @@ -14,6 +14,20 @@ enum FlagEnum2
D1 = 1 << 4,
};
enum class BoolEnum : bool
{
True = true,
False = false,
};
enum class UCharEnum : unsigned char
{
A = 1 << 0,
B = 1 << 1,
C = 1 << 2,
D = 1 << 3,
};
class Foo
{
void toIgnore() { }

Loading…
Cancel
Save