public void Ignore()
        {
            ExceptionHandlerBuilder  builder = new ExceptionHandlerBuilder();
            ArgumentExceptionHandler handler = new ArgumentExceptionHandler();

            builder.Ignore();
            builder.Handler(handler);

            IExceptionHandlerCollection collection = new DefaultExceptionHandlerCollection()
                                                     .Add(builder);

            collection.Handle(new ArgumentException("X"));
            Assert.AreEqual(0, handler.CallCount);
        }
        public void Base()
        {
            ExceptionHandlerBuilder builder = new ExceptionHandlerBuilder();

            ArgumentExceptionHandler    handler1 = new ArgumentExceptionHandler();
            InnerExceptionIsNullHandler handler2 = new InnerExceptionIsNullHandler();
            MessageLongerThanTenHandler handler3 = new MessageLongerThanTenHandler();
            MessageLongerThanTenHandler handler4 = new MessageLongerThanTenHandler();

            builder
            .Handler(handler1);

            builder
            .Filter(a => a.InnerException == null)
            .Handler(handler2)
            .Filter(a => a.Message.Length > 10)
            .Handler(handler3);

            builder
            .Filter(a => a.Message.Length > 10)
            .Handler(handler4);

            IExceptionHandlerCollection collection = new DefaultExceptionHandlerCollection()
                                                     .Add(builder);

            collection.Handle(new Exception("<= 10ch"));
            collection.Handle(new Exception("Long message > 10ch", new Exception()));
            collection.Handle(new Exception("===== 10ch"));

            collection.Handle(new ArgumentException("<= 10ch"));
            collection.Handle(new ArgumentException("Long message > 10ch"));
            collection.Handle(new ArgumentException("===== 10ch", new Exception()));

            Assert.AreEqual(3, handler1.CallCount);
            Assert.AreEqual(4, handler2.CallCount);
            Assert.AreEqual(1, handler3.CallCount);
            Assert.AreEqual(2, handler4.CallCount);
        }