Browse Source

Implemented a dependent namespaces test

pull/395/head
Pyry Kontio 11 years ago committed by Joao Matos
parent
commit
139fe7e3c3
  1. 13
      tests/NamespacesBase/Base.cpp
  2. 11
      tests/NamespacesBase/Base.h
  3. 0
      tests/NamespacesBase/NamespacesBase.Tests.cs
  4. 81
      tests/NamespacesBase/NamespacesBase.cs
  5. 2
      tests/NamespacesBase/premake4.lua
  6. 6
      tests/NamespacesDerived/Derived.cpp
  7. 13
      tests/NamespacesDerived/Derived.h
  8. 0
      tests/NamespacesDerived/NamespacesDerived.Tests.cs
  9. 91
      tests/NamespacesDerived/NamespacesDerived.cs
  10. 2
      tests/NamespacesDerived/premake4.lua

13
tests/NamespacesBase/Base.cpp

@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
#include "Base.h"
Base::Base(int i)
{
b = i;
}
Base::Base()
{
}

11
tests/NamespacesBase/Base.h

@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
#include "../Tests.h"
class DLL_API Base
{
public:
Base(int i);
Base();
private:
int b;
};

0
tests/NamespacesBase/NamespacesBase.Tests.cs

81
tests/NamespacesBase/NamespacesBase.cs

@ -0,0 +1,81 @@ @@ -0,0 +1,81 @@
?using System;
using CppSharp.AST;
using CppSharp.AST.Extensions;
using CppSharp.Generators;
using CppSharp.Generators.CSharp;
using CppSharp.Passes;
using CppSharp.Types;
using CppSharp.Utils;
using Attribute = CppSharp.AST.Attribute;
using Type = CppSharp.AST.Type;
namespace CppSharp.Tests
{
public class TestAttributesPass : TranslationUnitPass
{
public override bool VisitFunctionDecl(Function function)
{
if (AlreadyVisited(function) || function.Name != "obsolete")
return false;
var attribute = new Attribute
{
Type = typeof(ObsoleteAttribute),
Value = string.Format("\"{0} is obsolete.\"", function.Name)
};
function.Attributes.Add(attribute);
return base.VisitFunctionDecl(function);
}
}
public class NamespacesBaseTests : GeneratorTest
{
public NamespacesBaseTests(GeneratorKind kind)
: base("NamespacesBase", kind)
{
}
public override void SetupPasses(Driver driver)
{
driver.Options.GenerateAbstractImpls = true;
driver.Options.GenerateInterfacesForMultipleInheritance = true;
driver.Options.GeneratePropertiesAdvanced = true;
driver.Options.GenerateVirtualTables = true;
driver.Options.GenerateCopyConstructors = true;
// To ensure that calls to constructors in conversion operators
// are not ambiguous with multiple inheritance pass enabled.
driver.Options.GenerateConversionOperators = true;
driver.TranslationUnitPasses.AddPass(new TestAttributesPass());
driver.Options.MarshalCharAsManagedChar = true;
driver.Options.GenerateDefaultValuesForArguments = true;
driver.Options.GenerateSingleCSharpFile = true;
}
public override void Preprocess(Driver driver, ASTContext ctx)
{
ctx.SetClassAsValueType("TestCopyConstructorVal");
ctx.SetClassAsValueType("QGenericArgument");
ctx.IgnoreClassWithName("IgnoredTypeInheritingNonIgnoredWithNoEmptyCtor");
}
public override void Postprocess(Driver driver, ASTContext ctx)
{
new CaseRenamePass(
RenameTargets.Function | RenameTargets.Method | RenameTargets.Property | RenameTargets.Delegate,
RenameCasePattern.UpperCamelCase).VisitLibrary(driver.ASTContext);
}
}
public class Namespaces {
public static void Main(string[] args)
{
ConsoleDriver.Run(new NamespacesBaseTests(GeneratorKind.CSharp));
}
}
}

2
tests/NamespacesBase/premake4.lua

@ -0,0 +1,2 @@ @@ -0,0 +1,2 @@
group "Tests/Namespaces"
SetupTestCSharp("NamespacesBase")

6
tests/NamespacesDerived/Derived.cpp

@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
#include "Derived.h"
Derived::Derived() : Base(10), component(5)
{
}

13
tests/NamespacesDerived/Derived.h

@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
#include "../Tests.h"
#include "../NamespacesBase/Base.h"
class DLL_API Derived : public Base
{
public:
Derived();
Base component;
private:
int d;
};

0
tests/NamespacesDerived/NamespacesDerived.Tests.cs

91
tests/NamespacesDerived/NamespacesDerived.cs

@ -0,0 +1,91 @@ @@ -0,0 +1,91 @@
?using System;
using CppSharp.AST;
using CppSharp.AST.Extensions;
using CppSharp.Generators;
using CppSharp.Generators.CSharp;
using CppSharp.Passes;
using CppSharp.Types;
using CppSharp.Utils;
using Attribute = CppSharp.AST.Attribute;
using Type = CppSharp.AST.Type;
namespace CppSharp.Tests
{
public class TestAttributesPass : TranslationUnitPass
{
public override bool VisitFunctionDecl(Function function)
{
if (AlreadyVisited(function) || function.Name != "obsolete")
return false;
var attribute = new Attribute
{
Type = typeof(ObsoleteAttribute),
Value = string.Format("\"{0} is obsolete.\"", function.Name)
};
function.Attributes.Add(attribute);
return base.VisitFunctionDecl(function);
}
}
public class NamespacesDerivedTests : GeneratorTest
{
public NamespacesDerivedTests(GeneratorKind kind)
: base("NamespacesDerived", kind)
{
}
public override void SetupPasses(Driver driver)
{
driver.Options.GenerateAbstractImpls = true;
driver.Options.GenerateInterfacesForMultipleInheritance = true;
driver.Options.GeneratePropertiesAdvanced = true;
driver.Options.GenerateVirtualTables = true;
driver.Options.GenerateCopyConstructors = true;
// To ensure that calls to constructors in conversion operators
// are not ambiguous with multiple inheritance pass enabled.
driver.Options.GenerateConversionOperators = true;
driver.TranslationUnitPasses.AddPass(new TestAttributesPass());
driver.Options.MarshalCharAsManagedChar = true;
driver.Options.GenerateDefaultValuesForArguments = true;
driver.Options.GenerateSingleCSharpFile = true;
driver.Options.DependentNameSpaces.Add("NamespacesBase");
}
public override void Preprocess(Driver driver, ASTContext ctx)
{
foreach (TranslationUnit unit in ctx.TranslationUnits)
{
if (unit.FileName != "Derived.h")
{
unit.ExplicityIgnored = true;
}
}
ctx.SetClassAsValueType("TestCopyConstructorVal");
ctx.SetClassAsValueType("QGenericArgument");
ctx.IgnoreClassWithName("IgnoredTypeInheritingNonIgnoredWithNoEmptyCtor");
}
public override void Postprocess(Driver driver, ASTContext ctx)
{
new CaseRenamePass(
RenameTargets.Function | RenameTargets.Method | RenameTargets.Property | RenameTargets.Delegate,
RenameCasePattern.UpperCamelCase).VisitLibrary(driver.ASTContext);
}
}
public class Namespaces {
public static void Main(string[] args)
{
ConsoleDriver.Run(new NamespacesDerivedTests(GeneratorKind.CSharp));
}
}
}

2
tests/NamespacesDerived/premake4.lua

@ -0,0 +1,2 @@ @@ -0,0 +1,2 @@
group "Tests/Namespaces"
SetupTestCSharp("NamespacesDerived")
Loading…
Cancel
Save