public void Issue45TestCase_OpenGenerics()
                {
                    var router = new Router <TestModel>(new TestModel());
                    var stream = EventObservable.Merge <BaseEvent, IEventContext, TestModel>(
                        router.GetEventObservable <Foo <string> >(),
                        router.GetEventObservable <Foo <int> >()
                        );

                    stream.Observe((ev, model) => Assert.Pass());
                    router.PublishEvent(new Foo <string>());
                    Assert.Fail();
                }
                public void CanMergeEventStreams()
                {
                    var receivedEvents = new List <BaseEvent>();
                    var stream         = EventObservable.Merge(
                        _router.GetEventObservable <BaseEvent, TestModel>(_model1.Id),                        // stream 1
                        _router.GetEventObservable <Event2, TestModel>(_model1.Id, ObservationStage.Preview), // stream 2
                        _router.GetEventObservable <Event3, TestModel>(_model1.Id)                            // stream 3
                        );

                    stream.Observe((baseEvent, context, model) =>
                    {
                        receivedEvents.Add(baseEvent);
                    });
                    _router.PublishEvent(_model1.Id, new Event1());
                    receivedEvents.Count.ShouldBe(1); // stream 1 should procure
                    _router.PublishEvent(_model1.Id, new Event2());
                    receivedEvents.Count.ShouldBe(3); // stream 1 and 2 should procure
                    _router.PublishEvent(_model1.Id, new Event3());
                    receivedEvents.Count.ShouldBe(5); // stream 1 and 3 should procure
                }