From 19bba20fd9b0b8f6f9367542a180e0e4d8ecbe91 Mon Sep 17 00:00:00 2001 From: triton Date: Mon, 15 Jul 2013 21:12:44 +0100 Subject: [PATCH] Update the tests to compile again. --- build/Tests.lua | 7 ++++-- src/Generator.Tests/HeaderTestFixture.cs | 27 +++++++++-------------- src/Generator.Tests/Passes/TestPasses.cs | 20 ++++++++--------- src/Generator.Tests/TestCLITypePrinter.cs | 26 +++++++++++----------- src/Generator/Utils/TestsUtils.cs | 15 +++++-------- 5 files changed, 44 insertions(+), 51 deletions(-) diff --git a/build/Tests.lua b/build/Tests.lua index 87ea2ea7..c4d6d7e0 100644 --- a/build/Tests.lua +++ b/build/Tests.lua @@ -20,10 +20,13 @@ function SetupTestGeneratorProject(name) files { name .. ".cs" } + dependson { name .. ".Native" } + links { - path.join(depsdir, "cxxi", "build", action, "lib", "Bridge"), - path.join(depsdir, "cxxi", "build", action, "lib", "Generator"), + "CppSharp.AST", + "CppSharp.Generator", + "CppSharp.Parser", } end diff --git a/src/Generator.Tests/HeaderTestFixture.cs b/src/Generator.Tests/HeaderTestFixture.cs index 1b47057a..fa36e29d 100644 --- a/src/Generator.Tests/HeaderTestFixture.cs +++ b/src/Generator.Tests/HeaderTestFixture.cs @@ -1,21 +1,20 @@ using System; using System.IO; using CppSharp; -using CppSharp.Types; namespace Generator.Tests { public class HeaderTestFixture { - protected Library library; - protected TypeMapDatabase database; + protected Driver Driver; + protected DriverOptions Options; + protected Library Library; private const string TestsDirectory = @"..\..\..\tests\Native"; public HeaderTestFixture() { - database = new TypeMapDatabase(); - database.SetupTypeMaps(); + } protected void ParseLibrary(string file) @@ -25,21 +24,17 @@ protected void ParseLibrary(string file) protected void ParseLibrary(string dir, string file) { - var options = new DriverOptions(); + Options = new DriverOptions(); var path = Path.Combine(Directory.GetCurrentDirectory(), dir); - options.IncludeDirs.Add(Path.GetFullPath(path)); - - var parser = new Parser(options); - var result = parser.ParseHeader(file); - - if (result.Kind != ParserResultKind.Success) - throw new Exception("Could not parse file: " + file); + Options.IncludeDirs.Add(Path.GetFullPath(path)); + Options.Headers.Add(file); - library = result.Library; + Driver = new Driver(Options, new TextDiagnosticPrinter()); + if (!Driver.ParseCode()) + throw new Exception("Error parsing the code"); - foreach (var diag in result.Diagnostics) - Console.WriteLine(diag.Message); + Library = Driver.Library; } } } diff --git a/src/Generator.Tests/Passes/TestPasses.cs b/src/Generator.Tests/Passes/TestPasses.cs index b2c61a0c..50b75664 100644 --- a/src/Generator.Tests/Passes/TestPasses.cs +++ b/src/Generator.Tests/Passes/TestPasses.cs @@ -18,16 +18,16 @@ public void Init() public void Setup() { ParseLibrary("Passes.h"); - passBuilder = new PassBuilder(library); + passBuilder = new PassBuilder(Driver); } [Test] public void TestCheckFlagEnumsPass() { - var @enum = library.Enum("FlagEnum"); + var @enum = Library.Enum("FlagEnum"); Assert.IsFalse(@enum.IsFlags); - var @enum2 = library.Enum("FlagEnum2"); + var @enum2 = Library.Enum("FlagEnum2"); Assert.IsFalse(@enum2.IsFlags); passBuilder.CheckFlagEnums(); @@ -40,7 +40,7 @@ public void TestCheckFlagEnumsPass() [Test] public void TestFunctionToInstancePass() { - var c = library.Class("Foo"); + var c = Library.Class("Foo"); Assert.IsNull(c.Method("Start")); @@ -53,22 +53,22 @@ public void TestFunctionToInstancePass() [Test] public void TestFunctionToStaticPass() { - var c = library.Class("Foo"); + var c = Library.Class("Foo"); - Assert.IsFalse(library.Function("FooStart").ExplicityIgnored); + Assert.IsFalse(Library.Function("FooStart").ExplicityIgnored); Assert.IsNull(c.Method("Start")); passBuilder.FunctionToStaticMethod(); passBuilder.RunPasses(); - Assert.IsTrue(library.Function("FooStart").ExplicityIgnored); + Assert.IsTrue(Library.Function("FooStart").ExplicityIgnored); Assert.IsNotNull(c.Method("Start")); } [Test] public void TestCaseRenamePass() { - var c = library.Class("TestRename"); + var c = Library.Class("TestRename"); var method = c.Method("lowerCaseMethod"); var field = c.Field("lowerCaseField"); @@ -83,9 +83,9 @@ public void TestCaseRenamePass() [Test] public void TestCleanEnumItemNames() { - library.GenerateEnumFromMacros("TestEnumItemName", "TEST_ENUM_ITEM_NAME_(.*)"); + Library.GenerateEnumFromMacros("TestEnumItemName", "TEST_ENUM_ITEM_NAME_(.*)"); - var @enum = library.Enum("TestEnumItemName"); + var @enum = Library.Enum("TestEnumItemName"); Assert.IsNotNull(@enum); passBuilder.RemovePrefix("TEST_ENUM_ITEM_NAME_", RenameTargets.EnumItem); diff --git a/src/Generator.Tests/TestCLITypePrinter.cs b/src/Generator.Tests/TestCLITypePrinter.cs index 8add0e79..2226e24e 100644 --- a/src/Generator.Tests/TestCLITypePrinter.cs +++ b/src/Generator.Tests/TestCLITypePrinter.cs @@ -23,7 +23,7 @@ public class CLITypePrinterTest : HeaderTestFixture public void Init() { ParseLibrary("CLITypes.h"); - printer = new CLITypePrinter(database, library); + printer = new CLITypePrinter(Driver, new CLITypePrinterContext()); } public void CheckType(T decl, string check) where T : ITypedDecl @@ -41,7 +41,7 @@ public void Init() [Test] public void TestPrimitive() { - var p = library.Class("Primitives"); + var p = Library.Class("Primitives"); CheckType(p.Field("B"), "bool"); CheckType(p.Field("C"), "char"); CheckType(p.Field("UC"), "unsigned char"); @@ -61,7 +61,7 @@ public void TestPrimitive() [Test] public void TestArray() { - var c = library.Class("Arrays"); + var c = Library.Class("Arrays"); CheckType(c.Field("Array"), "cli::array^"); CheckType(c.Field("Prim"), "cli::array<::Primitives^>^"); @@ -70,35 +70,35 @@ public void TestArray() [Test] public void TestPointers() { - var p = library.Class("Pointers"); + var p = Library.Class("Pointers"); CheckType(p.Field("pv"), "System::IntPtr"); - CheckType(p.Field("pc"), "char"); + CheckType(p.Field("pc"), "System::IntPtr"); CheckType(p.Field("puc"), "System::IntPtr"); - //CheckType(p.Field("cpc"), "System::String^"); - CheckType(p.Field("pi"), "int"); + CheckType(p.Field("cpc"), "System::String^"); + CheckType(p.Field("pi"), "System::IntPtr"); } [Test] public void TestFunctionPointers() { - var p = library.Class("FunctionPointers"); + var p = Library.Class("FunctionPointers"); CheckType(p.Field("fn"), "::FnPtr^"); CheckType(p.Field("fn2"), "::FnPtr2^"); - CheckType(p.Field("fn3"), "TypedefFn3"); + CheckType(p.Field("fn3"), "::FnPtr3^"); } [Test] public void TestTypedefs() { - CheckType(library.Typedef("FnPtr"), "System::Func^"); - CheckType(library.Typedef("FnPtr2"), "System::Action^"); - CheckType(library.Typedef("FnPtr3"), "System::Action^"); + CheckType(Library.Typedef("FnPtr"), "System::Func^"); + CheckType(Library.Typedef("FnPtr2"), "System::Action^"); + CheckType(Library.Typedef("FnPtr3"), "System::Action^"); } [Test] public void TestTags() { - var p = library.Class("Tag"); + var p = Library.Class("Tag"); CheckType(p.Field("p"), "::Primitives^"); CheckType(p.Field("e"), "::E"); } diff --git a/src/Generator/Utils/TestsUtils.cs b/src/Generator/Utils/TestsUtils.cs index be2d8a57..9b2ac4b7 100644 --- a/src/Generator/Utils/TestsUtils.cs +++ b/src/Generator/Utils/TestsUtils.cs @@ -8,7 +8,7 @@ public abstract class LibraryTest : ILibrary readonly string name; readonly LanguageGeneratorKind kind; - public LibraryTest(string name, LanguageGeneratorKind kind) + protected LibraryTest(string name, LanguageGeneratorKind kind) { this.name = name; this.kind = kind; @@ -17,11 +17,14 @@ public LibraryTest(string name, LanguageGeneratorKind kind) public virtual void Setup(Driver driver) { var options = driver.Options; - options.LibraryName = name + ".Native"; + options.LibraryName = name; options.GeneratorKind = kind; options.OutputDir = "../gen/" + name; options.GenerateLibraryNamespace = false; + options.SharedLibraryName = name + ".Native"; + options.CheckSymbols = false; + var path = "../../../tests/" + name; options.IncludeDirs.Add(path); @@ -41,13 +44,5 @@ public virtual void Postprocess(Library lib) public virtual void SetupPasses(Driver driver, PassBuilder passes) { } - - public virtual void GenerateStart(TextTemplate template) - { - } - - public virtual void GenerateAfterNamespaces(TextTemplate template) - { - } } }