Browse Source

Update the tests to compile again.

pull/13/merge
triton 12 years ago
parent
commit
19bba20fd9
  1. 7
      build/Tests.lua
  2. 27
      src/Generator.Tests/HeaderTestFixture.cs
  3. 20
      src/Generator.Tests/Passes/TestPasses.cs
  4. 26
      src/Generator.Tests/TestCLITypePrinter.cs
  5. 15
      src/Generator/Utils/TestsUtils.cs

7
build/Tests.lua

@ -20,10 +20,13 @@ function SetupTestGeneratorProject(name) @@ -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

27
src/Generator.Tests/HeaderTestFixture.cs

@ -1,21 +1,20 @@ @@ -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 @@ namespace Generator.Tests @@ -25,21 +24,17 @@ namespace Generator.Tests
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;
}
}
}

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

@ -18,16 +18,16 @@ namespace Generator.Tests.Passes @@ -18,16 +18,16 @@ namespace Generator.Tests.Passes
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 @@ namespace Generator.Tests.Passes @@ -40,7 +40,7 @@ namespace Generator.Tests.Passes
[Test]
public void TestFunctionToInstancePass()
{
var c = library.Class("Foo");
var c = Library.Class("Foo");
Assert.IsNull(c.Method("Start"));
@ -53,22 +53,22 @@ namespace Generator.Tests.Passes @@ -53,22 +53,22 @@ namespace Generator.Tests.Passes
[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 @@ namespace Generator.Tests.Passes @@ -83,9 +83,9 @@ namespace Generator.Tests.Passes
[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);

26
src/Generator.Tests/TestCLITypePrinter.cs

@ -23,7 +23,7 @@ namespace Generator.Tests @@ -23,7 +23,7 @@ namespace Generator.Tests
public void Init()
{
ParseLibrary("CLITypes.h");
printer = new CLITypePrinter(database, library);
printer = new CLITypePrinter(Driver, new CLITypePrinterContext());
}
public void CheckType<T>(T decl, string check) where T : ITypedDecl
@ -41,7 +41,7 @@ namespace Generator.Tests @@ -41,7 +41,7 @@ namespace Generator.Tests
[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 @@ namespace Generator.Tests @@ -61,7 +61,7 @@ namespace Generator.Tests
[Test]
public void TestArray()
{
var c = library.Class("Arrays");
var c = Library.Class("Arrays");
CheckType(c.Field("Array"), "cli::array<float>^");
CheckType(c.Field("Prim"), "cli::array<::Primitives^>^");
@ -70,35 +70,35 @@ namespace Generator.Tests @@ -70,35 +70,35 @@ namespace Generator.Tests
[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<int, double>^");
CheckType(library.Typedef("FnPtr2"), "System::Action<char, float>^");
CheckType(library.Typedef("FnPtr3"), "System::Action^");
CheckType(Library.Typedef("FnPtr"), "System::Func<int, double>^");
CheckType(Library.Typedef("FnPtr2"), "System::Action<char, float>^");
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");
}

15
src/Generator/Utils/TestsUtils.cs

@ -8,7 +8,7 @@ namespace CppSharp.Utils @@ -8,7 +8,7 @@ namespace CppSharp.Utils
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 @@ namespace CppSharp.Utils @@ -17,11 +17,14 @@ namespace CppSharp.Utils
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 @@ namespace CppSharp.Utils @@ -41,13 +44,5 @@ namespace CppSharp.Utils
public virtual void SetupPasses(Driver driver, PassBuilder passes)
{
}
public virtual void GenerateStart(TextTemplate template)
{
}
public virtual void GenerateAfterNamespaces(TextTemplate template)
{
}
}
}

Loading…
Cancel
Save