Skip to content
This repository has been archived by the owner on Mar 11, 2021. It is now read-only.

Commit

Permalink
Update the tests to compile again.
Browse files Browse the repository at this point in the history
  • Loading branch information
tritao committed Jul 15, 2013
1 parent 412a3c0 commit 19bba20
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 51 deletions.
7 changes: 5 additions & 2 deletions build/Tests.lua
Expand Up @@ -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

Expand Down
27 changes: 11 additions & 16 deletions 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)
Expand All @@ -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;
}
}
}
20 changes: 10 additions & 10 deletions src/Generator.Tests/Passes/TestPasses.cs
Expand Up @@ -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();
Expand All @@ -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"));

Expand All @@ -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");
Expand All @@ -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);
Expand Down
26 changes: 13 additions & 13 deletions src/Generator.Tests/TestCLITypePrinter.cs
Expand Up @@ -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>(T decl, string check) where T : ITypedDecl
Expand All @@ -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");
Expand All @@ -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<float>^");
CheckType(c.Field("Prim"), "cli::array<::Primitives^>^");

Expand All @@ -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<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");
}
Expand Down
15 changes: 5 additions & 10 deletions src/Generator/Utils/TestsUtils.cs
Expand Up @@ -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;
Expand All @@ -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);

Expand All @@ -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)
{
}
}
}

0 comments on commit 19bba20

Please sign in to comment.