public void AnonymousWithReturnsCorrectResult()
        {
            // Fixture setup
            Expression <Func <PropertyHolder <object>, object> > expectedExpression = x => x.Property;
            var expectedComposers = Enumerable.Range(1, 3).Select(i => new DelegatingComposer <PropertyHolder <object> >()).ToArray();
            var initialComposers  = (from c in expectedComposers
                                     select new DelegatingComposer <PropertyHolder <object> >
            {
                OnAnonymousWith = f => f == expectedExpression ? c : new DelegatingComposer <PropertyHolder <object> >()
            }).ToArray();
            var sut = new CompositeComposer <PropertyHolder <object> >(initialComposers);
            // Exercise system
            var result = sut.With(expectedExpression);
            // Verify outcome
            var composite = Assert.IsAssignableFrom <CompositePostprocessComposer <PropertyHolder <object> > >(result);

            Assert.True(expectedComposers.SequenceEqual(composite.Composers));
            // Teardown
        }
        public void WithReturnsCorrectResult()
        {
            // Fixture setup
            Expression<Func<PropertyHolder<object>, object>> expectedExpression = x => x.Property;
            var value = new object();

            var expectedComposers = Enumerable.Range(1, 3).Select(i => new DelegatingComposer<PropertyHolder<object>>()).ToArray();
            var initialComposers = (from c in expectedComposers
                                    select new DelegatingComposer<PropertyHolder<object>>
                                    {
                                        OnWith = (f, v) => f == expectedExpression && v == value ? c : new DelegatingComposer<PropertyHolder<object>>()
                                    }).ToArray();
            var sut = new CompositeComposer<PropertyHolder<object>>(initialComposers);
            // Exercise system
            var result = sut.With(expectedExpression, value);
            // Verify outcome
            var composite = Assert.IsAssignableFrom<CompositePostprocessComposer<PropertyHolder<object>>>(result);
            Assert.True(expectedComposers.SequenceEqual(composite.Composers));
            // Teardown
        }