mirror of https://github.com/mono/CppSharp.git
15 changed files with 117 additions and 233 deletions
@ -0,0 +1,69 @@ |
|||||||
|
using System; |
||||||
|
using NUnit.Framework; |
||||||
|
|
||||||
|
using Tests.Support; |
||||||
|
|
||||||
|
namespace Tests { |
||||||
|
|
||||||
|
[TestFixture] |
||||||
|
public class AbiTests { |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void test_0_class_return () |
||||||
|
{ |
||||||
|
// Section 3.1.4:
|
||||||
|
// Classes with non-default copy ctors/destructors are returned using a hidden
|
||||||
|
// argument
|
||||||
|
var c = ClassWithCopyCtor.Return (42); |
||||||
|
Assert.AreEqual (42, c.GetX (), "#1"); |
||||||
|
|
||||||
|
var c2 = ClassWithDtor.Return (43); |
||||||
|
Assert.AreEqual (43, c2.GetX (), "#2"); |
||||||
|
|
||||||
|
// This class is returned normally
|
||||||
|
var c3 = ClassWithoutCopyCtor.Return (44); |
||||||
|
Assert.AreEqual (44, c3.GetX (), "#3"); |
||||||
|
} |
||||||
|
|
||||||
|
// An object as ref argument
|
||||||
|
[Test] |
||||||
|
public void test_0_class_arg () |
||||||
|
{ |
||||||
|
var c1 = new Class (4); |
||||||
|
var c2 = new Class (5); |
||||||
|
|
||||||
|
c1.CopyTo (c2); |
||||||
|
Assert.AreEqual (4, c2.GetX (), "#1"); |
||||||
|
} |
||||||
|
|
||||||
|
// A null object as ref argument
|
||||||
|
[Test] |
||||||
|
public void test_0_class_arg_null () |
||||||
|
{ |
||||||
|
var c1 = new Class (4); |
||||||
|
Assert.That (c1.IsNull (null), "#1"); |
||||||
|
} |
||||||
|
|
||||||
|
// An object as byval argument
|
||||||
|
[Test] |
||||||
|
public void test_0_class_arg_byval () |
||||||
|
{ |
||||||
|
var c1 = new Class (4); |
||||||
|
var c2 = new Class (5); |
||||||
|
|
||||||
|
c1.CopyFromValue (c2); |
||||||
|
Assert.AreEqual (5, c1.GetX (), "#1"); |
||||||
|
} |
||||||
|
|
||||||
|
// A null object as byval argument
|
||||||
|
[Test] |
||||||
|
[ExpectedException (typeof (ArgumentException))] |
||||||
|
public void test_0_class_arg_byval_null () |
||||||
|
{ |
||||||
|
var c1 = new Class (4); |
||||||
|
c1.CopyFromValue (null); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -1,25 +0,0 @@ |
|||||||
//
|
|
||||||
// ItaniumAbiTests.cs: Test cases to exercise the ItaniumAbi
|
|
||||||
//
|
|
||||||
// Author:
|
|
||||||
// Alexander Corrado (alexander.corrado@gmail.com)
|
|
||||||
//
|
|
||||||
// Copyright (C) 2010 Alexander Corrado
|
|
||||||
//
|
|
||||||
|
|
||||||
using System; |
|
||||||
using NUnit.Framework; |
|
||||||
|
|
||||||
using Mono.VisualC.Interop.ABI; |
|
||||||
|
|
||||||
namespace Tests { |
|
||||||
[TestFixture] |
|
||||||
public class ItaniumAbiTests : SharedAbiTests { |
|
||||||
|
|
||||||
public ItaniumAbiTests () : base (new ItaniumAbi ()) |
|
||||||
{ |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
} |
|
||||||
|
|
@ -1,24 +0,0 @@ |
|||||||
//
|
|
||||||
// MsvcAbiTests.cs: Test cases to exercise the MsvcAbi
|
|
||||||
//
|
|
||||||
// Author:
|
|
||||||
// Alexander Corrado (alexander.corrado@gmail.com)
|
|
||||||
//
|
|
||||||
// Copyright (C) 2010 Alexander Corrado
|
|
||||||
//
|
|
||||||
|
|
||||||
using System; |
|
||||||
using NUnit.Framework; |
|
||||||
|
|
||||||
using Mono.VisualC.Interop.ABI; |
|
||||||
|
|
||||||
namespace Tests { |
|
||||||
[TestFixture] |
|
||||||
public class MsvcAbiTests : SharedAbiTests { |
|
||||||
|
|
||||||
public MsvcAbiTests () : base (new MsvcAbi ()) |
|
||||||
{ |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
@ -1,5 +1,5 @@ |
|||||||
|
|
||||||
#include "test.h" |
#include "AbiTests.h" |
||||||
|
|
||||||
ClassWithCopyCtor::ClassWithCopyCtor(const ClassWithCopyCtor& f) { |
ClassWithCopyCtor::ClassWithCopyCtor(const ClassWithCopyCtor& f) { |
||||||
x = f.x; |
x = f.x; |
@ -1,43 +0,0 @@ |
|||||||
//
|
|
||||||
// SharedAbiTests.cs: Test cases that are shared by all ABIs
|
|
||||||
//
|
|
||||||
// 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; |
|
||||||
|
|
||||||
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,66 +0,0 @@ |
|||||||
using System; |
|
||||||
using CppTests; |
|
||||||
|
|
||||||
public class Tests |
|
||||||
{ |
|
||||||
public static void Main (String[] args) { |
|
||||||
TestDriver.RunTests (typeof (Tests), args); |
|
||||||
} |
|
||||||
|
|
||||||
public static int test_0_class_return () { |
|
||||||
// Section 3.1.4:
|
|
||||||
// Classes with non-default copy ctors/destructors are returned using a hidden
|
|
||||||
// argument
|
|
||||||
var c = ClassWithCopyCtor.Return (42); |
|
||||||
if (c.GetX () != 42) |
|
||||||
return 1; |
|
||||||
|
|
||||||
var c2 = ClassWithDtor.Return (43); |
|
||||||
if (c2.GetX () != 43) |
|
||||||
return 2; |
|
||||||
|
|
||||||
// This class is returned normally
|
|
||||||
var c3 = ClassWithoutCopyCtor.Return (44); |
|
||||||
if (c3.GetX () != 44) |
|
||||||
return 3; |
|
||||||
return 0; |
|
||||||
} |
|
||||||
|
|
||||||
// An object as ref argument
|
|
||||||
public static int test_0_class_arg () { |
|
||||||
var c1 = new Class (4); |
|
||||||
var c2 = new Class (5); |
|
||||||
|
|
||||||
c1.CopyTo (c2); |
|
||||||
return c2.GetX () == 4 ? 0 : 1; |
|
||||||
} |
|
||||||
|
|
||||||
// A null object as ref argument
|
|
||||||
public static int test_0_class_arg_null () { |
|
||||||
var c1 = new Class (4); |
|
||||||
|
|
||||||
return c1.IsNull (null) ? 0 : 1; |
|
||||||
} |
|
||||||
|
|
||||||
// An object as byval argument
|
|
||||||
public static int test_0_class_arg_byval () { |
|
||||||
var c1 = new Class (4); |
|
||||||
var c2 = new Class (5); |
|
||||||
|
|
||||||
c1.CopyFromValue (c2); |
|
||||||
return c1.GetX () == 5 ? 0 : 1; |
|
||||||
} |
|
||||||
|
|
||||||
// A null object as byval argument
|
|
||||||
public static int test_0_class_arg_byval_null () { |
|
||||||
var c1 = new Class (4); |
|
||||||
|
|
||||||
try { |
|
||||||
c1.CopyFromValue (null); |
|
||||||
} catch (ArgumentException) { |
|
||||||
return 0; |
|
||||||
} |
|
||||||
return 1; |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
Loading…
Reference in new issue