コード例 #1
0
    public void CreateWindow(SomeViewModel vm)
    {
        Window win = new Window();

        win.DataContext = vm;
        win.Show();
    }
コード例 #2
0
    public static async Task <SomeViewModel> Create()
    {
        SomeViewModel model = new SomeViewModel();
        await model.LoadData();

        return(model);
    }
コード例 #3
0
        public void Can_safely_raise_event_even_when_no_subsriptions_were_made()
        {
            // Arrange
            var viewModel = new SomeViewModel();

            // Act
               Assert.DoesNotThrow(() =>
               viewModel.NotifyPropertyChanged(new PropertyChangedEventArgs("some")));
        }
コード例 #4
0
    public ActionResult Index()
    {
        MakeCallToFunction();
        var something     = GetSomething();
        var somethingElse = GetSomethingElse(something);
        var model         = new SomeViewModel(somethingElse);

        return(View(model));
    }
コード例 #5
0
    public SomeWindow()
    {
        InitializeComponent();

        var viewModel = new SomeViewModel();

        viewModel.GenericViewRequested += OnGenericViewRequested;
        this.DataContext = viewModel;
    }
コード例 #6
0
    public static SomeRelatedStuff Load(int id)
    {
        var something     = GetSomething();
        var somethingElse = GetSomethingElse(something);
        var model         = new SomeViewModel(somethingElse);

        MakeObject();
        return(this);
    }
コード例 #7
0
        public void Can_safely_raise_event_even_when_no_subsriptions_were_made()
        {
            // Arrange
            var viewModel = new SomeViewModel();

            // Act
            Assert.DoesNotThrow(() =>
                                viewModel.NotifyPropertyChanged(new PropertyChangedEventArgs("some")));
        }
コード例 #8
0
        public void INotifiedPropertyChanged_implementation_can_be_converted_to_reactive()
        {
            // Arrange
            var viewModel = new SomeViewModel();
            var someData  = viewModel.ToReactive(x => x.SomeData);

            // Act
            viewModel.SomeData += 1;

            // Assert
            someData.Value.Should().Be(viewModel.SomeData);
        }
コード例 #9
0
        public void When_event_raised_the_Lambda_handler_should_be_called()
        {
            // Arrange
            var viewModel = new SomeViewModel();
            var handled = false;
            viewModel.PropertyChanged += (sender, args) => handled = true;

            // Act
            viewModel.NotifyPropertyChanged(new PropertyChangedEventArgs("some"));

            // Assert
            handled.Should().BeTrue();
        }
コード例 #10
0
        public void When_event_raised_the_Method_handler_should_be_called()
        {
            // Arrange
            var viewModel = new SomeViewModel();
            var view = new SomeView();
            viewModel.PropertyChanged += view.OnPropertyChanged;

            // Act
            viewModel.NotifyPropertyChanged(new PropertyChangedEventArgs("some"));

            // Assert
            view.Observer.IsPropertyChangedHandled.Should().BeTrue();
        }
コード例 #11
0
        public void With_no_subscriptions_should_unsibscribe_without_exception()
        {
            // Arrange
            var viewModel = new SomeViewModel();
            PropertyChangedEventHandler propertyChanged = (sender, args) => { };

            // Act
            viewModel.PropertyChanged -= propertyChanged;
            viewModel.NotifyPropertyChanged(new PropertyChangedEventArgs("some"));

            // Assert
            // No exceptions expected
        }
コード例 #12
0
        public void When_event_raised_the_Method_handler_should_be_called()
        {
            // Arrange
            var viewModel = new SomeViewModel();
            var view      = new SomeView();

            viewModel.PropertyChanged += view.OnPropertyChanged;

            // Act
            viewModel.NotifyPropertyChanged(new PropertyChangedEventArgs("some"));

            // Assert
            view.Observer.IsPropertyChangedHandled.Should().BeTrue();
        }
コード例 #13
0
        public void When_event_raised_the_Lambda_handler_should_be_called()
        {
            // Arrange
            var viewModel = new SomeViewModel();
            var handled   = false;

            viewModel.PropertyChanged += (sender, args) => handled = true;

            // Act
            viewModel.NotifyPropertyChanged(new PropertyChangedEventArgs("some"));

            // Assert
            handled.Should().BeTrue();
        }
コード例 #14
0
    public ActionResult Index()
    {
        var viewModel = new SomeViewModel();
        var entities  = new DomeinnaambeheerEntities1();
        //change the below query accordingly
        var joinQuery = from d in entities.Domeinnaam
                        join x in entities.X on d.DomeinnaamId equals x.XId
                        join y in entities.Y on d.DomeinnaamId equals y.YId
                        into dom
                        select new { Domeinnaam = dom };

        viewModel.Domeinnaam = joinQuery;
        return(View(viewModel));
    }
コード例 #15
0
        public void When_event_raised_and_GC_collected_and_despite_that_subscriber_is_still_used_then_the_Method_handler_should_not_be_called()
        {
            // Arrange
            var viewModel = new SomeViewModel();
            var view = new SomeView();
            viewModel.PropertyChanged += view.OnPropertyChanged;

            // Act
            GC.Collect();
            viewModel.NotifyPropertyChanged(new PropertyChangedEventArgs("some"));

            // Assert
            view.Observer.IsPropertyChangedHandled.Should().BeFalse();
        }
コード例 #16
0
        public void Should_dynamic_map_the_object_type()
        {
            var displayModel = new DisplayModel
            {
                Radius = 300
            };
            object vm = new SomeViewModel();

            Mapper.DynamicMap(displayModel, vm);
            ((SomeViewModel)vm).Radius.ShouldEqual(300); // fails

            var vm2 = new SomeViewModel();
            Mapper.DynamicMap(displayModel, vm2);
            vm2.Radius.ShouldEqual(300); // succeeds
        }
コード例 #17
0
        public void When_event_raised_and_GC_collected_and_despite_that_subscriber_is_still_used_then_the_Method_handler_should_not_be_called()
        {
            // Arrange
            var viewModel = new SomeViewModel();
            var view      = new SomeView();

            viewModel.PropertyChanged += view.OnPropertyChanged;

            // Act
            GC.Collect();
            viewModel.NotifyPropertyChanged(new PropertyChangedEventArgs("some"));

            // Assert
            view.Observer.IsPropertyChangedHandled.Should().BeFalse();
        }
コード例 #18
0
        public void Reactive_created_from_INotifiedPropertyChanged_should_not_notify_on_non_wrapped_property_change()
        {
            // Arrange
            var viewModel = new SomeViewModel();
            var someData  = viewModel.ToReactive(v => v.SomeData);
            var notified  = false;

            someData.PropertyChanged += (sender, args) => notified = true;

            // Act
            viewModel.OtherData += 1;

            // Assert
            notified.Should().BeFalse();
        }
コード例 #19
0
        internal TimeSpan SubcribeAsUsual(int times)
        {
            var someView = new SomeView();
            var someViewModel = new SomeViewModel();

            var stopwatch = Stopwatch.StartNew();

            for (var i = 0; i < times; i++)
            {
                someViewModel.PropertyChanged += someView.OnPropertyChanged;
            }

            stopwatch.Stop();
            return stopwatch.Elapsed;
        }
コード例 #20
0
        internal TimeSpan NotifyMethodsWithReflection(int times)
        {
            var view = new SomeView();
            var viewModel = new SomeViewModel();

            viewModel.SubscribeWeakly(x => x.Flag, view.OnFlagChanged);

            var stopwatch = Stopwatch.StartNew();

            for (var i = 0; i < times; i++)
                viewModel.NotifyPropertyChanged();

            stopwatch.Stop();
            return stopwatch.Elapsed;
        }
コード例 #21
0
        public void PropertyChanged_event_handler_should_be_called_when_GC_collected_and_subscriber_is_used_aftrewards()
        {
            // Arrange
            var view      = new SomeView();
            var viewModel = new SomeViewModel();

            viewModel.SubscribeWeakly(view, (x, _, e) => x.OnPropertyChanged());

            // Act
            GC.Collect();
            viewModel.NotifyPropertyChanged();

            // Assert
            view.Observer.IsPropertyChangedHandled.Should().BeTrue();
        }
コード例 #22
0
        internal TimeSpan SubcribeAsUsual(int times)
        {
            var someView      = new SomeView();
            var someViewModel = new SomeViewModel();

            var stopwatch = Stopwatch.StartNew();

            for (var i = 0; i < times; i++)
            {
                someViewModel.PropertyChanged += someView.OnPropertyChanged;
            }

            stopwatch.Stop();
            return(stopwatch.Elapsed);
        }
コード例 #23
0
        internal TimeSpan SubcribeMethodsWithReflection(int times)
        {
            var view      = new SomeView();
            var viewModel = new SomeViewModel();

            var stopwatch = Stopwatch.StartNew();

            for (var i = 0; i < times; i++)
            {
                viewModel.SubscribeWeakly(x => x.Flag, view.OnFlagChanged);
            }

            stopwatch.Stop();
            return(stopwatch.Elapsed);
        }
コード例 #24
0
        internal TimeSpan SubcribeHandlers(int times)
        {
            var view      = new SomeView();
            var viewModel = new SomeViewModel();

            var stopwatch = Stopwatch.StartNew();

            for (var i = 0; i < times; i++)
            {
                viewModel.SubscribeWeakly(view, (v, m, e) => v.OnFlagChanged(false));
            }

            stopwatch.Stop();
            return(stopwatch.Elapsed);
        }
コード例 #25
0
        public void When_Lambda_handler_is_unsubscribed_and_event_raised_then_the_handler_should_not_be_called()
        {
            // Arrange
            var viewModel = new SomeViewModel();
            var handled   = false;
            PropertyChangedEventHandler onPropertyChanged = (sender, args) => handled = true;

            viewModel.PropertyChanged += onPropertyChanged;

            // Act
            viewModel.PropertyChanged -= onPropertyChanged;
            viewModel.NotifyPropertyChanged(new PropertyChangedEventArgs("some"));

            // Assert
            handled.Should().BeFalse();
        }
コード例 #26
0
        public void Should_dynamic_map_the_object_type()
        {
            var displayModel = new DisplayModel
            {
                Radius = 300
            };
            object vm = new SomeViewModel();

            Mapper.DynamicMap(displayModel, vm);
            ((SomeViewModel)vm).Radius.ShouldEqual(300); // fails

            var vm2 = new SomeViewModel();

            Mapper.DynamicMap(displayModel, vm2);
            vm2.Radius.ShouldEqual(300); // succeeds
        }
コード例 #27
0
        public void Should_map_the_object_type()
        {
            var displayModel = new DisplayModel
            {
                Radius = 300
            };
            object vm = new SomeViewModel();
            var config = new MapperConfiguration(cfg => cfg.CreateMap<DisplayModel, SomeViewModel>());

            var mapper = config.CreateMapper();
            mapper.Map(displayModel, vm);
            ((SomeViewModel)vm).Radius.ShouldEqual(300); // fails

            var vm2 = new SomeViewModel();
            mapper.Map(displayModel, vm2);
            vm2.Radius.ShouldEqual(300); // succeeds
        }
コード例 #28
0
        public void Should_map_the_object_type()
        {
            var displayModel = new DisplayModel
            {
                Radius = 300
            };
            object vm = new SomeViewModel();

            Mapper.CreateMap <DisplayModel, SomeViewModel>();

            Mapper.Map(displayModel, vm);
            ((SomeViewModel)vm).Radius.ShouldBe(300); // fails

            var vm2 = new SomeViewModel();

            Mapper.Map(displayModel, vm2);
            vm2.Radius.ShouldBe(300); // succeeds
        }
コード例 #29
0
        public void Delegate_event_handler_should_be_called_when_subscriber_not_GC_collected()
        {
            // Arrange
            var view  = new SomeView();
            var model = new SomeViewModel();

            SubscribeWeakly.OnCustomDelegate <PropertyChangedEventHandler, PropertyChangedEventArgs, SomeView>(
                a => a.Invoke,
                h => model.PropertyChanged += h,
                h => model.PropertyChanged -= h,
                view, (v, sender, args) => v.OnPropertyChanged());

            // Act
            model.NotifyPropertyChanged();

            // Assert
            view.Observer.IsPropertyChangedHandled.Should().BeTrue();
        }
コード例 #30
0
 public PartialViewResult AddSomeInfo(SomeViewModel viewModel)
 {
     if (!ModelState.IsValid)
     {
         // ... handle
     }
     else
     {
         // Included this line for valid model state handling
         ModelState.Clear();
         // then persist, etc
         // then change view model
         viewModel.Id        = model.id;
         viewModel.createdOn = model.created_on;
     }
     // then returning the view model to the same partial should now work
     return(PartialView("SomeInfo", viewModel));
 }
コード例 #31
0
        public void Delegate_event_method_handler_should_not_be_called_when_subscription_disposed()
        {
            // Arrange
            var view  = new SomeView();
            var model = new SomeViewModel();

            var subscription = SubscribeWeakly.OnCustomDelegate <PropertyChangedEventHandler, PropertyChangedEventArgs>(
                a => a.Invoke,
                h => model.PropertyChanged += h,
                h => model.PropertyChanged -= h,
                view.OnPropertyChanged);

            // Act
            subscription.Dispose();
            model.NotifyPropertyChanged();

            // Assert
            view.Observer.IsPropertyChangedHandled.Should().BeFalse();
        }
コード例 #32
0
        public void Should_map_the_object_type()
        {
            var displayModel = new DisplayModel
            {
                Radius = 300
            };
            object vm     = new SomeViewModel();
            var    config = new MapperConfiguration(cfg => cfg.CreateMap <DisplayModel, SomeViewModel>());

            var mapper = config.CreateMapper();

            mapper.Map(displayModel, vm);
            ((SomeViewModel)vm).Radius.ShouldBe(300); // fails

            var vm2 = new SomeViewModel();

            mapper.Map(displayModel, vm2);
            vm2.Radius.ShouldBe(300); // succeeds
        }
コード例 #33
0
        public void Delegate_event_method_handler_should_be_called_when_GC_collected_and_subscriber_is_used_aftrewards()
        {
            // Arrange
            var view  = new SomeView();
            var model = new SomeViewModel();

            SubscribeWeakly.OnCustomDelegate <PropertyChangedEventHandler, PropertyChangedEventArgs>(
                a => a.Invoke,
                h => model.PropertyChanged += h,
                h => model.PropertyChanged -= h,
                view.OnPropertyChanged);

            // Act
            GC.Collect();
            model.NotifyPropertyChanged();

            // Assert
            view.Observer.IsPropertyChangedHandled.Should().BeTrue();
        }
コード例 #34
0
        public void When_GC_collected_and_then_I_subscribe_then_already_dead_subscribers_should_be_removed()
        {
            // Arrange
            var viewModel = new SomeViewModel();
            var x         = 0;

            viewModel.PropertyChanged += (sender, args) => ++ x;
            var y = "1";

            viewModel.PropertyChanged += (sender, args) => y += 1;
            viewModel.InternalPropertyChanged.HandlerCount.Should().Be(2);

            // Act
            GC.Collect();
            viewModel.PropertyChanged += (sender, args) => { };

            // Assert
            viewModel.InternalPropertyChanged.HandlerCount.Should().Be(1);
        }
コード例 #35
0
        public void PropertyChanged_event_handler_should_not_be_called_when_GC_collected_and_subscriber_is_not_used_aftrewards()
        {
            // Arrange
            var view      = new SomeView();
            var viewModel = new SomeViewModel();

            viewModel.SubscribeWeakly(view, (x, _, e) => x.OnPropertyChanged());

            // Act
            var observer = view.Observer;

            // ReSharper disable RedundantAssignment
            view = null;
            // ReSharper restore RedundantAssignment
            GC.Collect();
            viewModel.NotifyPropertyChanged();

            // Assert
            observer.IsPropertyChangedHandled.Should().BeFalse();
        }
コード例 #36
0
    public PartialViewResult AddSomeInfo(SomeViewModel viewModel)
    {
        // this is where I am checking if my view model is alright
        // and then the "issue" will occur
        if (!ModelState.IsValid)
        {
            // ... handle
        }
        else
        {
            // I was doing "normal stuff" like
            // translating view model to an entity (let's call it model)
            // committing changes with some ORM and get and id and timestamp back
            // and naturally assign these values to the view model

            viewModel.Id        = model.id;
            viewModel.createdOn = model.created_on;
        }
        // then return the same view and same model **types** of the request
        return(PartialView("SomeInfo", viewModel));
    }
コード例 #37
0
        public void OnClose_ShouldJustHide()
        {
            //---------------Set up test pack-------------------
            var windowManager = new WindowManager();
            var sut           = new SomeViewModel();
            var args          = new CancelEventArgs()
            {
                Cancel = false
            };

            //---------------Assert Precondition----------------
            windowManager.ShowWindow(sut);
            Assert.IsTrue(sut.GetWindow().IsActive);
            Assert.IsTrue(sut.GetWindow().IsVisible);

            //---------------Execute Test ----------------------
            sut.OnClose(new object(), args);

            //---------------Test Result -----------------------
            Assert.IsTrue(args.Cancel);
            Assert.IsFalse(sut.GetWindow().IsVisible);
        }
コード例 #38
0
        public void Delegate_event_method_handler_should_not_be_called_when_GC_collected_and_subscriber_is_not_used_aftrewards()
        {
            // Arrange
            var view  = new SomeView();
            var model = new SomeViewModel();

            SubscribeWeakly.OnCustomDelegate <PropertyChangedEventHandler, PropertyChangedEventArgs>(
                a => a.Invoke,
                h => model.PropertyChanged += h,
                h => model.PropertyChanged -= h,
                view.OnPropertyChanged);

            // Act
            var observer = view.Observer;

            // ReSharper disable RedundantAssignment
            view = null;
            // ReSharper restore RedundantAssignment
            GC.Collect();
            model.NotifyPropertyChanged();

            // Assert
            observer.IsPropertyChangedHandled.Should().BeFalse();
        }
コード例 #39
0
        public void Delegate_event_method_handler_should_not_be_called_when_GC_collected_and_subscriber_is_not_used_aftrewards()
        {
            // Arrange
            var view = new SomeView();
            var model = new SomeViewModel();

            SubscribeWeakly.OnCustomDelegate<PropertyChangedEventHandler, PropertyChangedEventArgs>(
                a => a.Invoke,
                h => model.PropertyChanged += h,
                h => model.PropertyChanged -= h,
                view.OnPropertyChanged);

            // Act
            var observer = view.Observer;
            // ReSharper disable RedundantAssignment
            view = null;
            // ReSharper restore RedundantAssignment
            GC.Collect();
            model.NotifyPropertyChanged();

            // Assert
            observer.IsPropertyChangedHandled.Should().BeFalse();
        }
コード例 #40
0
        public void When_Lambda_handler_is_unsubscribed_and_event_raised_then_the_handler_should_not_be_called()
        {
            // Arrange
            var viewModel = new SomeViewModel();
            var handled = false;
            PropertyChangedEventHandler onPropertyChanged = (sender, args) => handled = true;
            viewModel.PropertyChanged += onPropertyChanged;

            // Act
            viewModel.PropertyChanged -= onPropertyChanged;
            viewModel.NotifyPropertyChanged(new PropertyChangedEventArgs("some"));

            // Assert
            handled.Should().BeFalse();
        }
コード例 #41
0
        internal TimeSpan SubcribeHandlers(int times)
        {
            var view = new SomeView();
            var viewModel = new SomeViewModel();

            var stopwatch = Stopwatch.StartNew();

            for (var i = 0; i < times; i++)
                viewModel.SubscribeWeakly(view, (v, m, e) => v.OnFlagChanged(false));

            stopwatch.Stop();
            return stopwatch.Elapsed;
        }
コード例 #42
0
        public void With_no_subscriptions_should_unsibscribe_without_exception()
        {
            // Arrange
            var viewModel = new SomeViewModel();
            PropertyChangedEventHandler propertyChanged = (sender, args) => { };

            // Act
            viewModel.PropertyChanged -= propertyChanged;
            viewModel.NotifyPropertyChanged(new PropertyChangedEventArgs("some"));

            // Assert
            // No exceptions expected
        }
コード例 #43
0
        public void Delegate_event_handler_should_be_called_when_subscriber_not_GC_collected()
        {
            // Arrange
            var view = new SomeView();
            var model = new SomeViewModel();

            SubscribeWeakly.OnCustomDelegate<PropertyChangedEventHandler, PropertyChangedEventArgs, SomeView>(
                a => a.Invoke,
                h => model.PropertyChanged += h,
                h => model.PropertyChanged -= h,
                view, (v, sender, args) => v.OnPropertyChanged());

            // Act
            model.NotifyPropertyChanged();

            // Assert
            view.Observer.IsPropertyChangedHandled.Should().BeTrue();
        }
コード例 #44
0
        public void PropertyChanged_event_handler_should_not_be_called_when_GC_collected_and_subscriber_is_not_used_aftrewards()
        {
            // Arrange
            var view = new SomeView();
            var viewModel = new SomeViewModel();

            viewModel.SubscribeWeakly(view, (x, _, e) => x.OnPropertyChanged());

            // Act
            var observer = view.Observer;
            // ReSharper disable RedundantAssignment
            view = null;
            // ReSharper restore RedundantAssignment
            GC.Collect();
            viewModel.NotifyPropertyChanged();

            // Assert
            observer.IsPropertyChangedHandled.Should().BeFalse();
        }
コード例 #45
0
        public void PropertyChanged_event_handler_should_be_called_when_GC_collected_and_subscriber_is_used_aftrewards()
        {
            // Arrange
            var view = new SomeView();
            var viewModel = new SomeViewModel();

            viewModel.SubscribeWeakly(view, (x, _, e) => x.OnPropertyChanged());

            // Act
            GC.Collect();
            viewModel.NotifyPropertyChanged();

            // Assert
            view.Observer.IsPropertyChangedHandled.Should().BeTrue();
        }
コード例 #46
0
        public void Delegate_event_method_handler_should_be_called_when_GC_collected_and_subscriber_is_used_aftrewards()
        {
            // Arrange
            var view = new SomeView();
            var model = new SomeViewModel();

            SubscribeWeakly.OnCustomDelegate<PropertyChangedEventHandler, PropertyChangedEventArgs>(
                a => a.Invoke,
                h => model.PropertyChanged += h,
                h => model.PropertyChanged -= h,
                view.OnPropertyChanged);

            // Act
            GC.Collect();
            model.NotifyPropertyChanged();

            // Assert
            view.Observer.IsPropertyChangedHandled.Should().BeTrue();
        }
コード例 #47
0
        public void Delegate_event_method_handler_should_not_be_called_when_subscription_disposed()
        {
            // Arrange
            var view = new SomeView();
            var model = new SomeViewModel();

            var subscription = SubscribeWeakly.OnCustomDelegate<PropertyChangedEventHandler, PropertyChangedEventArgs>(
                a => a.Invoke,
                h => model.PropertyChanged += h,
                h => model.PropertyChanged -= h,
                view.OnPropertyChanged);

            // Act
            subscription.Dispose();
            model.NotifyPropertyChanged();

            // Assert
            view.Observer.IsPropertyChangedHandled.Should().BeFalse();
        }
コード例 #48
0
        public void INotifiedPropertyChanged_implementation_can_be_converted_to_reactive()
        {
            // Arrange
            var viewModel = new SomeViewModel();
            var someData = viewModel.ToReactive(x => x.SomeData);

            // Act
            viewModel.SomeData += 1;

            // Assert
            someData.Value.Should().Be(viewModel.SomeData);
        }
コード例 #49
0
        public void Reactive_created_from_INotifiedPropertyChanged_should_not_notify_on_non_wrapped_property_change()
        {
            // Arrange
            var viewModel = new SomeViewModel();
            var someData = viewModel.ToReactive(v => v.SomeData);
            var notified = false;
            someData.PropertyChanged += (sender, args) => notified = true;

            // Act
            viewModel.OtherData += 1;

            // Assert
            notified.Should().BeFalse();
        }
コード例 #50
0
        public void When_GC_collected_and_then_I_subscribe_then_already_dead_subscribers_should_be_removed()
        {
            // Arrange
            var viewModel = new SomeViewModel();
            var x = 0;
            viewModel.PropertyChanged += (sender, args) => ++x;
            var y = "1";
            viewModel.PropertyChanged += (sender, args) => y += 1;
            viewModel.InternalPropertyChanged.HandlerCount.Should().Be(2);

            // Act
            GC.Collect();
            viewModel.PropertyChanged += (sender, args) => { };

            // Assert
            viewModel.InternalPropertyChanged.HandlerCount.Should().Be(1);
        }