xamarin-macios/tests/bindings-test/RegistrarBindingTest.cs

106 строки
2.5 KiB
C#

using System;
using System.Threading;
#if __UNIFIED__
using Foundation;
using ObjCRuntime;
#else
using MonoTouch.Foundation;
using MonoTouch.ObjCRuntime;
#endif
using NUnit.Framework;
using Bindings.Test;
namespace Xamarin.BindingTests
{
[TestFixture]
[Preserve (AllMembers = true)]
public class RegistrarBindingTest
{
[Test]
public void BlockCallback ()
{
using (var obj = new BlockCallbackTester ()) {
obj.CallClassCallback ();
obj.TestObject = new BlockCallbackClass ();
obj.CallOptionalCallback ();
obj.CallRequiredCallback ();
ObjCBlockTester.TestClass = new Class (typeof (BlockCallbackClass));
ObjCBlockTester.CallRequiredStaticCallback ();
ObjCBlockTester.CallOptionalStaticCallback ();
obj.TestObject = new BlockCallbackClassExplicit ();
obj.CallOptionalCallback ();
obj.CallRequiredCallback ();
ObjCBlockTester.TestClass = new Class (typeof (BlockCallbackClassExplicit));
ObjCBlockTester.CallRequiredStaticCallback ();
ObjCBlockTester.CallOptionalStaticCallback ();
}
}
class BlockCallbackClass : NSObject, IObjCProtocolBlockTest
{
public void RequiredCallback (Action<int> completionHandler)
{
completionHandler (42);
}
[Export ("optionalCallback:")]
public void OptionalCallback (Action<int> completionHandler)
{
completionHandler (42);
}
[Export ("requiredStaticCallback:")]
public static void RequiredStaticCallback (Action<int> completionHandler)
{
completionHandler (42);
}
[Export ("optionalStaticCallback:")]
public static void OptionalStaticCallback (Action<int> completionHandler)
{
completionHandler (42);
}
}
class BlockCallbackClassExplicit : NSObject, IObjCProtocolBlockTest
{
// Explicitly implemented interface member
void IObjCProtocolBlockTest.RequiredCallback (Action<int> completionHandler)
{
completionHandler (42);
}
[Export ("optionalCallback:")]
public void OptionalCallback (Action<int> completionHandler)
{
completionHandler (42);
}
[Export ("requiredStaticCallback:")]
public static void RequiredStaticCallback (Action<int> completionHandler)
{
completionHandler (42);
}
[Export ("optionalStaticCallback:")]
public static void OptionalRequiredCallback (Action<int> completionHandler)
{
completionHandler (42);
}
}
public class BlockCallbackTester : ObjCBlockTester
{
public override void ClassCallback (Action<int> completionHandler)
{
completionHandler (42);
}
}
}
}