Esempio n. 1
0
        public void SimpleCaseTest()
        {
            var test1CalledCount = 0;
            var testObject       = new TestViewModel(0, () => test1CalledCount++, s => {});

            var binder = new MethodBinder();

            binder.Invoke((object)testObject, "Test1");
            test1CalledCount.Is(1);
            binder.Invoke((object)testObject, "Test1");
            test1CalledCount.Is(2);

            //System.Threading.Thread.Sleep(3000);

            //キャッシュが更新されないか目視
            testObject = new TestViewModel(0, () => test1CalledCount++, s => { });

            binder.Invoke((object)testObject, "Test1");
            test1CalledCount.Is(3);
            binder.Invoke((object)testObject, "Test1");
            test1CalledCount.Is(4);

            //System.Threading.Thread.Sleep(3000);

            //キャッシュ辞書からメソッドキャッシュを取得するか目視
            binder = new MethodBinder();
            binder.Invoke((object)testObject, "Test1");
            test1CalledCount.Is(5);
            binder.Invoke((object)testObject, "Test1");
            test1CalledCount.Is(6);
        }
        protected override void OnAttached()
        {
            var associatedObject = AssociatedObject;

            if (associatedObject == null)
            {
                throw new InvalidOperationException();
            }

            base.OnAttached();
            associatedObject.Closing += (sender, e) =>
            {
                if (e == null)
                {
                    throw new ArgumentNullException(nameof(e));
                }

                if (CanClose)
                {
                    return;
                }
                if (CloseCanceledCallbackCommand != null && CloseCanceledCallbackCommand.CanExecute(null))
                {
                    CloseCanceledCallbackCommand.Execute(null);
                }

                if (CloseCanceledCallbackMethodTarget != null && CloseCanceledCallbackMethodName != null)
                {
                    _callbackMethod.Invoke(CloseCanceledCallbackMethodTarget, CloseCanceledCallbackMethodName);
                }

                e.Cancel = !this.CanClose;
            };
        }
Esempio n. 3
0
        public void TestThatAMethodWithNoArgumentsCanBeInvoked()
        {
            MethodBinder binder = new MethodBinder(
                typeof(BindingTester).GetMethod(nameof(BindingTester.EmptyBindableMethod)),
                new HeyRememberDto());

            binder.Invoke();
            Assert.AreEqual("Ok", BindingTester.S);
        }
Esempio n. 4
0
        public void TestThatWhenTheMethodCantBeBoundTheAndNoExceptionHandlerItMustThrow()
        {
            MethodBinder binder = new MethodBinder(_methodInfo, new HeyRememberDto()
            {
                DomainSpecificData = "[1, 2]"
            });

            Assert.Throws(Is.InstanceOf <Exception>(), () => binder.Invoke());
        }
Esempio n. 5
0
        public void TestThatBaseNativeTypesCandBeBindedAndInvoked()
        {
            MethodBinder binder = new MethodBinder(_methodInfo, new HeyRememberDto()
            {
                DomainSpecificData = "[1, \"banana\"]"
            });

            MethodExecutionResultEnum result = binder.Invoke();

            Assert.AreEqual(1, BindingTester.L);
            Assert.AreEqual("banana", BindingTester.S);
            Assert.AreEqual(MethodExecutionResultEnum.Ok, result);
        }
Esempio n. 6
0
        public void TestThatWhenTheMethodCantBeBoundTheExceptionHandlerIsCalled()
        {
            Mock <IHeyExceptionHandler> exceptionHandlerMock = new Mock <IHeyExceptionHandler>();

            MethodBinder binder = new MethodBinder(_methodInfo, new HeyRememberDto()
            {
                DomainSpecificData = "[1, 2]"
            }, exceptionHandlerMock.Object);

            MethodExecutionResultEnum result = binder.Invoke();

            exceptionHandlerMock.Verify(handler => handler.Handle(It.IsAny <Exception>()));
            Assert.AreEqual(MethodExecutionResultEnum.Fail, result);
        }
Esempio n. 7
0
        public void TestThatWhenGivenAConsumerItPassesTheCorrectMethodAndArguments()
        {
            MethodBinder binder = new MethodBinder(_methodInfo, new HeyRememberDto()
            {
                DomainSpecificData = "[1, \"banana\"]"
            });

            object[] myParams = { 1L, "banana" };

            Mock <IBoundMethodConsumer> methodConsumer = new Mock <IBoundMethodConsumer>();

            binder.Invoke(methodConsumer.Object);

            methodConsumer.Verify(consumer => consumer.Use(_methodInfo, It.IsAny <BindingTester>(), It.Is <object[]>(objects => objects.Intersect(myParams).Count() == objects.Length)));
        }