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);
        }
Example #3
0
 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;
 }
Example #4
0
        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);
        }
Example #5
0
 private void AddHandler <T>(Action <T> action) where T : IMessage
 {
     bus.AsObservable <T>()
     .Do(m => Gui(() => action(m)))
     .Subscribe();
 }