mirror of https://github.com/mono/CppSharp.git
Browse Source
git-svn-id: https://mono-soc-2010.googlecode.com/svn/trunk/cppinterop@46 a470b8cb-0e6f-1642-1b45-71e107334c4bpull/1/head
22 changed files with 458 additions and 110 deletions
@ -0,0 +1,13 @@ |
|||||||
|
|
||||||
|
#include "TestFramework.h" |
||||||
|
|
||||||
|
NUnit* NUnit::Assert; |
||||||
|
|
||||||
|
extern "C" { |
||||||
|
|
||||||
|
void SetNUnitInterface (NUnit* nunit) |
||||||
|
{ |
||||||
|
NUnit::Assert = nunit; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,106 @@ |
|||||||
|
|
||||||
|
#ifndef _CPPINTEROP_TESTFRAMEWORK_H_ |
||||||
|
#define _CPPINTEROP_TESTFRAMEWORK_H_ |
||||||
|
|
||||||
|
#ifdef __GNUC__ |
||||||
|
#define EXPORT |
||||||
|
#elif defined(_MSC_VER) |
||||||
|
#define EXPORT __declspec(dllexport) |
||||||
|
#else |
||||||
|
#error Unknown compiler! |
||||||
|
#endif |
||||||
|
|
||||||
|
typedef const char* string; |
||||||
|
typedef unsigned int uint; |
||||||
|
typedef unsigned long ulong; |
||||||
|
|
||||||
|
class NUnit { |
||||||
|
public: |
||||||
|
static NUnit* Assert; |
||||||
|
|
||||||
|
virtual void Fail (string message); |
||||||
|
virtual void Fail (); |
||||||
|
virtual void IsTrue (bool condition, string message); |
||||||
|
virtual void IsTrue (bool condition); |
||||||
|
virtual void IsFalse (bool condition, string message); |
||||||
|
virtual void IsFalse (bool condition); |
||||||
|
virtual void IsEmpty (string aString, string message); |
||||||
|
virtual void IsEmpty (string aString); |
||||||
|
virtual void IsNotEmpty (string aString, string message); |
||||||
|
virtual void IsNotEmpty (string aString); |
||||||
|
virtual void AreEqual (int expected, int actual, string message); |
||||||
|
virtual void AreEqual (int expected, int actual); |
||||||
|
virtual void AreEqual (long expected, long actual, string message); |
||||||
|
virtual void AreEqual (long expected, long actual); |
||||||
|
virtual void AreEqual (uint expected, uint actual, string message); |
||||||
|
virtual void AreEqual (uint expected, uint actual); |
||||||
|
virtual void AreEqual (ulong expected, ulong actual, string message); |
||||||
|
virtual void AreEqual (ulong expected, ulong actual); |
||||||
|
virtual void AreEqual (double expected, double actual, double delta, string message); |
||||||
|
virtual void AreEqual (double expected, double actual, double delta); |
||||||
|
virtual void AreEqual (float expected, float actual, float delta, string message); |
||||||
|
virtual void AreEqual (float expected, float actual, float delta); |
||||||
|
virtual void AreNotEqual (int expected, int actual, string message); |
||||||
|
virtual void AreNotEqual (int expected, int actual); |
||||||
|
virtual void AreNotEqual (long expected, long actual, string message); |
||||||
|
virtual void AreNotEqual (long expected, long actual); |
||||||
|
virtual void AreNotEqual (uint expected, uint actual, string message); |
||||||
|
virtual void AreNotEqual (uint expected, uint actual); |
||||||
|
virtual void AreNotEqual (ulong expected, ulong actual, string message); |
||||||
|
virtual void AreNotEqual (ulong expected, ulong actual); |
||||||
|
virtual void AreNotEqual (double expected, double actual, string message); |
||||||
|
virtual void AreNotEqual (double expected, double actual); |
||||||
|
virtual void AreNotEqual (float expected, float actual, string message); |
||||||
|
virtual void AreNotEqual (float expected, float actual); |
||||||
|
virtual void Greater (int expected, int actual, string message); |
||||||
|
virtual void Greater (int expected, int actual); |
||||||
|
virtual void Greater (long expected, long actual, string message); |
||||||
|
virtual void Greater (long expected, long actual); |
||||||
|
virtual void Greater (uint expected, uint actual, string message); |
||||||
|
virtual void Greater (uint expected, uint actual); |
||||||
|
virtual void Greater (ulong expected, ulong actual, string message); |
||||||
|
virtual void Greater (ulong expected, ulong actual); |
||||||
|
virtual void Greater (double expected, double actual, string message); |
||||||
|
virtual void Greater (double expected, double actual); |
||||||
|
virtual void Greater (float expected, float actual, string message); |
||||||
|
virtual void Greater (float expected, float actual); |
||||||
|
virtual void Less (int expected, int actual, string message); |
||||||
|
virtual void Less (int expected, int actual); |
||||||
|
virtual void Less (long expected, long actual, string message); |
||||||
|
virtual void Less (long expected, long actual); |
||||||
|
virtual void Less (uint expected, uint actual, string message); |
||||||
|
virtual void Less (uint expected, uint actual); |
||||||
|
virtual void Less (ulong expected, ulong actual, string message); |
||||||
|
virtual void Less (ulong expected, ulong actual); |
||||||
|
virtual void Less (double expected, double actual, string message); |
||||||
|
virtual void Less (double expected, double actual); |
||||||
|
virtual void Less (float expected, float actual, string message); |
||||||
|
virtual void Less (float expected, float actual); |
||||||
|
virtual void GreaterOrEqual (int expected, int actual, string message); |
||||||
|
virtual void GreaterOrEqual (int expected, int actual); |
||||||
|
virtual void GreaterOrEqual (long expected, long actual, string message); |
||||||
|
virtual void GreaterOrEqual (long expected, long actual); |
||||||
|
virtual void GreaterOrEqual (uint expected, uint actual, string message); |
||||||
|
virtual void GreaterOrEqual (uint expected, uint actual); |
||||||
|
virtual void GreaterOrEqual (ulong expected, ulong actual, string message); |
||||||
|
virtual void GreaterOrEqual (ulong expected, ulong actual); |
||||||
|
virtual void GreaterOrEqual (double expected, double actual, string message); |
||||||
|
virtual void GreaterOrEqual (double expected, double actual); |
||||||
|
virtual void GreaterOrEqual (float expected, float actual, string message); |
||||||
|
virtual void GreaterOrEqual (float expected, float actual); |
||||||
|
virtual void LessOrEqual (int expected, int actual, string message); |
||||||
|
virtual void LessOrEqual (int expected, int actual); |
||||||
|
virtual void LessOrEqual (long expected, long actual, string message); |
||||||
|
virtual void LessOrEqual (long expected, long actual); |
||||||
|
virtual void LessOrEqual (uint expected, uint actual, string message); |
||||||
|
virtual void LessOrEqual (uint expected, uint actual); |
||||||
|
virtual void LessOrEqual (ulong expected, ulong actual, string message); |
||||||
|
virtual void LessOrEqual (ulong expected, ulong actual); |
||||||
|
virtual void LessOrEqual (double expected, double actual, string message); |
||||||
|
virtual void LessOrEqual (double expected, double actual); |
||||||
|
virtual void LessOrEqual (float expected, float actual, string message); |
||||||
|
virtual void LessOrEqual (float expected, float actual); |
||||||
|
}; |
||||||
|
|
||||||
|
|
||||||
|
#endif /* _CPPINTEROP_TESTFRAMEWORK_H_ */ |
||||||
@ -0,0 +1,25 @@ |
|||||||
|
|
||||||
|
#include "NUnit.h" |
||||||
|
|
||||||
|
class EXPORT VirtualMethodTestClass { |
||||||
|
|
||||||
|
virtual void V0 (int a1, int a2, int a3) |
||||||
|
{ |
||||||
|
NUnit::Assert->AreEqual (1, a1, "V0 #A1"); |
||||||
|
NUnit::Assert->AreEqual (2, a2, "V0 #A2"); |
||||||
|
NUnit::Assert->AreEqual (3, a3, "V0 #A3"); |
||||||
|
} |
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
extern "C" { |
||||||
|
VirtualMethodTestClass* CreateVirtualMethodTestClass () |
||||||
|
{ |
||||||
|
return new VirtualMethodTestClass (); |
||||||
|
} |
||||||
|
|
||||||
|
void DestroyVirtualMethodTestClass (VirtualMethodTestClass* vmtc) |
||||||
|
{ |
||||||
|
delete vmtc; |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,34 @@ |
|||||||
|
using System; |
||||||
|
using NUnit.Framework; |
||||||
|
|
||||||
|
using Mono.VisualC.Interop; |
||||||
|
using Mono.VisualC.Interop.ABI; |
||||||
|
|
||||||
|
using Tests.Support; |
||||||
|
|
||||||
|
namespace Tests { |
||||||
|
public class SharedAbiTests { |
||||||
|
|
||||||
|
protected CppLibrary test_lib { get; private set; } |
||||||
|
protected IVirtualMethodTestClass virtual_test_class { get; private set; } |
||||||
|
|
||||||
|
protected SharedAbiTests (CppAbi abi) |
||||||
|
{ |
||||||
|
this.test_lib = new CppLibrary ("CPPTestLib", abi); |
||||||
|
this.virtual_test_class = test_lib.GetClass<IVirtualMethodTestClass> ("VirtualMethodTestClass"); |
||||||
|
CppNUnitAsserts.Init (); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void TestVirtualMethods () |
||||||
|
{ |
||||||
|
CppInstancePtr vmtc = VirtualMethodTestClass.Create (); |
||||||
|
|
||||||
|
virtual_test_class.V0 (vmtc, 1, 2, 3); |
||||||
|
|
||||||
|
VirtualMethodTestClass.Destroy (vmtc); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
@ -1,49 +0,0 @@ |
|||||||
using System; |
|
||||||
using NUnit.Framework; |
|
||||||
|
|
||||||
using Mono.VisualC.Interop; |
|
||||||
using Mono.VisualC.Interop.ABI; |
|
||||||
|
|
||||||
namespace Tests.Support { |
|
||||||
public class CPPTestLibBase : ICppObject { |
|
||||||
|
|
||||||
protected CppLibrary TestLib { get; private set; } |
|
||||||
|
|
||||||
protected CPPTestLibBase () |
|
||||||
{ |
|
||||||
} |
|
||||||
|
|
||||||
protected CPPTestLibBase (CppAbi abi) |
|
||||||
{ |
|
||||||
this.TestLib = new CppLibrary ("CPPTestLib", abi); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
protected CSimpleClass.ICSimpleClass Klass { |
|
||||||
get { |
|
||||||
if (CSimpleClass._impl == null) |
|
||||||
CSimpleClass.Bind (TestLib); |
|
||||||
return CSimpleClass._impl; |
|
||||||
} |
|
||||||
} |
|
||||||
public IntPtr Native { |
|
||||||
get { |
|
||||||
throw new System.NotImplementedException (); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
public void Dispose () |
|
||||||
{ |
|
||||||
throw new System.NotImplementedException (); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
public interface EmptyTestInterface : ICppClassOverridable<CPPTestLibBase> { |
|
||||||
} |
|
||||||
|
|
||||||
public struct EmptyTestStruct { |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
@ -0,0 +1,45 @@ |
|||||||
|
//
|
||||||
|
// CPPTestLibBase.cs: Base class for supporting tests using CPPTestLib
|
||||||
|
//
|
||||||
|
// Author:
|
||||||
|
// Alexander Corrado (alexander.corrado@gmail.com)
|
||||||
|
//
|
||||||
|
// Copyright (C) 2010 Alexander Corrado
|
||||||
|
//
|
||||||
|
|
||||||
|
using System; |
||||||
|
using NUnit.Framework; |
||||||
|
|
||||||
|
using Mono.VisualC.Interop; |
||||||
|
using Mono.VisualC.Interop.ABI; |
||||||
|
|
||||||
|
namespace Tests.Support { |
||||||
|
public class CppMockObject : ICppObject { |
||||||
|
|
||||||
|
public static CppMockObject Instance = new CppMockObject (); |
||||||
|
|
||||||
|
protected CppMockObject () |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public IntPtr Native { |
||||||
|
get { |
||||||
|
throw new System.NotImplementedException (); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public void Dispose () |
||||||
|
{ |
||||||
|
throw new System.NotImplementedException (); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
public interface EmptyTestInterface : ICppClassOverridable<CppMockObject> { |
||||||
|
} |
||||||
|
|
||||||
|
public struct EmptyTestStruct { |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
@ -0,0 +1,107 @@ |
|||||||
|
using System; |
||||||
|
using System.Runtime.InteropServices; |
||||||
|
using NUnit.Framework; |
||||||
|
using Mono.VisualC.Interop; |
||||||
|
|
||||||
|
namespace Tests.Support { |
||||||
|
public static class CppNUnitAsserts { |
||||||
|
|
||||||
|
private interface IAssert : ICppClassOverridable<Assert> { |
||||||
|
[Virtual] void Fail (CppInstancePtr @this, string message); |
||||||
|
[Virtual] void Fail (CppInstancePtr @this); |
||||||
|
[Virtual] void IsTrue (CppInstancePtr @this, bool condition, string message); |
||||||
|
[Virtual] void IsTrue (CppInstancePtr @this, bool condition); |
||||||
|
[Virtual] void IsFalse (CppInstancePtr @this, bool condition, string message); |
||||||
|
[Virtual] void IsFalse (CppInstancePtr @this, bool condition); |
||||||
|
[Virtual] void IsEmpty (CppInstancePtr @this, string aString, string message); |
||||||
|
[Virtual] void IsEmpty (CppInstancePtr @this, string aString); |
||||||
|
[Virtual] void IsNotEmpty (CppInstancePtr @this, string aString, string message); |
||||||
|
[Virtual] void IsNotEmpty (CppInstancePtr @this, string aString); |
||||||
|
[Virtual] void AreEqual (CppInstancePtr @this, int expected, int actual, string message); |
||||||
|
[Virtual] void AreEqual (CppInstancePtr @this, int expected, int actual); |
||||||
|
[Virtual] void AreEqual (CppInstancePtr @this, long expected, long actual, string message); |
||||||
|
[Virtual] void AreEqual (CppInstancePtr @this, long expected, long actual); |
||||||
|
[Virtual] void AreEqual (CppInstancePtr @this, uint expected, uint actual, string message); |
||||||
|
[Virtual] void AreEqual (CppInstancePtr @this, uint expected, uint actual); |
||||||
|
[Virtual] void AreEqual (CppInstancePtr @this, ulong expected, ulong actual, string message); |
||||||
|
[Virtual] void AreEqual (CppInstancePtr @this, ulong expected, ulong actual); |
||||||
|
[Virtual] void AreEqual (CppInstancePtr @this, double expected, double actual, double delta, string message); |
||||||
|
[Virtual] void AreEqual (CppInstancePtr @this, double expected, double actual, double delta); |
||||||
|
[Virtual] void AreEqual (CppInstancePtr @this, float expected, float actual, float delta, string message); |
||||||
|
[Virtual] void AreEqual (CppInstancePtr @this, float expected, float actual, float delta); |
||||||
|
[Virtual] void AreNotEqual (CppInstancePtr @this, int expected, int actual, string message); |
||||||
|
[Virtual] void AreNotEqual (CppInstancePtr @this, int expected, int actual); |
||||||
|
[Virtual] void AreNotEqual (CppInstancePtr @this, long expected, long actual, string message); |
||||||
|
[Virtual] void AreNotEqual (CppInstancePtr @this, long expected, long actual); |
||||||
|
[Virtual] void AreNotEqual (CppInstancePtr @this, uint expected, uint actual, string message); |
||||||
|
[Virtual] void AreNotEqual (CppInstancePtr @this, uint expected, uint actual); |
||||||
|
[Virtual] void AreNotEqual (CppInstancePtr @this, ulong expected, ulong actual, string message); |
||||||
|
[Virtual] void AreNotEqual (CppInstancePtr @this, ulong expected, ulong actual); |
||||||
|
[Virtual] void AreNotEqual (CppInstancePtr @this, double expected, double actual, string message); |
||||||
|
[Virtual] void AreNotEqual (CppInstancePtr @this, double expected, double actual); |
||||||
|
[Virtual] void AreNotEqual (CppInstancePtr @this, float expected, float actual, string message); |
||||||
|
[Virtual] void AreNotEqual (CppInstancePtr @this, float expected, float actual); |
||||||
|
[Virtual] void Greater (CppInstancePtr @this, int expected, int actual, string message); |
||||||
|
[Virtual] void Greater (CppInstancePtr @this, int expected, int actual); |
||||||
|
[Virtual] void Greater (CppInstancePtr @this, long expected, long actual, string message); |
||||||
|
[Virtual] void Greater (CppInstancePtr @this, long expected, long actual); |
||||||
|
[Virtual] void Greater (CppInstancePtr @this, uint expected, uint actual, string message); |
||||||
|
[Virtual] void Greater (CppInstancePtr @this, uint expected, uint actual); |
||||||
|
[Virtual] void Greater (CppInstancePtr @this, ulong expected, ulong actual, string message); |
||||||
|
[Virtual] void Greater (CppInstancePtr @this, ulong expected, ulong actual); |
||||||
|
[Virtual] void Greater (CppInstancePtr @this, double expected, double actual, string message); |
||||||
|
[Virtual] void Greater (CppInstancePtr @this, double expected, double actual); |
||||||
|
[Virtual] void Greater (CppInstancePtr @this, float expected, float actual, string message); |
||||||
|
[Virtual] void Greater (CppInstancePtr @this, float expected, float actual); |
||||||
|
[Virtual] void Less (CppInstancePtr @this, int expected, int actual, string message); |
||||||
|
[Virtual] void Less (CppInstancePtr @this, int expected, int actual); |
||||||
|
[Virtual] void Less (CppInstancePtr @this, long expected, long actual, string message); |
||||||
|
[Virtual] void Less (CppInstancePtr @this, long expected, long actual); |
||||||
|
[Virtual] void Less (CppInstancePtr @this, uint expected, uint actual, string message); |
||||||
|
[Virtual] void Less (CppInstancePtr @this, uint expected, uint actual); |
||||||
|
[Virtual] void Less (CppInstancePtr @this, ulong expected, ulong actual, string message); |
||||||
|
[Virtual] void Less (CppInstancePtr @this, ulong expected, ulong actual); |
||||||
|
[Virtual] void Less (CppInstancePtr @this, double expected, double actual, string message); |
||||||
|
[Virtual] void Less (CppInstancePtr @this, double expected, double actual); |
||||||
|
[Virtual] void Less (CppInstancePtr @this, float expected, float actual, string message); |
||||||
|
[Virtual] void Less (CppInstancePtr @this, float expected, float actual); |
||||||
|
[Virtual] void GreaterOrEqual (CppInstancePtr @this, int expected, int actual, string message); |
||||||
|
[Virtual] void GreaterOrEqual (CppInstancePtr @this, int expected, int actual); |
||||||
|
[Virtual] void GreaterOrEqual (CppInstancePtr @this, long expected, long actual, string message); |
||||||
|
[Virtual] void GreaterOrEqual (CppInstancePtr @this, long expected, long actual); |
||||||
|
[Virtual] void GreaterOrEqual (CppInstancePtr @this, uint expected, uint actual, string message); |
||||||
|
[Virtual] void GreaterOrEqual (CppInstancePtr @this, uint expected, uint actual); |
||||||
|
[Virtual] void GreaterOrEqual (CppInstancePtr @this, ulong expected, ulong actual, string message); |
||||||
|
[Virtual] void GreaterOrEqual (CppInstancePtr @this, ulong expected, ulong actual); |
||||||
|
[Virtual] void GreaterOrEqual (CppInstancePtr @this, double expected, double actual, string message); |
||||||
|
[Virtual] void GreaterOrEqual (CppInstancePtr @this, double expected, double actual); |
||||||
|
[Virtual] void GreaterOrEqual (CppInstancePtr @this, float expected, float actual, string message); |
||||||
|
[Virtual] void GreaterOrEqual (CppInstancePtr @this, float expected, float actual); |
||||||
|
[Virtual] void LessOrEqual (CppInstancePtr @this, int expected, int actual, string message); |
||||||
|
[Virtual] void LessOrEqual (CppInstancePtr @this, int expected, int actual); |
||||||
|
[Virtual] void LessOrEqual (CppInstancePtr @this, long expected, long actual, string message); |
||||||
|
[Virtual] void LessOrEqual (CppInstancePtr @this, long expected, long actual); |
||||||
|
[Virtual] void LessOrEqual (CppInstancePtr @this, uint expected, uint actual, string message); |
||||||
|
[Virtual] void LessOrEqual (CppInstancePtr @this, uint expected, uint actual); |
||||||
|
[Virtual] void LessOrEqual (CppInstancePtr @this, ulong expected, ulong actual, string message); |
||||||
|
[Virtual] void LessOrEqual (CppInstancePtr @this, ulong expected, ulong actual); |
||||||
|
[Virtual] void LessOrEqual (CppInstancePtr @this, double expected, double actual, string message); |
||||||
|
[Virtual] void LessOrEqual (CppInstancePtr @this, double expected, double actual); |
||||||
|
[Virtual] void LessOrEqual (CppInstancePtr @this, float expected, float actual, string message); |
||||||
|
[Virtual] void LessOrEqual (CppInstancePtr @this, float expected, float actual); |
||||||
|
} |
||||||
|
|
||||||
|
private static CppInstancePtr? nunitInterface; |
||||||
|
public static void Init () |
||||||
|
{ |
||||||
|
if (!nunitInterface.HasValue) |
||||||
|
nunitInterface = CppInstancePtr.ForManagedObject<IAssert,Assert> (null); |
||||||
|
|
||||||
|
SetNUnitInterface ((IntPtr)nunitInterface.Value); |
||||||
|
} |
||||||
|
|
||||||
|
[DllImport("CPPTestLib")] |
||||||
|
private static extern void SetNUnitInterface (IntPtr nunit); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
@ -0,0 +1,32 @@ |
|||||||
|
using System; |
||||||
|
using System.Runtime.InteropServices; |
||||||
|
using Mono.VisualC.Interop; |
||||||
|
|
||||||
|
namespace Tests |
||||||
|
{ |
||||||
|
public interface IVirtualMethodTestClass : ICppClass { |
||||||
|
[Virtual] void V0 (CppInstancePtr @this, int a1, int a2, int a3); |
||||||
|
} |
||||||
|
|
||||||
|
public static class VirtualMethodTestClass { |
||||||
|
|
||||||
|
public static CppInstancePtr Create () |
||||||
|
{ |
||||||
|
return CreateVirtualMethodTestClass (); |
||||||
|
} |
||||||
|
|
||||||
|
public static void Destroy (CppInstancePtr vmtc) |
||||||
|
{ |
||||||
|
DestroyVirtualMethodTestClass ((IntPtr)vmtc); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
[DllImport("CPPTestLib")] |
||||||
|
private static extern IntPtr CreateVirtualMethodTestClass (); |
||||||
|
|
||||||
|
[DllImport("CPPTestLib")] |
||||||
|
private static extern void DestroyVirtualMethodTestClass (IntPtr vmtc); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
Loading…
Reference in new issue