mirror of https://github.com/mono/CppSharp.git
15 changed files with 117 additions and 233 deletions
@ -0,0 +1,69 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -1,5 +1,5 @@
|
||||
|
||||
#include "test.h" |
||||
#include "AbiTests.h" |
||||
|
||||
ClassWithCopyCtor::ClassWithCopyCtor(const ClassWithCopyCtor& f) { |
||||
x = f.x; |
@ -1,43 +0,0 @@
@@ -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 @@
@@ -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