public void ComposeReturnsCorrectResult()
        {
            // Fixture setup
            var builder1 = new DelegatingSpecimenBuilder();
            var builder2 = new DelegatingSpecimenBuilder();
            var builder3 = new DelegatingSpecimenBuilder();

            var composer = new DelegatingComposer <object> {
                OnCompose = () => builder1
            };
            var behaviors = new[]
            {
                new DelegatingSpecimenBuilderTransformation {
                    OnTransform = b => b == builder1 ? builder2 : new DelegatingSpecimenBuilder()
                },
                new DelegatingSpecimenBuilderTransformation {
                    OnTransform = b => b == builder2 ? builder3 : new DelegatingSpecimenBuilder()
                }
            };

            var sut = new BehaviorComposer <object>(composer, behaviors);
            // Exercise system
            var result = sut.Compose();

            // Verify outcome
            Assert.Equal(builder3, result);
            // Teardown
        }
 public void SutIsPostprocessComposer()
 {
     // Fixture setup
     var dummyComposer = new DelegatingComposer<object>();
     // Exercise system
     var sut = new BehaviorComposer<object>(dummyComposer);
     // Verify outcome
     Assert.IsAssignableFrom<ICustomizationComposer<object>>(sut);
     // 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
        }
        public void SutIsPostprocessComposer()
        {
            // Fixture setup
            var dummyComposer = new DelegatingComposer <object>();
            // Exercise system
            var sut = new BehaviorComposer <object>(dummyComposer);

            // Verify outcome
            Assert.IsAssignableFrom <ICustomizationComposer <object> >(sut);
            // Teardown
        }
 public void InitializedWithArrayConstructorHasCorrectComposer()
 {
     // Fixture setup
     var expectedComposer = new DelegatingComposer<object>();
     var sut = new BehaviorComposer<object>(expectedComposer);
     // Exercise system
     ICustomizationComposer<object> result = sut.Composer;
     // Verify outcome
     Assert.Equal(expectedComposer, result);
     // Teardown
 }
        public void InitializedWithArrayConstructorHasCorrectComposer()
        {
            // Fixture setup
            var expectedComposer = new DelegatingComposer <object>();
            var sut = new BehaviorComposer <object>(expectedComposer);
            // Exercise system
            ICustomizationComposer <object> result = sut.Composer;

            // Verify outcome
            Assert.Equal(expectedComposer, result);
            // 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 InitializedWithEnumerableConstructorHasCorrectComposer()
        {
            // Fixture setup
            var expectedComposer = new DelegatingComposer <object>();
            var dummyBehaviors   = Enumerable.Empty <ISpecimenBuilderTransformation>();
            var sut = new BehaviorComposer <object>(expectedComposer, dummyBehaviors);
            // Exercise system
            var result = sut.Composer;

            // Verify outcome
            Assert.Equal(expectedComposer, result);
            // Teardown
        }
        public void ComposeWithNoBehaviorsReturnsCorrectResult()
        {
            // Fixture setup
            var expectedBuilder = new DelegatingSpecimenBuilder();
            var composer        = new DelegatingComposer <object> {
                OnCompose = () => expectedBuilder
            };
            var sut = new BehaviorComposer <object>(composer);
            // Exercise system
            var result = sut.Compose();

            // Verify outcome
            Assert.Equal(expectedBuilder, result);
            // 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 BehaviorsIsStable()
        {
            // Fixture setup
            var dummyComposer = new DelegatingComposer <object>();
            var behaviors     = Enumerable.Range(1, 3)
                                .Select(i => new DelegatingSpecimenBuilderTransformation())
                                .Cast <ISpecimenBuilderTransformation>();
            var sut = new BehaviorComposer <object>(dummyComposer, behaviors);
            var expectedBehaviors = sut.Behaviors;
            // Exercise system
            var result = sut.Behaviors;

            // Verify outcome
            Assert.True(expectedBehaviors.SequenceEqual(result));
            // Teardown
        }
        public void InitializedWithEnumerableConstructorHasCorrectBehaviors()
        {
            // Fixture setup
            var dummyComposer     = new DelegatingComposer <object>();
            var expectedBehaviors = Enumerable.Range(1, 3)
                                    .Select(i => new DelegatingSpecimenBuilderTransformation())
                                    .Cast <ISpecimenBuilderTransformation>()
                                    .ToList();
            var sut = new BehaviorComposer <object>(dummyComposer, expectedBehaviors);
            // Exercise system
            var result = sut.Behaviors;

            // Verify outcome
            Assert.True(expectedBehaviors.SequenceEqual(result));
            // Teardown
        }
        public void WithAutoPropertiesReturnsCorrectResult()
        {
            // Fixture setup
            var expectedComposer = new DelegatingComposer <object>();
            var composer         = new DelegatingComposer <object> {
                OnWithAutoProperties = () => expectedComposer
            };

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

            Assert.Equal(expectedComposer, behaviorComposer.Composer);
            // Teardown
        }
        public void FromSeedReturnsCorrectResult()
        {
            // Fixture setup
            Func <object, object> expectedFactory = s => s;
            var expectedComposer = new DelegatingComposer <object>();
            var composer         = new DelegatingComposer {
                OnFromSeed = f => f == expectedFactory ? expectedComposer : new DelegatingComposer <object>()
            };

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

            Assert.Equal(expectedComposer, behaviorComposer.Composer);
            // Teardown
        }
        public void FromBuilderFactoryReturnsCorrectResult()
        {
            // Fixture setup
            var expectedFactory  = new DelegatingSpecimenBuilder();
            var expectedComposer = new DelegatingComposer <Version>();
            var composer         = new DelegatingComposer <Version> {
                OnFromBuilder = f => f == expectedFactory ? expectedComposer : new DelegatingComposer <Version>()
            };

            var sut = new BehaviorComposer <Version>(composer);
            // Exercise system
            var result = sut.FromFactory(expectedFactory);
            // Verify outcome
            var behaviorComposer = Assert.IsAssignableFrom <BehaviorPostprocessComposer <Version> >(result);

            Assert.Equal(expectedComposer, behaviorComposer.Composer);
            // Teardown
        }
        public void FromQuadrupleInputFactoryReturnsCorrectResult()
        {
            // Fixture setup
            Func <object, object, object, object, object> expectedFactory = (x, y, z, æ) => x;
            var expectedComposer = new DelegatingComposer <object>();
            var composer         = new DelegatingComposer {
                OnFromOverloadeFactory = f => f.Equals(expectedFactory) ? expectedComposer : new DelegatingComposer <object>()
            };

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

            Assert.Equal(expectedComposer, behaviorComposer.Composer);
            // Teardown
        }
        public void DoReturnsCorrectResult()
        {
            // Fixture setup
            Action <object> expectedAction   = s => { };
            var             expectedComposer = new DelegatingComposer <object>();
            var             composer         = new DelegatingComposer <object> {
                OnDo = a => a == expectedAction ? expectedComposer : new DelegatingComposer <object>()
            };

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

            Assert.Equal(expectedComposer, behaviorComposer.Composer);
            // Teardown
        }
        public void WithoutReturnsCorrectResult()
        {
            // Fixture setup
            Expression <Func <PropertyHolder <object>, object> > expectedExpression = x => x.Property;
            var expectedComposer = new DelegatingComposer <PropertyHolder <object> >();
            var composer         = new DelegatingComposer <PropertyHolder <object> >
            {
                OnWithout = f => f == expectedExpression ? expectedComposer : new DelegatingComposer <PropertyHolder <object> >()
            };

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

            Assert.Equal(expectedComposer, behaviorComposer.Composer);
            // 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 ComposeWithNoBehaviorsReturnsCorrectResult()
 {
     // Fixture setup
     var expectedBuilder = new DelegatingSpecimenBuilder();
     var composer = new DelegatingComposer<object> { OnCompose = () => expectedBuilder };
     var sut = new BehaviorComposer<object>(composer);
     // Exercise system
     var result = sut.Compose();
     // Verify outcome
     Assert.Equal(expectedBuilder, result);
     // Teardown
 }
        public void ComposeReturnsCorrectResult()
        {
            // Fixture setup
            var builder1 = new DelegatingSpecimenBuilder();
            var builder2 = new DelegatingSpecimenBuilder();
            var builder3 = new DelegatingSpecimenBuilder();

            var composer = new DelegatingComposer<object> { OnCompose = () => builder1 };
            var behaviors = new[]
                {
                    new DelegatingSpecimenBuilderTransformation { OnTransform = b => b == builder1 ? builder2 : new DelegatingSpecimenBuilder() },
                    new DelegatingSpecimenBuilderTransformation { OnTransform = b => b == builder2 ? builder3 : new DelegatingSpecimenBuilder() }
                };

            var sut = new BehaviorComposer<object>(composer, behaviors);
            // Exercise system
            var result = sut.Compose();
            // Verify outcome
            Assert.Equal(builder3, result);
            // Teardown
        }
        public void WithoutReturnsCorrectResult()
        {
            // Fixture setup
            Expression<Func<PropertyHolder<object>, object>> expectedExpression = x => x.Property;
            var expectedComposer = new DelegatingComposer<PropertyHolder<object>>();
            var composer = new DelegatingComposer<PropertyHolder<object>>
            {
                OnWithout = f => f == expectedExpression ? expectedComposer : new DelegatingComposer<PropertyHolder<object>>()
            };

            var sut = new BehaviorComposer<PropertyHolder<object>>(composer);
            // Exercise system
            var result = sut.Without(expectedExpression);
            // Verify outcome
            var behaviorComposer = Assert.IsAssignableFrom<BehaviorPostprocessComposer<PropertyHolder<object>>>(result);
            Assert.Equal(expectedComposer, behaviorComposer.Composer);
            // Teardown
        }
        public void WithAutoPropertiesReturnsCorrectResult()
        {
            // Fixture setup
            var expectedComposer = new DelegatingComposer<object>();
            var composer = new DelegatingComposer<object> { OnWithAutoProperties = () => expectedComposer };

            var sut = new BehaviorComposer<object>(composer);
            // Exercise system
            var result = sut.WithAutoProperties();
            // Verify outcome
            var behaviorComposer = Assert.IsAssignableFrom<BehaviorPostprocessComposer<object>>(result);
            Assert.Equal(expectedComposer, behaviorComposer.Composer);
            // Teardown
        }
        public void DoReturnsCorrectResult()
        {
            // Fixture setup
            Action<object> expectedAction = s => { };
            var expectedComposer = new DelegatingComposer<object>();
            var composer = new DelegatingComposer<object> { OnDo = a => a == expectedAction ? expectedComposer : new DelegatingComposer<object>() };

            var sut = new BehaviorComposer<object>(composer);
            // Exercise system
            var result = sut.Do(expectedAction);
            // Verify outcome
            var behaviorComposer = Assert.IsAssignableFrom<BehaviorPostprocessComposer<object>>(result);
            Assert.Equal(expectedComposer, behaviorComposer.Composer);
            // Teardown
        }
        public void FromQuadrupleInputFactoryReturnsCorrectResult()
        {
            // Fixture setup
            Func<object, object, object, object, object> expectedFactory = (x, y, z, æ) => x;
            var expectedComposer = new DelegatingComposer<object>();
            var composer = new DelegatingComposer { OnFromOverloadeFactory = f => f.Equals(expectedFactory) ? expectedComposer : new DelegatingComposer<object>() };

            var sut = new BehaviorComposer<object>(composer);
            // Exercise system
            var result = sut.FromFactory(expectedFactory);
            // Verify outcome
            var behaviorComposer = Assert.IsAssignableFrom<BehaviorPostprocessComposer<object>>(result);
            Assert.Equal(expectedComposer, behaviorComposer.Composer);
            // Teardown
        }
        public void FromBuilderFactoryReturnsCorrectResult()
        {
            // Fixture setup
            var expectedFactory = new DelegatingSpecimenBuilder();
            var expectedComposer = new DelegatingComposer<Version>();
            var composer = new DelegatingComposer<Version> { OnFromBuilder = f => f == expectedFactory ? expectedComposer : new DelegatingComposer<Version>() };

            var sut = new BehaviorComposer<Version>(composer);
            // Exercise system
            var result = sut.FromFactory(expectedFactory);
            // Verify outcome
            var behaviorComposer = Assert.IsAssignableFrom<BehaviorPostprocessComposer<Version>>(result);
            Assert.Equal(expectedComposer, behaviorComposer.Composer);
            // Teardown
        }
        public void FromSeedReturnsCorrectResult()
        {
            // Fixture setup
            Func<object, object> expectedFactory = s => s;
            var expectedComposer = new DelegatingComposer<object>();
            var composer = new DelegatingComposer { OnFromSeed = f => f == expectedFactory ? expectedComposer : new DelegatingComposer<object>() };

            var sut = new BehaviorComposer<object>(composer);
            // Exercise system
            var result = sut.FromSeed(expectedFactory);
            // Verify outcome
            var behaviorComposer = Assert.IsAssignableFrom<BehaviorPostprocessComposer<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 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 InitializedWithEnumerableConstructorHasCorrectComposer()
 {
     // Fixture setup
     var expectedComposer = new DelegatingComposer<object>();
     var dummyBehaviors = Enumerable.Empty<ISpecimenBuilderTransformation>();
     var sut = new BehaviorComposer<object>(expectedComposer, dummyBehaviors);
     // Exercise system
     var result = sut.Composer;
     // Verify outcome
     Assert.Equal(expectedComposer, result);
     // Teardown
 }
 public void InitializedWithArrayConstructorHasCorrectBehaviors()
 {
     // Fixture setup
     var dummyComposer = new DelegatingComposer<object>();
     var expectedBehaviors = Enumerable.Range(1, 3)
         .Select(i => new DelegatingSpecimenBuilderTransformation())
         .Cast<ISpecimenBuilderTransformation>()
         .ToArray();
     var sut = new BehaviorComposer<object>(dummyComposer, expectedBehaviors);
     // Exercise system
     IEnumerable<ISpecimenBuilderTransformation> result = sut.Behaviors;
     // Verify outcome
     Assert.True(expectedBehaviors.SequenceEqual(result));
     // Teardown
 }
 public void BehaviorsIsStable()
 {
     // Fixture setup
     var dummyComposer = new DelegatingComposer<object>();
     var behaviors = Enumerable.Range(1, 3)
         .Select(i => new DelegatingSpecimenBuilderTransformation())
         .Cast<ISpecimenBuilderTransformation>();
     var sut = new BehaviorComposer<object>(dummyComposer, behaviors);
     var expectedBehaviors = sut.Behaviors;
     // Exercise system
     var result = sut.Behaviors;
     // Verify outcome
     Assert.True(expectedBehaviors.SequenceEqual(result));
     // Teardown
 }