SdkTests/Interface/InterfaceTests.cs (72 lines of code) (raw):

using System; using SharpGen.Runtime; using Xunit; namespace Interface { public class InterfaceTests { [Fact] public void BasicMethodCall() { using (var inst = Functions.CreateInstance()) { var value = inst.Value2; Assert.Equal(1, value.I); Assert.Equal(3.0, value.J); } } [Fact] public void MethodWithParameters() { using (var inst = Functions.CreateInstance2(3, 4)) { var value = inst.Value; Assert.Equal(3, value.I); Assert.Equal(4.0, value.J); } } [Fact] public void AutoOutParameters() { using (var inst = Functions.CreateInstance2(1, 5)) { var value = inst.Value; Assert.True(Functions.CloneInstance(inst, out var cloned)); using(cloned) { var clonedValue = cloned.Value; Assert.Equal(value.I, clonedValue.I); Assert.Equal(value.J, clonedValue.J); } } } [Fact] public void InterfaceArray() { using (var inst = Functions.CreateInstance()) { inst.AddToThis(new InterfaceArray<NativeInterface2>(), 0); } } [Fact] public void GuidCorrectlyAssociatedWithInterface() { Assert.Equal(Guid.Parse("{16410F4E-B4AB-4B33-B9A3-7FC8FA15F4F4}"), typeof(IInterfaceWithGuid).GUID); } [Fact] public void InnerInterfaceNativePointerKeptUpToDate() { var largeInterface = new ILargeInterface(IntPtr.Zero); Assert.Equal(largeInterface.NativePointer, largeInterface.Inner.NativePointer); largeInterface.NativePointer = new IntPtr(1); Assert.Equal(largeInterface.NativePointer, largeInterface.Inner.NativePointer); } [Fact] public void FastOutInterfaceTest() { var impl = new FastOutInterfaceNative(IntPtr.Zero); Functions.FastOutInterfaceTest(impl); Assert.NotEqual(IntPtr.Zero, impl.NativePointer); } } }