예제 #1
0
        public void ForwardsICommandCanExecuteChangedEventToReferencedGtkButtonFieldIsSensitiveProperty(bool canExecute)
        {
            var returnFirst = !canExecute;
            var returnLast  = canExecute;

            var button  = new Mock <IButton>();
            var command = new Mock <ICommand>();

            command.Setup(x => x.CanExecute(It.IsAny <object>())).Returns(returnFirst);

            var viewModel = new Mock <TestData.ViewModel.WithCommandProperty>();

            viewModel.Setup(x => x.CommandProperty).Returns(command.Object);

            var obj = new BindButtonToCommand(button.Object);

            obj.Bind(viewModel.Object, nameof(viewModel.Object.CommandProperty));

            //Setup again, to return a different value, if event is raised
            command.Setup(x => x.CanExecute(It.IsAny <object>())).Returns(returnLast);
            command.Raise(x => x.CanExecuteChanged += null, EventArgs.Empty);

            command.Verify(x => x.CanExecute(It.IsAny <object>()), Times.AtLeastOnce);
            button.VerifySet(x => x.Sensitive = returnLast, Times.Once);
        }
예제 #2
0
        public void BindThrowsBindingExceptionIfAttributeDoesNotReferenceICommandInViewModel()
        {
            var viewModel = new Mock <TestData.ViewModel.WithCommandProperty>();

            viewModel.Setup(x => x.ObjectProperty).Returns(new object());

            var obj = new BindButtonToCommand(Mock.Of <IButton>());

            Assert.ThrowsException <BindingException>(() => obj.Bind(viewModel.Object, nameof(TestData.ViewModel.WithCommandProperty.ObjectProperty)));
        }