public void ObservableCanExecuteShouldShowUpInCommand() { var input = new[] {true, false, false, true, false, true}; var result = (new TestScheduler()).With(sched => { var can_execute = new Subject<bool>(); var fixture = createCommand(can_execute, sched); var changes_as_observable = fixture.CanExecuteObservable.CreateCollection(); int change_event_count = 0; fixture.CanExecuteChanged += (o, e) => { change_event_count++; }; input.Run(x => { can_execute.OnNext(x); sched.Start(); Assert.Equal(x, fixture.CanExecute(null)); }); // N.B. We check against '5' instead of 6 because we're supposed to // suppress changes that aren't actually changes i.e. false => false sched.AdvanceToMs(10 * 1000); return changes_as_observable; }); input.DistinctUntilChanged().AssertAreEqual(result.ToList()); }
public void MessageBusSmokeTest() { var input = new[] {1, 2, 3, 4}; var result = (new TestScheduler()).With(sched => { var source = new Subject<int>(); var fixture = new MessageBus(); fixture.RegisterMessageSource(source, "Test"); Assert.False(fixture.IsRegistered(typeof (int))); Assert.False(fixture.IsRegistered(typeof (int), "Foo")); var output = fixture.Listen<int>("Test").CreateCollection(); input.Run(source.OnNext); sched.Start(); return output; }); input.AssertAreEqual(result); }
public void MultipleSubscribesShouldntResultInMultipleNotifications() { var input = new[] { 1, 2, 1, 2 }; var sched = new TestScheduler(); var fixture = createCommand(null, sched); var odd_list = new List<int>(); var even_list = new List<int>(); fixture.Where(x => ((int)x) % 2 != 0).Subscribe(x => odd_list.Add((int)x)); fixture.Where(x => ((int)x) % 2 == 0).Subscribe(x => even_list.Add((int)x)); input.Run(x => fixture.Execute(x)); sched.AdvanceToMs(1000); new[]{1,1}.AssertAreEqual(odd_list); new[]{2,2}.AssertAreEqual(even_list); }