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 GetValueShouldActuallyReturnTheValue() { var input = new[] {"Foo", "Bar", "Baz"}; var output = new List<string>(); var output2 = new List<string>(); (new TestScheduler()).With(sched => { var fixture = new TestFixture(); // Two cases: Changed is guaranteed to *not* set ObservedChange.Value fixture.Changed.Subscribe(x => { output.Add((string) x.GetValue()); }); // ...whereas ObservableForProperty *is* guaranteed to. fixture.ObservableForProperty(x => x.IsOnlyOneWord).Subscribe(x => { output2.Add(x.GetValue()); }); foreach (var v in input) { fixture.IsOnlyOneWord = v; } sched.AdvanceToMs(1000); input.AssertAreEqual(output); input.AssertAreEqual(output2); }); }
public void RegisterMemoizedFunctionSmokeTest() { var input = new[] { 1, 1, 1, 1, 1, 2, 2, 2, 2, 2 }; var output = new[] { 5, 5, 5, 5, 5, 10, 10, 10, 10, 10 }; var sched = new EventLoopScheduler(); var results = new List<Timestamped<int>>(); var start = sched.Now; sched.With(_ => { var fixture = new ReactiveAsyncCommand(null, 5, sched); fixture.RegisterMemoizedFunction(x => { Thread.Sleep(1000); return ((int) x) * 5; }, 50, null, sched) .Timestamp() .Subscribe(x => results.Add(x)); Assert.True(fixture.CanExecute(1)); foreach (var i in input) { Assert.True(fixture.CanExecute(i)); fixture.Execute(i); } Thread.Sleep(2500); }); Assert.Equal(10, results.Count); results.Select(x => x.Timestamp - start) .Run(x => { }); output.AssertAreEqual(results.Select(x => x.Value)); Assert.False(results.Any(x => x.Timestamp - start > new TimeSpan(0, 0, 3))); }
public void ValueTest() { var input = new[] {"Foo", "Bar", "Baz"}; IEnumerable<string> output = null; IEnumerable<string> output2 = null; (new TestScheduler()).With(sched => { var fixture = new TestFixture(); // Same deal as above output = fixture.Changed.Value<object, object, string>().CreateCollection(); output2 = fixture.ObservableForProperty(x => x.IsOnlyOneWord).Value().CreateCollection(); foreach (var v in input) { fixture.IsOnlyOneWord = v; } sched.AdvanceToMs(1000); input.AssertAreEqual(output); input.AssertAreEqual(output2); }); }