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);
        }
 public void Handle_type_derived_from_action()
 {
     int callCount = 0;
     var sub = new DisposableSubscription(new MethodInvocation<MessageA>(msg => callCount++));
     sub.Handles(typeof(MessageA)).ShouldBeTrue();
 }