public void WHEN_viewmodel_creation_is_racing_SHOULD_create_type_once() { //Arrange var typeCreationFunc = new Func <IExtensionViewModel>(() => { var vm = new ExtendedViewModel { BaseProperty = GetRandom.String(10) }; var extension = ExtensionTypeProxyFactory.Default.Create <IExtensionViewModel>(vm); return(extension); }); //Act var tasks = new List <Task <IExtensionViewModel> >(); for (var i = 0; i < 100; i++) { var t = Task.Factory.StartNew(typeCreationFunc); tasks.Add(t); } Task.WaitAll(tasks.Cast <Task>().ToArray()); //Assert tasks.Any(t => t.IsFaulted).Should().BeFalse(); }
public ExtendedContentControl() { if (!DesignMode.DesignModeEnabled) { DataContextChanged += (s, e) => { if (!ReferenceEquals(ViewModel, e.NewValue)) { OnViewModelChanging(); ViewModel = e.NewValue as ExtendedViewModel; if (GetType().ImplementsGenericInterface(typeof(IView <>))) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(IView <ExtendedViewModel> .VM))); } OnViewModelChanged(); } }; } compositor = ElementCompositionPreview.GetElementVisual(this).Compositor; Loaded += OnModalLoaded; }
public PartialViewResult ExtendedView(int _transactionNumber) { //create the view model ExtendedViewModel vm = new ExtendedViewModel(_transactionNumber); //Return the view return(PartialView("Partials/ExtendedView", vm)); }
protected override void OnDisappearing() { base.OnDisappearing(); ExtendedViewModel vm = BindingContext as ExtendedViewModel; if (vm != null && vm.UnloadCommand.CanExecute(null)) { vm.UnloadCommand.Execute(null); } }
public void WHEN_parameter_type_does_is_not_interface_SHOULD_throw_InvalidOperationException() { // Arrange var viewModel = new ExtendedViewModel(); // Act var exception = Assert.Throws <InvalidOperationException>(() => ExtensionTypeProxyFactory.Default.Create <ExtendedViewModel>(viewModel)); // Assert exception.Should().NotBeNull(); }
public void WHEN_viewModel_is_null_SHOULD_throw_ArgumentNullException() { // Arrange ExtendedViewModel viewModel = null; // Act var exception = Assert.Throws <ArgumentNullException>(() => ExtensionTypeProxyFactory.Default.Create <IExtensionViewModel>(viewModel)); // Assert exception.Should().NotBeNull(); }
public void WHEN_parameter_type_is_missing_property_setter_SHOULD_throw_InvalidOperationException() { // Arrange var viewModel = new ExtendedViewModel(); // Act var exception = Assert.Throws <InvalidOperationException>( () => ExtensionTypeProxyFactory.Default.Create <IViewModelExtensionWithMissingPropertySetter>(viewModel)); // Assert exception.Should().NotBeNull(); }
public void WHEN_parameter_type_defines_a_method_SHOULD_throw_InvalidOperationException() { // Arrange var viewModel = new ExtendedViewModel(); // Act var exception = Assert.Throws <InvalidOperationException>( () => ExtensionTypeProxyFactory.Default.Create <IViewModelExtensionWithMethod>(viewModel)); // Assert exception.Should().NotBeNull(); }
WHEN_valid_extension_and_edit_custom_property_SHOULD_store_value_in_extended_model_property_bag() { // Arrange var viewModel = new ExtendedViewModel(); var extendedViewModel = ExtensionTypeProxyFactory.Default.Create <IExtensionViewModel>(viewModel); var customPropertyValue = 12345; // Act extendedViewModel.CustomProperty = customPropertyValue; // Assert extendedViewModel.CustomProperty.ShouldBeEquivalentTo(customPropertyValue); viewModel.Bag.ContainsKey("CustomProperty").Should().BeTrue(); viewModel.Bag["CustomProperty"].Should().Be(customPropertyValue); }
WHEN_parameter_type_is_valid_SHOULD_return_an_instance_of_an_implementation_of_ExtensionOf_view_model_type() { // Arrange var basePropertyValue = "test"; var viewModel = new ExtendedViewModel { BaseProperty = basePropertyValue }; // Act var extendedViewModel = ExtensionTypeProxyFactory.Default.Create <IExtensionViewModel>(viewModel); // Assert extendedViewModel.Should().NotBeNull(); extendedViewModel.Model.Should().NotBeNull(); extendedViewModel.Model.Should().BeAssignableTo <ExtendedViewModel>(); extendedViewModel.Model.Should().BeSameAs(viewModel); extendedViewModel.Model.BaseProperty.ShouldBeEquivalentTo(basePropertyValue); }
public ExtendedMapPage() { BindingContext = new ExtendedViewModel(); var grid = new Grid { RowDefinitions = new RowDefinitionCollection { new RowDefinition { Height = new GridLength(1, GridUnitType.Star) } }, ColumnDefinitions = new ColumnDefinitionCollection { new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) } } }; grid.Children.Add(CreateMapContentView(), 0, 0); Content = grid; }