diff --git a/tests/CSharp/CSharp.Tests.cs b/tests/CSharp/CSharp.Tests.cs index 0bb48076..b1a88484 100644 --- a/tests/CSharp/CSharp.Tests.cs +++ b/tests/CSharp/CSharp.Tests.cs @@ -68,7 +68,7 @@ public unsafe class CSharpTests : GeneratorTestFixture } #pragma warning restore 0168 -#pragma warning restore 0219 +#pragma warning restore 0219 } [Test] @@ -81,7 +81,7 @@ public unsafe class CSharpTests : GeneratorTestFixture Assert.That(foo[0], Is.EqualTo(250)); Assert.That(foo[(uint) 0], Is.EqualTo(15)); - + var bar = new Bar(); Assert.That(bar[0].A, Is.EqualTo(10)); bar[0] = new Foo { A = 25 }; @@ -399,7 +399,7 @@ public unsafe class CSharpTests : GeneratorTestFixture Assert.AreEqual(100, p[0]); Assert.AreEqual(200, p[1]); Assert.AreEqual(300, p[2]); - + int[] array = { 1, 2, 3 }; fixed (int* p1 = array) { @@ -532,7 +532,7 @@ public unsafe class CSharpTests : GeneratorTestFixture } Assert.IsTrue(VirtualDtorAddedInDerived.DtorCalled); } - + [Test] public void TestGetEnumFromNativePointer() { @@ -722,4 +722,12 @@ public unsafe class CSharpTests : GeneratorTestFixture var i = CSharp.CSharp.UseDuplicateDeclaredStruct(duplicateDeclaredIncompleteStruct); Assert.AreEqual(10, i); } + + [Test] + public void TestMyMacroTestEnum() + { + var a = (MyMacroTestEnum)'1'; + var b = (MyMacroTestEnum)'2'; + Assert.IsTrue(a == MyMacroTestEnum.MY_MACRO_TEST_1 && b == MyMacroTestEnum.MY_MACRO_TEST_2); + } } \ No newline at end of file diff --git a/tests/CSharp/CSharp.cs b/tests/CSharp/CSharp.cs index ea5736e3..1b42020f 100644 --- a/tests/CSharp/CSharp.cs +++ b/tests/CSharp/CSharp.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; using CppSharp.AST; @@ -39,8 +40,18 @@ namespace CppSharp.Tests ctx.IgnoreClassWithName("IgnoredTypeInheritingNonIgnoredWithNoEmptyCtor"); var macroRegex = new Regex(@"(MY_MACRO_TEST_.*)"); - var enumTest = ctx.GenerateEnumFromMacros("MyMacroTestEnum", (from unit in ctx.TranslationUnits where unit.FilePath == "" || unit.FileName == "CSharp.h" from macro in unit.PreprocessedEntities.OfType() let match = macroRegex.Match(macro.Name) where match.Success select macro.Name).ToArray()); - enumTest.Namespace = new Namespace() {Name = "MacroTest"}; + List list = new List(); + foreach (TranslationUnit unit in ctx.TranslationUnits) + { + if (unit.FilePath == "" || unit.FileName == "CSharp.h") + foreach (var macro in unit.PreprocessedEntities.OfType()) + { + Match match = macroRegex.Match(macro.Name); + if (match.Success) list.Add(macro.Name); + } + } + var enumTest = ctx.GenerateEnumFromMacros("MyMacroTestEnum", list.ToArray()); + enumTest.Namespace = new Namespace() {Name = "MacroTest"}; } public override void Postprocess(Driver driver, ASTContext ctx)