public void ResolveViewModel_ShouldReturnCorrectValue(
			[Frozen]Mock<IViewModelFactory> innerFactory,
			AddMvvmVisitorsViewModelFactory sut,
			IViewModel expected,
			object request)
		{
			//arrange
			innerFactory.Setup(f => f.ResolveViewModel(request)).Returns(expected);

			//act
			var actual = sut.ResolveViewModel(request);

			//assert
			actual.Should().Be(expected);
		}
		public void ResolveViewModel_ShouldAddOvmVisitors(
			[Frozen]Mock<IViewModelFactory> innerFactory,
			[Frozen]IEnumerable<IObservableViewModelVisitor> visitors,
			AddMvvmVisitorsViewModelFactory sut,
			Mock<IViewModel> viewModel,
			Mock<IObservableViewModelBuilderProvider> ovmBuilderProvider,
			object request)
		{
			//arrange
			innerFactory.Setup(f => f.ResolveViewModel(request)).Returns(() => viewModel.Object);
			viewModel.Setup(vm => vm.OvmBuilderProvider).Returns(() => ovmBuilderProvider.Object);
			foreach (var ovmVisitor in visitors)
			{
				var visitor = ovmVisitor;
				ovmBuilderProvider.Setup(provider => provider.AddVisitor(visitor))
									  .Verifiable();
			}

			//act
			sut.ResolveViewModel(request);

			//assert
			ovmBuilderProvider.Verify();
		}
		public void ReleaseViewModel_ShouldReturnCorrectValue(
			[Frozen]Mock<IViewModelFactory> innerFactory,
			AddMvvmVisitorsViewModelFactory sut,
			IViewModel expected)
		{
			//arrange		

			//act
			sut.ReleaseViewModel(expected);

			//assert
			innerFactory.Verify(f => f.ReleaseViewModel(expected));
		}
		public void Sut_IsViewModelFactory(
		  AddMvvmVisitorsViewModelFactory sut)
		{
			sut.Should().BeAssignableTo<IViewModelFactory>();
		}