public void Handle_type_derived_from_action()
        {
            int callCount = 0;
            var sub       = new DisposableSubscription(new MethodInvocation <MessageA>(msg => callCount++));

            sub.Handles(typeof(MessageA)).ShouldBeTrue();
        }
        public void passed_in_action_is_called()
        {
            int callCount = 0;
            var sub       = new DisposableSubscription(new MethodInvocation <MessageA>(msg => callCount++));

            sub.Push(new MessageA());
            callCount.ShouldBeEqualTo(1);
        }
        public void calling_disposer_raises_disposed_evt()
        {
            var disposeCalled           = false;
            IDisposableSubscription sub = new DisposableSubscription(null);

            sub.Disposed += (s, e) => disposeCalled = true;
            sub.GetDisposer().Dispose();
            disposeCalled.ShouldBeTrue();
        }
        public void Denial_of_shape_correctly_propagates()
        {
            var s =
                new DisposableSubscription(
                    new FilteredSubscription <MessageA>(m => true,
                                                        new UiDispatchingSubscription(null,
                                                                                      new DenyingSubscription())));

            s.Deny.ShouldBeTrue();
        }
        public void Adapter_subscriptions_can_also_be_disposed()
        {
            var b             = new MethodScanner("Handle").MakeBuilder();
            var disposableSub = new DisposableSubscription(b.BuildSubscriptions(new SomeHandler()).First());
            ISubscriptionResolver resolver = new CompositeSubscription();

            resolver.Add(disposableSub);

            var subs = resolver.GetSubscriptionsFor(new MessageA());

            subs.ShouldHaveCount(1);

            disposableSub.GetDisposer().Dispose();

            subs = resolver.GetSubscriptionsFor(new MessageA());
            subs.ShouldHaveCount(0);
        }