public void WithNullPostprocessComposerThrows()
        {
            // Fixture setup
            var dummyComposer = new DelegatingComposer <object>();
            var sut           = new BehaviorComposer <object>(dummyComposer);

            // Exercise system and verify outcome
            Assert.Throws <ArgumentNullException>(() =>
                                                  sut.With((IPostprocessComposer <object>)null));
            // Teardown
        }
        public void WithPostprocessComposerReturnsResultWithCorrectComposer()
        {
            // Fixture setup
            var dummyComposer = new DelegatingComposer <object>();
            var sut           = new BehaviorComposer <object>(dummyComposer);
            IPostprocessComposer <object> expectedComposer = new DelegatingComposer <object>();
            // Exercise system
            var result = sut.With(expectedComposer);

            // Verify outcome
            Assert.Equal(expectedComposer, result.Composer);
            // Teardown
        }
        public void WithPostprocessComposerReturnsResultWithCorrectBehaviors()
        {
            // Fixture setup
            var dummyComposer1    = new DelegatingComposer <object>();
            var expectedBehaviors = Enumerable.Range(1, 3)
                                    .Select(i => new DelegatingSpecimenBuilderTransformation())
                                    .ToArray();
            var sut = new BehaviorComposer <object>(dummyComposer1, expectedBehaviors);
            // Exercise system
            IPostprocessComposer <object> dummyComposer2 = new DelegatingComposer <object>();
            var result = sut.With(dummyComposer2);

            // Verify outcome
            Assert.True(expectedBehaviors.SequenceEqual(result.Behaviors));
            // Teardown
        }
        public void AnonymousWithReturnsCorrectResult()
        {
            // Fixture setup
            Expression <Func <PropertyHolder <object>, object> > expectedExpression = x => x.Property;
            var expectedComposer = new DelegatingComposer <PropertyHolder <object> >();
            var composer         = new DelegatingComposer <PropertyHolder <object> >
            {
                OnAnonymousWith = f => f == expectedExpression ? expectedComposer : new DelegatingComposer <PropertyHolder <object> >()
            };

            var sut = new BehaviorComposer <PropertyHolder <object> >(composer);
            // Exercise system
            var result = sut.With(expectedExpression);
            // Verify outcome
            var behaviorComposer = Assert.IsAssignableFrom <BehaviorPostprocessComposer <PropertyHolder <object> > >(result);

            Assert.Equal(expectedComposer, behaviorComposer.Composer);
            // Teardown
        }
        public void WithReturnsCorrectResult()
        {
            // Fixture setup
            Expression<Func<PropertyHolder<object>, object>> expectedExpression = x => x.Property;
            var value = new object();

            var expectedComposer = new DelegatingComposer<PropertyHolder<object>>();
            var composer = new DelegatingComposer<PropertyHolder<object>>
            {
                OnWith = (f, v) => f == expectedExpression && v == value ? expectedComposer : new DelegatingComposer<PropertyHolder<object>>()
            };

            var sut = new BehaviorComposer<PropertyHolder<object>>(composer);
            // Exercise system
            var result = sut.With(expectedExpression, value);
            // Verify outcome
            var behaviorComposer = Assert.IsAssignableFrom<BehaviorPostprocessComposer<PropertyHolder<object>>>(result);
            Assert.Equal(expectedComposer, behaviorComposer.Composer);
            // Teardown
        }
 public void WithPostprocessComposerReturnsResultWithCorrectBehaviors()
 {
     // Fixture setup
     var dummyComposer1 = new DelegatingComposer<object>();
     var expectedBehaviors = Enumerable.Range(1, 3)
         .Select(i => new DelegatingSpecimenBuilderTransformation())
         .ToArray();
     var sut = new BehaviorComposer<object>(dummyComposer1, expectedBehaviors);
     // Exercise system
     IPostprocessComposer<object> dummyComposer2 = new DelegatingComposer<object>();
     var result = sut.With(dummyComposer2);
     // Verify outcome
     Assert.True(expectedBehaviors.SequenceEqual(result.Behaviors));
     // Teardown
 }
 public void WithPostprocessComposerReturnsResultWithCorrectComposer()
 {
     // Fixture setup
     var dummyComposer = new DelegatingComposer<object>();
     var sut = new BehaviorComposer<object>(dummyComposer);
     IPostprocessComposer<object> expectedComposer = new DelegatingComposer<object>();
     // Exercise system
     var result = sut.With(expectedComposer);
     // Verify outcome
     Assert.Equal(expectedComposer, result.Composer);
     // Teardown
 }
 public void WithNullPostprocessComposerThrows()
 {
     // Fixture setup
     var dummyComposer = new DelegatingComposer<object>();
     var sut = new BehaviorComposer<object>(dummyComposer);
     // Exercise system and verify outcome
     Assert.Throws<ArgumentNullException>(() =>
         sut.With((IPostprocessComposer<object>)null));
     // Teardown
 }