/// <summary>
        ///     Add the customization for a NullBuilder to the given <see cref="IFixture" />.
        /// </summary>
        /// <param name="fixture">
        ///     The <see cref="IFixture" /> to be customized.
        /// </param>
        public void Customize(IFixture fixture)
        {
            if (fixture == null)
            {
                throw new ArgumentNullException(nameof(fixture));
            }

            var fixedBuilder = new NullBuilder( );

            var types = new []
            {
                TargetType,
                RegisteredType
            };

            var specimenBuilders = from t in types
                                   select SpecimenBuilderNodeFactory.CreateTypedNode(t,
                                                                                     fixedBuilder)
                                   as ISpecimenBuilder;

            var builder = new CompositeSpecimenBuilder(specimenBuilders);

            fixture.Customizations
            .Insert(0,
                    builder);
        }
        public void CreateTypedNodeReturnsCorrectResult(Type targetType)
        {
            // Fixture setup
            var factory = new DelegatingSpecimenBuilder();
            // Exercise system
            FilteringSpecimenBuilder actual =
                SpecimenBuilderNodeFactory.CreateTypedNode(
                    targetType,
                    factory);
            // Verify outcome
            var expected = new FilteringSpecimenBuilder(
                new CompositeSpecimenBuilder(
                    new NoSpecimenOutputGuard(
                        factory,
                        new InverseRequestSpecification(
                            new SeedRequestSpecification(
                                targetType))),
                    new SeedIgnoringRelay()),
                new OrRequestSpecification(
                    new SeedRequestSpecification(targetType),
                    new ExactTypeSpecification(targetType)));

            Assert.True(expected.GraphEquals(actual, new NodeComparer()));
            // Teardown
        }
 public void Customize(IFixture fixture)
 {
     fixture.Customizations.Add(
         SpecimenBuilderNodeFactory.CreateTypedNode(
             typeof(Foo),
             new Postprocessor(
                 new MethodInvoker(
                     new ModestConstructorQuery()),
                 new CompositeSpecimenCommand(
                     new AutoPropertiesCommand(),
                     new UniqueIDsOnFooCommand()))));
 }
Ejemplo n.º 4
0
        public void SutIsCorrectInitialGraph()
        {
            // Arrange
            var sut = SpecimenBuilderNodeFactory.CreateComposer <int>();
            // Act
            // Assert
            var factory  = new MethodInvoker(new ModestConstructorQuery());
            var expected = new NodeComposer <int>(
                SpecimenBuilderNodeFactory.CreateTypedNode(typeof(int), factory));

            Assert.True(expected.GraphEquals(sut, new NodeComparer()));
        }
Ejemplo n.º 5
0
        public void SutIsCorrectInitialGraph()
        {
            // Fixture setup
            var sut = SpecimenBuilderNodeFactory.CreateComposer <int>();
            // Exercise system
            // Verify outcome
            var factory  = new MethodInvoker(new ModestConstructorQuery());
            var expected = new NodeComposer <int>(
                SpecimenBuilderNodeFactory.CreateTypedNode(typeof(int), factory));

            Assert.True(expected.GraphEquals(sut, new NodeComparer()));
            // Teardown
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Customizes the fixture by creating a <see cref="targetType"/> that has no auto populated properties.
        /// </summary>
        /// <param name="fixture">The fixture to customize.</param>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="fixture"/> is null.
        /// </exception>
        public void Customize(IFixture fixture)
        {
            if (fixture == null)
            {
                throw new ArgumentNullException("fixture");
            }

            var constructor = new MethodInvoker(new ModestConstructorQuery());

            var builder = SpecimenBuilderNodeFactory.CreateTypedNode(
                this.targetType, constructor);

            fixture.Customizations.Insert(0, builder);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Customizes the specified fixture by modifying <see cref="TargetType"/> to use
        /// <see cref="Query"/> as the strategy for creating new specimens.
        /// </summary>
        /// <param name="fixture">The fixture to customize.</param>
        public void Customize(IFixture fixture)
        {
            if (fixture == null)
            {
                throw new ArgumentNullException(nameof(fixture));
            }

            var factory = new MethodInvoker(this.Query);
            var builder = SpecimenBuilderNodeFactory.CreateTypedNode(
                this.TargetType,
                factory);

            fixture.Customizations.Insert(0, builder);
        }
Ejemplo n.º 8
0
        public void CreateComposerReturnsCorrectResult()
        {
            // Arrange
            // Act
            NodeComposer <int> actual =
                SpecimenBuilderNodeFactory.CreateComposer <int>();
            // Assert
            var expected = new NodeComposer <int>(
                SpecimenBuilderNodeFactory.CreateTypedNode(
                    typeof(int),
                    new MethodInvoker(
                        new ModestConstructorQuery())));

            Assert.True(expected.GraphEquals(actual, new NodeComparer()));
        }
Ejemplo n.º 9
0
        public void FromSpecimenBuilderFactoryReturnsCorrectResult()
        {
            // Arrange
            var sut     = SpecimenBuilderNodeFactory.CreateComposer <Guid>();
            var builder = new DelegatingSpecimenBuilder();
            // Act
            var actual = sut.FromFactory(builder);
            // Assert
            var expected = new NodeComposer <Guid>(
                SpecimenBuilderNodeFactory.CreateTypedNode(typeof(Guid), builder));

            var n = Assert.IsAssignableFrom <ISpecimenBuilderNode>(actual);

            Assert.True(expected.GraphEquals(n, new NodeComparer()));
        }
Ejemplo n.º 10
0
        public void FromSpecimenBuilderFactoryReturnsCorrectResult()
        {
            // Fixture setup
            var sut     = SpecimenBuilderNodeFactory.CreateComposer <Guid>();
            var builder = new DelegatingSpecimenBuilder();
            // Exercise system
            var actual = sut.FromFactory(builder);
            // Verify outcome
            var expected = new NodeComposer <Guid>(
                SpecimenBuilderNodeFactory.CreateTypedNode(typeof(Guid), builder));

            var n = Assert.IsAssignableFrom <ISpecimenBuilderNode>(actual);

            Assert.True(expected.GraphEquals(n, new NodeComparer()));
            // Teardown
        }
Ejemplo n.º 11
0
        public void FromSingleArgFuncReturnsCorrectResult()
        {
            // Arrange
            var sut             = SpecimenBuilderNodeFactory.CreateComposer <float>();
            Func <int, float> f = i => i;
            // Act
            var actual = sut.FromFactory(f);
            // Assert
            var factory  = new SpecimenFactory <int, float>(f);
            var expected = new NodeComposer <float>(
                SpecimenBuilderNodeFactory.CreateTypedNode(typeof(float), factory));

            var n = Assert.IsAssignableFrom <ISpecimenBuilderNode>(actual);

            Assert.True(expected.GraphEquals(n, new NodeComparer()));
        }
        public void CreateComposerReturnsCorrectResult()
        {
            // Fixture setup
            // Exercise system
            NodeComposer <int> actual =
                SpecimenBuilderNodeFactory.CreateComposer <int>();
            // Verify outcome
            var expected = new NodeComposer <int>(
                SpecimenBuilderNodeFactory.CreateTypedNode(
                    typeof(int),
                    new MethodInvoker(
                        new ModestConstructorQuery())));

            Assert.True(expected.GraphEquals(actual, new NodeComparer()));
            // Teardown
        }
Ejemplo n.º 13
0
        public void FromSeedReturnsCorrectResult()
        {
            // Arrange
            var sut = SpecimenBuilderNodeFactory.CreateComposer <decimal>();
            Func <decimal, decimal> f = d => d;
            // Act
            var actual = sut.FromSeed(f);
            // Assert
            var factory  = new SeededFactory <decimal>(f);
            var expected = new NodeComposer <decimal>(
                SpecimenBuilderNodeFactory.CreateTypedNode(typeof(decimal), factory));

            var n = Assert.IsAssignableFrom <ISpecimenBuilderNode>(actual);

            Assert.True(expected.GraphEquals(n, new NodeComparer()));
        }
Ejemplo n.º 14
0
        public void FromTripleArgFuncReturnsCorrectResult()
        {
            // Arrange
            var sut = SpecimenBuilderNodeFactory.CreateComposer <decimal>();
            Func <int, Guid, Version, decimal> f = (i, g, v) => i;
            // Act
            var actual = sut.FromFactory(f);
            // Assert
            var factory  = new SpecimenFactory <int, Guid, Version, decimal>(f);
            var expected = new NodeComposer <decimal>(
                SpecimenBuilderNodeFactory.CreateTypedNode(typeof(decimal), factory));

            var n = Assert.IsAssignableFrom <ISpecimenBuilderNode>(actual);

            Assert.True(expected.GraphEquals(n, new NodeComparer()));
        }
Ejemplo n.º 15
0
        public void FromQuadrupleArgFuncReturnsCorrectResult()
        {
            // Arrange
            var sut = SpecimenBuilderNodeFactory.CreateComposer <Version>();
            Func <int, int, int, int, Version> f = (mj, mn, b, r) => new Version(mj, mn, b, r);
            // Act
            var actual = sut.FromFactory(f);
            // Assert
            var factory  = new SpecimenFactory <int, int, int, int, Version>(f);
            var expected = new NodeComposer <Version>(
                SpecimenBuilderNodeFactory.CreateTypedNode(typeof(Version), factory));

            var n = Assert.IsAssignableFrom <ISpecimenBuilderNode>(actual);

            Assert.True(expected.GraphEquals(n, new NodeComparer()));
        }
Ejemplo n.º 16
0
        public void FromDoubleArgFuncReturnsCorrectResult()
        {
            // Fixture setup
            var sut = SpecimenBuilderNodeFactory.CreateComposer <string>();
            Func <int, Version, string> f = (i, _) => i.ToString();
            // Exercise system
            var actual = sut.FromFactory(f);
            // Verify outcome
            var factory  = new SpecimenFactory <int, Version, string>(f);
            var expected = new NodeComposer <string>(
                SpecimenBuilderNodeFactory.CreateTypedNode(typeof(string), factory));

            var n = Assert.IsAssignableFrom <ISpecimenBuilderNode>(actual);

            Assert.True(expected.GraphEquals(n, new NodeComparer()));
            // Teardown
        }
Ejemplo n.º 17
0
        public void FromSeedReturnsCorrectResult()
        {
            // Fixture setup
            var sut = SpecimenBuilderNodeFactory.CreateComposer <decimal>();
            Func <decimal, decimal> f = d => d;
            // Exercise system
            var actual = sut.FromSeed(f);
            // Verify outcome
            var factory  = new SeededFactory <decimal>(f);
            var expected = new NodeComposer <decimal>(
                SpecimenBuilderNodeFactory.CreateTypedNode(typeof(decimal), factory));

            var n = Assert.IsAssignableFrom <ISpecimenBuilderNode>(actual);

            Assert.True(expected.GraphEquals(n, new NodeComparer()));
            // Teardown
        }
Ejemplo n.º 18
0
            /// <summary>
            /// Customizes the specified fixture by modifying <see cref="TargetType"/> to use
            /// <see cref="Query"/> as the strategy for creating new specimens.
            /// </summary>
            /// <param name="fixture">The fixture to customize.</param>
            public void Customize(IFixture fixture)
            {
                if (fixture == null)
                {
                    throw new ArgumentNullException("fixture");
                }

                var factory = new MethodInvoker(this.Query);
                var builder = SpecimenBuilderNodeFactory.CreateTypedNode(
                    this.targetType,
                    factory);

                fixture.Customizations.Insert(
                    0,
                    new Postprocessor(
                        builder,
                        new AutoPropertiesCommand()));
            }
        /// <summary>
        ///     Add the customization for a NullBuilder to the given <see cref="IFixture" />.
        /// </summary>
        /// <param name="fixture">
        ///     The <see cref="IFixture" /> to be customized.
        /// </param>
        public void Customize([NotNull] IFixture fixture)
        {
            Guard.ArgumentNotNull(fixture, nameof(fixture));

            var fixedBuilder = new NullBuilder( );

            var types = new []
            {
                TargetType,
                RegisteredType
            };

            var specimenBuilders = from t in types
                                   select SpecimenBuilderNodeFactory.CreateTypedNode(t, fixedBuilder)
                                   as ISpecimenBuilder;

            var builder = new CompositeSpecimenBuilder(specimenBuilders);

            fixture.Customizations
            .Insert(0,
                    builder);
        }
Ejemplo n.º 20
0
        /// <summary>
        /// Customizes the fixture by freezing the value of <see cref="TargetType"/>.
        /// </summary>
        /// <param name="fixture">The fixture to customize.</param>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="fixture"/> is null.
        /// </exception>
        public void Customize(IFixture fixture)
        {
            if (fixture == null)
            {
                throw new ArgumentNullException("fixture");
            }

            var specimen     = Substitute.For(new[] { this.targetType }, new object[0]);
            var fixedBuilder = new FixedBuilder(specimen);

            var types = new[]
            {
                this.targetType,
                this.registeredType
            };

            var builder = new CompositeSpecimenBuilder(
                from t in types
                select SpecimenBuilderNodeFactory.CreateTypedNode(
                    t, fixedBuilder) as ISpecimenBuilder);

            fixture.Customizations.Insert(0, builder);
        }