Browse Source

Added a new project with generator tests.

pull/1/head
triton 13 years ago
parent
commit
05b57573b6
  1. 67
      src/Generator.Tests/Generator.Tests.csproj
  2. 24
      src/Generator.Tests/Generator.Tests.lua
  3. 42
      src/Generator.Tests/HeaderTestFixture.cs
  4. 38
      src/Generator.Tests/QueryHelpers.cs

67
src/Generator.Tests/Generator.Tests.csproj

@ -1,67 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{3EC927F3-5F8D-4D5D-B230-901ED2BB5D32}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Generator.Tests</RootNamespace>
<AssemblyName>Generator.Tests</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<StartupObject />
</PropertyGroup>
<ItemGroup>
<None Include="App.config" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Compile Include="TestCLITypePrinter.cs" />
</ItemGroup>
<ItemGroup>
<Reference Include="nunit.framework">
<HintPath>..\..\build\packages\NUnit.2.6.2\lib\nunit.framework.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Bridge\CxxBridge.csproj">
<Project>{6beb8fa2-97aa-40b7-ab92-42f6eddc4490}</Project>
<Name>CxxBridge</Name>
</ProjectReference>
<ProjectReference Include="..\Generator\Generator.csproj">
<Project>{73499B8E-A6A4-42FF-AB8A-754CE2780777}</Project>
<Name>Generator</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

24
src/Generator.Tests/Generator.Tests.lua

@ -0,0 +1,24 @@
project "Generator.Tests"
kind "SharedLib"
language "C#"
location "."
files { "**.cs" }
libdirs
{
depsdir .. "/NUnit",
depsdir .. "/NSubstitute"
}
links
{
"System",
"System.Core",
"Bridge",
"Generator",
"Parser",
"NUnit.Framework",
"NSubstitute"
}

42
src/Generator.Tests/HeaderTestFixture.cs

@ -0,0 +1,42 @@
using System;
using System.IO;
using Cxxi;
using Cxxi.Types;
namespace Generator.Tests
{
public class HeaderTestFixture
{
protected Library library;
protected TypeMapDatabase database;
private const string TestsDirectory = @"..\..\..\tests\Native";
protected void ParseLibrary(string file)
{
ParseLibrary(TestsDirectory, file);
}
protected void ParseLibrary(string dir, string file)
{
database = new TypeMapDatabase();
database.SetupTypeMaps();
var options = new Options();
var path = Path.Combine(Directory.GetCurrentDirectory(), dir);
options.IncludeDirs.Add(path);
var parser = new Parser(options);
var result = parser.ParseHeader(file);
if (!result.Success)
throw new Exception("Could not parse file: " + file);
library = result.Library;
foreach (var diag in result.Diagnostics)
Console.WriteLine(diag.Message);
}
}
}

38
src/Generator.Tests/QueryHelpers.cs

@ -0,0 +1,38 @@
using System.Linq;
using Cxxi;
namespace Generator.Tests
{
public static class LibraryQueryExtensions
{
public static Class Class(this Library library, string name)
{
return library.FindClass(name).ToList().First();
}
public static Function Function(this Library library, string name)
{
return library.FindFunction(name).ToList().First();
}
public static Enumeration Enum(this Library library, string name)
{
return library.FindEnum(name).ToList().First();
}
public static TypedefDecl Typedef(this Library library, string name)
{
return library.FindTypedef(name).ToList().First();
}
public static Field Field(this Class @class, string name)
{
return @class.Fields.Find(field => field.Name == name);
}
public static Parameter Param(this Function function, int index)
{
return function.Parameters[index];
}
}
}
Loading…
Cancel
Save