Exemplo n.º 1
0
        public async Task Refresh_SourceIsEmpty_ShouldReturnCorrectValue(
            [Frozen] ThrowingTestScheduler scheduler,
            [Frozen] IViewModel parent,
            ObservableViewModel <object> sut)
        {
            //arrange
            var observer = scheduler.CreateObserver <ObservableViewModelNotification>();

            sut.Subscribe(observer);

            //act
            await sut.RefreshAsync();

            //assert
            var actual   = observer.Values().ToArray();
            var expected = new[]
            {
                new ObservableViewModelNotification()
                {
                    Status = ObservableViewModelStatus.Initialized, Value = null
                },
                new ObservableViewModelNotification()
                {
                    Status = ObservableViewModelStatus.Updating, Value = null
                },
                new ObservableViewModelNotification()
                {
                    Status = ObservableViewModelStatus.Empty, Value = null
                }
            };

            actual.ShouldAllBeEquivalentTo(expected);
        }
Exemplo n.º 2
0
        public void RefreshOn_WithOverlappingRefresh_ShouldCancelPreviousTask(
            [Frozen] TestSchedulers scheduler,
            [Frozen] Subject <Unit> refreshOn)
        {
            //arrange
            CancellationToken ct = CancellationToken.None;
            var i   = 0;
            var sut = new ObservableViewModel <object>(c =>
            {
                if (++i == 1)
                {
                    ct = c;
                    refreshOn.OnNext(Unit.Default);
                }
                return(Task.FromResult(new object()));
            }, _ => false, refreshOn, TimeSpan.Zero, new CompositeDisposable(), scheduler);


            //act
            refreshOn.OnNext(Unit.Default);
            scheduler.Start();

            //assert
            ct.IsCancellationRequested.Should().BeTrue();
        }
Exemplo n.º 3
0
        public void RefreshAsync_WithTimeout_ShouldThrow(
            [Frozen] ThrowingTestScheduler scheduler,
            ObservableViewModel <object> sut)
        {
            //arrange
            var observer = scheduler.CreateObserver <ObservableViewModelNotification>();

            sut.Subscribe(observer);
            scheduler.Schedule(TimeSpan.FromTicks(201), () => sut.Refresh());

            //act
            scheduler.Start();
            //await sut.RefreshAsync();

            //assert
            var actual   = observer.Values().ToArray();
            var expected = new[]
            {
                new ObservableViewModelNotification()
                {
                    Status = ObservableViewModelStatus.Initialized, Value = null
                },
                new ObservableViewModelNotification()
                {
                    Status = ObservableViewModelStatus.Updating, Value = null
                },
                new ObservableViewModelNotification()
                {
                    Status = ObservableViewModelStatus.Timeout, Value = null
                }
            };

            actual.ShouldAllBeEquivalentTo(expected);
        }
Exemplo n.º 4
0
 public void CurrentValue_WhenInitialized_ShouldBeDefault(
     [Frozen] ThrowingTestScheduler scheduler,
     ObservableViewModel <object> sut)
 {
     //assert
     sut.CurrentValue.Should().BeNull();
 }
Exemplo n.º 5
0
        public void RefreshOn_WithOverlappingRefresh_ShouldReturnCorrectValue(
            [Frozen] TestSchedulers scheduler,
            [Frozen] Subject <Unit> refreshOn,
            object value)
        {
            //arrange
            var observer = scheduler.CreateObserver <ObservableViewModelNotification>();
            var i        = 0;
            var sut      = new ObservableViewModel <object>(c =>
            {
                if (++i == 1)
                {
                    refreshOn.OnNext(Unit.Default);
                }
                return(Task.FromResult(value));
            }, _ => false, refreshOn, TimeSpan.Zero, new CompositeDisposable(), scheduler);

            sut.Subscribe(observer);

            //act
            refreshOn.OnNext(Unit.Default);
            scheduler.Start();

            //assert
            var expected = new ObservableViewModelNotification()
            {
                Status = ObservableViewModelStatus.Value,
                Value  = value
            };

            observer.Values().Last().ShouldBeEquivalentTo(expected);
        }
Exemplo n.º 6
0
        public void Accept_ShouldCallVisitor(
            ObservableViewModel <object> sut,
            Mock <IObservableViewModelVisitor> visitor)
        {
            //act
            sut.Accept(visitor.Object);

            //assert
            visitor.Verify(v => v.Visit(sut));
        }
Exemplo n.º 7
0
        public void Visit_WithNotReferencenullableTypeValue_ShouldReturnTrue(
            NullReferenceEmptyPredicateVisitor sut,
            ObservableViewModel <int?> ovm)
        {
            //arrange

            //act
            sut.Visit(ovm);
            var actual = ovm.EmptyPredicate(null);

            //assert
            actual.Should().BeTrue();
        }
Exemplo n.º 8
0
        public void Visit_WithNotNullValue_ShouldReturnFalse(
            NullReferenceEmptyPredicateVisitor sut,
            ObservableViewModel <object> ovm)
        {
            //arrange

            //act
            sut.Visit(ovm);
            var actual = ovm.EmptyPredicate(new object());

            //assert
            actual.Should().BeFalse();
        }
        public void Visit_WhenValueIsNotEnumerable_OvmPredicateShouldReturnFalse(
            EnumerableEmptyPredicateVisitor sut,
            ObservableViewModel <object> ovm)
        {
            //arrange

            //act
            sut.Visit(ovm);
            var actual = ovm.EmptyPredicate(new object());

            //assert
            actual.Should().BeFalse();
        }
        public void Visit_OvmPredicateShouldReturnTrue(
            EnumerableEmptyPredicateVisitor sut,
            ObservableViewModel <string[]> ovm)
        {
            //arrange

            //act
            sut.Visit(ovm);
            var actual = ovm.EmptyPredicate(new string[0]);

            //assert
            actual.Should().BeTrue();
        }
		public void Visit_WhenValueIsNotEnumerable_OvmPredicateShouldReturnFalse(
			EnumerableEmptyPredicateVisitor sut,
			ObservableViewModel<object> ovm)
		{
			//arrange

			//act
			sut.Visit(ovm);
			var actual = ovm.EmptyPredicate(new object());

			//assert
			actual.Should().BeFalse();
		}
		public void Visit_OvmPredicateShouldReturnTrue(
			EnumerableEmptyPredicateVisitor sut,
			ObservableViewModel<string[]> ovm)
		{
			//arrange
			
			//act
			sut.Visit(ovm);
			var actual = ovm.EmptyPredicate(new string[0]);

			//assert
			actual.Should().BeTrue();
		}
		public void Visit_WithNotNullValue_ShouldReturnFalse(
			NullReferenceEmptyPredicateVisitor sut,
			ObservableViewModel<object> ovm)
		{
			//arrange

			//act
			sut.Visit(ovm);
			var actual = ovm.EmptyPredicate(new object());

			//assert
			actual.Should().BeFalse();
		}
		public void Visit_WithNotReferencenullableTypeValue_ShouldReturnTrue(
			NullReferenceEmptyPredicateVisitor sut,
			ObservableViewModel<int?> ovm)
		{
			//arrange

			//act
			sut.Visit(ovm);
			var actual = ovm.EmptyPredicate(null);

			//assert
			actual.Should().BeTrue();
		}
Exemplo n.º 15
0
        public void Visit_WithNotReferenceTypeValue_ShouldReturnFalse(
            NullReferenceEmptyPredicateVisitor sut,
            ObservableViewModel <int> ovm,
            int value)
        {
            //arrange

            //act
            sut.Visit(ovm);
            var actual = ovm.EmptyPredicate(value);

            //assert
            actual.Should().BeFalse();
        }
		public void Visit_WhenValueIsNotEmpty_OvmPredicateShouldReturnFalse(
			EnumerableEmptyPredicateVisitor sut,
			ObservableViewModel<string[]> ovm,
			string[] value)
		{
			//arrange

			//act
			sut.Visit(ovm);
			var actual = ovm.EmptyPredicate(value);

			//assert
			actual.Should().BeFalse();
		}
        public void Visit_WhenValueIsNotEmpty_OvmPredicateShouldReturnFalse(
            EnumerableEmptyPredicateVisitor sut,
            ObservableViewModel <string[]> ovm,
            string[] value)
        {
            //arrange

            //act
            sut.Visit(ovm);
            var actual = ovm.EmptyPredicate(value);

            //assert
            actual.Should().BeFalse();
        }
		public void Visit_WithNotReferenceTypeValue_ShouldReturnFalse(
			NullReferenceEmptyPredicateVisitor sut,
			ObservableViewModel<int> ovm,
			int value)
		{
			//arrange

			//act
			sut.Visit(ovm);
			var actual = ovm.EmptyPredicate(value);

			//assert
			actual.Should().BeFalse();
		}
Exemplo n.º 19
0
        public void Dispose_ShouldYieldCompleted(
            [Frozen] ThrowingTestScheduler scheduler,
            ObservableViewModel <object> sut)
        {
            //arrange
            var observer = scheduler.CreateObserver <ObservableViewModelNotification>();

            sut.Subscribe(observer);

            //act
            sut.Dispose();

            //assert
            observer.Completed().Should().HaveCount(1);
        }
Exemplo n.º 20
0
        public async Task ChainEmptyPredicate_WhenPredicateReturnsFalse_OvmStateShouldBeValue(
            [Frozen] TestSchedulers schedulers,
            ObservableViewModel <object> sut)
        {
            //arrange
            Func <object, bool> predicate = o => false;
            var observer = schedulers.CreateObserver <ObservableViewModelNotification>();

            sut.ChainEmptyPredicate(predicate);
            sut.Subscribe(observer);

            //act
            await sut.RefreshAsync();

            //assert
            observer.Values().Last().Should().Match <ObservableViewModelNotification>(n => n.Status == ObservableViewModelStatus.Value);
        }
Exemplo n.º 21
0
        public async Task CurrentValue_SourceYieldError_ShouldReturnCorrectValue(
            [Frozen] ThrowingTestScheduler scheduler,
            [Frozen] Exception error,
            [Frozen] IViewModel parent,
            ObservableViewModel <object> sut)
        {
            //arrange
            var observer = scheduler.CreateObserver <ObservableViewModelNotification>();

            sut.Subscribe(observer);

            //act
            await sut.RefreshAsync();

            //assert
            var actual = sut.CurrentValue;

            actual.Should().BeNull();
        }
Exemplo n.º 22
0
        public void RefreshOn_ShouldRefresh(
            [Frozen] ThrowingTestScheduler scheduler,
            [Frozen] Subject <Unit> refreshOn,
            [Frozen] object value,
            ObservableViewModel <object> sut)
        {
            //arrange
            var observer = scheduler.CreateObserver <ObservableViewModelNotification>();

            sut.Subscribe(observer);

            //act
            scheduler.Schedule(TimeSpan.FromTicks(201), () => refreshOn.OnNext(Unit.Default));
            scheduler.Start();

            //assert
            var expected = new ObservableViewModelNotification()
            {
                Status = ObservableViewModelStatus.Value,
                Value  = value
            };

            observer.Values().Last().ShouldBeEquivalentTo(expected);
        }
Exemplo n.º 23
0
 protected abstract string GetDependencyPath(ObservableViewModel viewModel);
Exemplo n.º 24
0
 public ObservableViewModel CreateViewModel()
 {
     return(ObservableViewModel.Create(context.ServiceProvider, PropertiesProvider));
 }
Exemplo n.º 25
0
 protected override string GetDependencyPath(ObservableViewModel viewModel)
 {
     return(viewModel.RootNode.GetChild(Instance).Path);
 }