public void CanListenPositionChangeEvents() { // ARRANGE var waitEvent = new ManualResetEvent(false); var messageBus = new MessageBus(); NmeaPositionMocker mocker; int count = 0; messageBus.AsObservable <GeoPosition>() .ObserveOn(Scheduler.ThreadPool) .Subscribe(position => count++); // ACT Action <TimeSpan> delayAction = _ => Thread.Sleep(0); // do not wait to make test faster using (Stream stream = new FileStream(TestHelper.NmeaFilePath, FileMode.Open)) { mocker = new NmeaPositionMocker(stream, messageBus); mocker.OnDone += (s, e) => waitEvent.Set(); mocker.Start(delayAction); } // ASSERT if (!waitEvent.WaitOne(TimeSpan.FromSeconds(60))) { throw new TimeoutException(); } mocker.Stop(); Assert.Greater(count, 1); }
public void CanListenPositionChangeEvents() { // ARRANGE var waitEvent = new ManualResetEvent(false); var messageBus = new MessageBus(); NmeaPositionMocker mocker; int count = 0; messageBus.AsObservable<GeoPosition>() .ObserveOn(Scheduler.ThreadPool) .Subscribe(position => count++); // ACT Action<TimeSpan> delayAction = _ => Thread.Sleep(0); // do not wait to make test faster using (Stream stream = new FileStream(TestHelper.NmeaFilePath, FileMode.Open)) { mocker = new NmeaPositionMocker(stream, messageBus); mocker.OnDone += (s, e) => waitEvent.Set(); mocker.Start(delayAction); } // ASSERT if(!waitEvent.WaitOne(TimeSpan.FromSeconds(60))) throw new TimeoutException(); mocker.Stop(); Assert.AreEqual(16, count); }
private static MessageBus GetEarlyEventBus(Entities dataContext, IWorkspace workspace, MessageBus persistedEventBus) { var messageBus = new MessageBus(); messageBus .AsObservable<IDomainEvent>() .Do(e => workspace.Committing += (s, ea) => { ObjectStateEntry entry; if (dataContext.ObjectStateManager.TryGetObjectStateEntry(e.Sender, out entry)) { //resend the same event after commit persistedEventBus.Send(e); } }) .Subscribe(); return messageBus; }
private static MessageBus GetEarlyEventBus(Entities dataContext, IWorkspace workspace, MessageBus persistedEventBus) { var messageBus = new MessageBus(); messageBus .AsObservable <IDomainEvent>() .Do(e => workspace.Committing += (s, ea) => { ObjectStateEntry entry; if (dataContext.ObjectStateManager.TryGetObjectStateEntry(e.Sender, out entry)) { //resend the same event after commit persistedEventBus.Send(e); } }) .Subscribe(); return(messageBus); }
private void AddHandler <T>(Action <T> action) where T : IMessage { bus.AsObservable <T>() .Do(m => Gui(() => action(m))) .Subscribe(); }