public void FailsForNonTaskReturnType()
        {
            var gen = new CallbackDelegateGenerator <object>();
            var callbackExecutorMock = new Mock <ICallbackExecutor <object> >();

            callbackExecutorMock.SetupGet(_ => _.CanExecute).Returns(true);

            Assert.Throws <InvalidOperationException>(() => gen.Generate(typeof(Action), 1, callbackExecutorMock.Object,
                                                                         context => { }));
        }
        public void ReturnTypeSet()
        {
            var gen = new CallbackDelegateGenerator <object>();
            var callbackExecutorMock = new Mock <ICallbackExecutor <object> >();

            callbackExecutorMock.SetupGet(_ => _.CanExecute).Returns(true);
            var generated = (TestDelegate)gen.Generate(typeof(TestDelegate), 1, callbackExecutorMock.Object, context => { });

            generated("");

            callbackExecutorMock.Verify(_ => _.Execute(It.Is <CallbackExecutionParameters <object> >(__ => __.ResultTargetType == typeof(string))));
        }
        public void BindValuesSet()
        {
            var gen = new CallbackDelegateGenerator <object>();
            var callbackExecutorMock = new Mock <ICallbackExecutor <object> >();

            callbackExecutorMock.SetupGet(_ => _.CanExecute).Returns(true);

            var generated = (TestBindingDelegate)gen.Generate(typeof(TestBindingDelegate), 1, callbackExecutorMock.Object, context => { });

            generated(new object());

            callbackExecutorMock.Verify(_ =>
                                        _.Execute(It.Is <CallbackExecutionParameters <object> >(__ => __.Parameters.Single().Bindable != null)));
        }