Example #1
0
        public void Execute_ShouldCallCallback(
            object expected)
        {
            //arrange
            object actual = null;
            var    value  = ReactiveValue.Return(expected, ImmediateScheduler.Instance);
            var    sut    = new ReactiveMvvmCommand <object, object>(o => value, o => actual = o, ImmediateScheduler.Instance);

            //act
            sut.Execute(null);

            //assert
            actual.Should().Be(expected);
        }
Example #2
0
        public void Execute_ShouldExecuteObservable()
        {
            //arrange
            bool observableCalled = false;
            var  value            = ReactiveValue.Return(System.Reactive.Unit.Default, ImmediateScheduler.Instance)
                                    .Do(unit => observableCalled = true)
                                    .AsReactiveValue();
            var sut = new ReactiveMvvmCommand <object, System.Reactive.Unit>(o => value);

            //act
            sut.Execute(null);

            //assert
            observableCalled.Should().BeTrue();
        }
Example #3
0
        public void CanExecute_AfterExecutingCommand_ShouldBePreviousState(
            object obj)
        {
            //arrange
            var value = ReactiveValue.Return(obj, ImmediateScheduler.Instance);
            var sut   = new ReactiveMvvmCommand <object, object>(_ => value, canExecutePredicate: o => false);

            sut.Execute(null);

            //act
            var actual = sut.CanExecute(null);

            //assert
            actual.Should().BeFalse();
        }
Example #4
0
        public void CanExecute_WhenExecutingCommand_ShouldBeFalse(
            object obj)
        {
            //arrange
            var canExecuteValues = new List <bool>();
            var value            = ReactiveValue.Return(obj, ImmediateScheduler.Instance);
            var sut = new ReactiveMvvmCommand <object, object>(_ => value);

            sut.CanExecuteChanged += (sender, args) => canExecuteValues.Add(sut.CanExecute(null));

            //act
            sut.Execute(null);

            //assert
            canExecuteValues.First().Should().BeFalse();
        }
Example #5
0
        public void Execute_ShouldRaiseCanExecuteChangedTwice(
            object obj)
        {
            //arrange
            var value = ReactiveValue.Return(obj, ImmediateScheduler.Instance);
            var sut   = new ReactiveMvvmCommand <object, object>(_ => value);

            sut.MonitorEvents();


            //act
            sut.Execute(null);

            //assert
            sut.ShouldRaise("CanExecuteChanged").Should().HaveCount(2);
        }