public async Task TestSchedule() { var vm1 = new ConcreteViewModel(); var vm2 = new ConcreteViewModel(); var vm3 = new ConcreteViewModel(); // Scheduler hat noch kein Aktuelles ViewModel Assert.IsNull(_scheduler.Aktuell); _scheduler.Start(); // Scheduler hat immer noch kein Aktuelles ViewModel Assert.IsNull(_scheduler.Aktuell); _scheduler.Schedule(vm1); _scheduler.Schedule(vm2); // Scheduler hat Aktuell = vm1 Assert.ReferenceEquals(_scheduler.Aktuell, vm1); await Task.Run(() => Thread.Sleep(1100)); // Scheduler hat Aktuell = vm2 Assert.ReferenceEquals(_scheduler.Aktuell, vm2); await Task.Run(() => Thread.Sleep(1000)); // Scheduler hat Aktuell wieder vm2 Assert.ReferenceEquals(_scheduler.Aktuell, vm1); _scheduler.ScheduleInstant(vm3); // Scheduler hat jetzt vm3 und behält es Assert.ReferenceEquals(_scheduler.Aktuell, vm3); await Task.Run(() => Thread.Sleep(1500)); Assert.ReferenceEquals(_scheduler.Aktuell, vm3); }
public void PropertyChangedCanBeRaisedForAllPropertiesAtOnce() { ConcreteViewModel target = new ConcreteViewModel(); target.RaisePropertyChangedForAllProperties(); // If we made it this far, then an exception was not thrown during the // property name verification process, so the test succeeded. }
public void PropertyChangedIsRaised() { ConcreteViewModel target = new ConcreteViewModel(); bool wasRaisedCorrectly = false; target.PropertyChanged += (sender, e) => wasRaisedCorrectly = e.PropertyName == "PropertyThatWorksCorrectly"; target.PropertyThatWorksCorrectly = "whatever"; Assert.IsTrue(wasRaisedCorrectly); }
public MainWindow() { Current = new ConcreteViewModel { Products = { new Product(), new Product() } }; InitializeComponent(); }
public void InvalidPropertyNameIsNotReportedInReleaseMode() { ConcreteViewModel target = new ConcreteViewModel(); target.PropertyThatThrows = "whatever"; }