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; }; }
public void TestThatAMethodWithNoArgumentsCanBeInvoked() { MethodBinder binder = new MethodBinder( typeof(BindingTester).GetMethod(nameof(BindingTester.EmptyBindableMethod)), new HeyRememberDto()); binder.Invoke(); Assert.AreEqual("Ok", BindingTester.S); }
public void TestThatWhenTheMethodCantBeBoundTheAndNoExceptionHandlerItMustThrow() { MethodBinder binder = new MethodBinder(_methodInfo, new HeyRememberDto() { DomainSpecificData = "[1, 2]" }); Assert.Throws(Is.InstanceOf <Exception>(), () => binder.Invoke()); }
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); }
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); }
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))); }