public void SutIsSpecimenBuilder()
        {
            // Act
            var sut = new NSubstituteBuilder(Substitute.For <ISpecimenBuilder>());

            // Assert
            Assert.IsAssignableFrom <ISpecimenBuilder>(sut);
        }
        public void SpecificationIsAbstractTypeSpecificationWhenInitializedWithConstructorWithoutSpecificationParameter()
        {
            // Arrange
            var sut = new NSubstituteBuilder(Substitute.For <ISpecimenBuilder>());
            // Act
            var result = sut.SubstitutionSpecification;

            // Assert
            Assert.IsType <AbstractTypeSpecification>(result);
        }
        public void SutIsSpecimenBuilder()
        {
            // Exercise system
            var sut = new NSubstituteBuilder(Substitute.For <ISpecimenBuilder>());

            // Verify outcome
            Assert.IsAssignableFrom <ISpecimenBuilder>(sut);

            // Teardown
        }
        public void SutIsSpecimenBuilder()
        {
            // Exercise system
            var sut = new NSubstituteBuilder(Substitute.For<ISpecimenBuilder>());

            // Verify outcome
            Assert.IsAssignableFrom<ISpecimenBuilder>(sut);

            // Teardown
        }
        public void SpecificationIsCorrect()
        {
            // Arrange
            IRequestSpecification specification = new TrueRequestSpecification();
            var sut = new NSubstituteBuilder(Substitute.For <ISpecimenBuilder>(), specification);
            // Act
            var result = sut.SubstitutionSpecification;

            // Assert
            Assert.Equal(specification, result);
        }
        public void BuilderIsCorrect()
        {
            // Arrange
            var expectedBuilder = Substitute.For <ISpecimenBuilder>();
            var sut             = new NSubstituteBuilder(expectedBuilder);
            // Act
            var result = sut.Builder;

            // Assert
            Assert.Equal(expectedBuilder, result);
        }
 public void SpecificationIsCorrectWhenInitializedWithBuilder()
 {
     // Fixture setup
     var expectedBuilder = new NSubstituteBuilder(Substitute.For<ISpecimenBuilder>());
     var sut = new AutoNSubstituteCustomization(expectedBuilder);
     // Exercise system
     ISpecimenBuilder result = sut.Builder;
     // Verify outcome
     Assert.Equal(expectedBuilder, result);
     // Teardown
 }
        public void SpecificationIsCorrectWhenInitializedWithBuilder()
        {
            // Arrange
            var expectedBuilder = new NSubstituteBuilder(Substitute.For <ISpecimenBuilder>());
            var sut             = new AutoNSubstituteCustomization(expectedBuilder);
            // Act
            ISpecimenBuilder result = sut.Builder;

            // Assert
            Assert.Equal(expectedBuilder, result);
        }
        public void SpecificationIsCorrectWhenInitializedWithBuilder()
        {
            // Fixture setup
            var expectedBuilder = new NSubstituteBuilder(Substitute.For <ISpecimenBuilder>());
            var sut             = new AutoNSubstituteCustomization(expectedBuilder);
            // Exercise system
            ISpecimenBuilder result = sut.Builder;

            // Verify outcome
            Assert.Equal(expectedBuilder, result);
            // Teardown
        }
        public void SpecificationIsAbstractTypeSpecificationWhenInitializedWithConstructorWithoutSpecificationParameter()
        {
            // Fixture setup
            var sut = new NSubstituteBuilder(Substitute.For<ISpecimenBuilder>());

            // Exercise system
            var result = sut.SubstitutionSpecification;

            // Verify outcome
            Assert.IsType<AbstractTypeSpecification>(result);

            // Teardown
        }
        public void SpecificationIsAbstractTypeSpecificationWhenInitializedWithConstructorWithoutSpecificationParameter()
        {
            // Fixture setup
            var sut = new NSubstituteBuilder(Substitute.For <ISpecimenBuilder>());

            // Exercise system
            var result = sut.SubstitutionSpecification;

            // Verify outcome
            Assert.IsType <AbstractTypeSpecification>(result);

            // Teardown
        }
        public void Create_WithRequestThatIsNotAType_ReturnsNoSpecimen(object request)
        {
            // Arrange
            var specification = new TrueRequestSpecification();
            var sut           = new NSubstituteBuilder(Substitute.For <ISpecimenBuilder>(), specification);
            var context       = Substitute.For <ISpecimenContext>();
            // Act
            var result = sut.Create(request, context);
            // Assert
            var expected = new NoSpecimen();

            Assert.Equal(expected, result);
        }
        public void SpecificationIsCorrect()
        {
            // Fixture setup
            IRequestSpecification specification = new TrueRequestSpecification();
            var sut = new NSubstituteBuilder(Substitute.For <ISpecimenBuilder>(), specification);

            // Exercise system
            var result = sut.SubstitutionSpecification;

            // Verify outcome
            Assert.Equal(specification, result);

            // Teardown
        }
        public void SpecificationIsCorrect()
        {
            // Fixture setup
            IRequestSpecification specification = new TrueRequestSpecification();
            var sut = new NSubstituteBuilder(Substitute.For<ISpecimenBuilder>(), specification);

            // Exercise system
            var result = sut.SubstitutionSpecification;

            // Verify outcome
            Assert.Equal(specification, result);

            // Teardown
        }
        public void BuilderIsCorrect()
        {
            // Fixture setup
            var expectedBuilder = Substitute.For<ISpecimenBuilder>();
            var sut = new NSubstituteBuilder(expectedBuilder);

            // Exercise system
            var result = sut.Builder;

            // Verify outcome
            Assert.Equal(expectedBuilder, result);

            // Teardown
        }
        public void Create_WithRequestThatDoesNotMatchSpecification_ReturnsNoSpecimen()
        {
            // Arrange
            var specification = new FalseRequestSpecification();
            var sut           = new NSubstituteBuilder(Substitute.For <ISpecimenBuilder>(), specification);
            var context       = Substitute.For <ISpecimenContext>();
            var request       = typeof(ConcreteType);
            // Act
            var result = sut.Create(request, context);
            // Assert
            var expected = new NoSpecimen();

            Assert.Equal(expected, result);
        }
        public void BuilderIsCorrect()
        {
            // Fixture setup
            var expectedBuilder = Substitute.For <ISpecimenBuilder>();
            var sut             = new NSubstituteBuilder(expectedBuilder);

            // Exercise system
            var result = sut.Builder;

            // Verify outcome
            Assert.Equal(expectedBuilder, result);

            // Teardown
        }
        public void CreateWithAbstractionRequest_ReturnsNoSpecimen_WhenDecoratedBuilderReturnsNull(Type request)
        {
            // Arrange
            var builder = Substitute.For <ISpecimenBuilder>();
            var context = Substitute.For <ISpecimenContext>();

            builder.Create(request, context).Returns(null);
            var sut = new NSubstituteBuilder(builder);
            // Act
            var result = sut.Create(request, context);
            // Assert
            var expected = new NoSpecimen();

            Assert.Equal(expected, result);
        }
        public void CreateWithAbstractionRequest_ReturnsResultFromDecoratedBuilder(Type request)
        {
            // Arrange
            var builder  = Substitute.For <ISpecimenBuilder>();
            var context  = Substitute.For <ISpecimenContext>();
            var expected = new object();

            builder.Create(request, context).Returns(expected);
            var sut = new NSubstituteBuilder(builder);
            // Act
            var result = sut.Create(request, context);

            // Assert
            Assert.Same(expected, result);
        }
        public void Create_WithRequestThatIsNotAType_ReturnsNoSpecimen(object request)
        {
            // Fixture setup
            var specification = new TrueRequestSpecification();
            var sut           = new NSubstituteBuilder(Substitute.For <ISpecimenBuilder>(), specification);
            var context       = Substitute.For <ISpecimenContext>();

            // Exercise system
            var result = sut.Create(request, context);

            // Verify outcome
            var expected = new NoSpecimen();

            Assert.Equal(expected, result);
        }
        public void Create_WithRequestThatDoesNotMatchSpecification_ReturnsNoSpecimen()
        {
            // Fixture setup
            var specification = new FalseRequestSpecification();
            var sut           = new NSubstituteBuilder(Substitute.For <ISpecimenBuilder>(), specification);
            var context       = Substitute.For <ISpecimenContext>();
            var request       = typeof(ConcreteType);

            // Exercise system
            var result = sut.Create(request, context);

            // Verify outcome
            var expected = new NoSpecimen(request);

            Assert.Equal(expected, result);
        }
        public void CreateWithAbstractionRequest_ReturnsResultFromDecoratedBuilder(Type request)
        {
            // Fixture setup
            var builder  = Substitute.For <ISpecimenBuilder>();
            var context  = Substitute.For <ISpecimenContext>();
            var expected = new object();

            builder.Create(request, context).Returns(expected);
            var sut = new NSubstituteBuilder(builder);

            // Exercise system
            var result = sut.Create(request, context);

            // Verify outcome
            Assert.Same(expected, result);
        }
        public void CreateWithAbstractionRequest_ReturnsNoSpecimen_WhenDecoratedBuilderReturnsNull(Type request)
        {
            // Fixture setup
            var builder = Substitute.For <ISpecimenBuilder>();
            var context = Substitute.For <ISpecimenContext>();

            builder.Create(request, context).Returns(null);
            var sut = new NSubstituteBuilder(builder);

            // Exercise system
            var result = sut.Create(request, context);

            // Verify outcome
            var expected = new NoSpecimen();

            Assert.Equal(expected, result);
        }
        public void Create_WithRequestThatIsNotAType_ReturnsNoSpecimen(object request)
        {
            // Fixture setup
            var specification = new TrueRequestSpecification();
            var sut = new NSubstituteBuilder(Substitute.For<ISpecimenBuilder>(), specification);
            var context = Substitute.For<ISpecimenContext>();

            // Exercise system
            var result = sut.Create(request, context);

            // Verify outcome
            var expected = new NoSpecimen(request);
            Assert.Equal(expected, result);
        }
        public void Create_WithRequestThatDoesNotMatchSpecification_ReturnsNoSpecimen()
        {
            // Fixture setup
            var specification = new FalseRequestSpecification();
            var sut = new NSubstituteBuilder(Substitute.For<ISpecimenBuilder>(), specification);
            var context = Substitute.For<ISpecimenContext>();
            var request = typeof(ConcreteType);

            // Exercise system
            var result = sut.Create(request, context);

            // Verify outcome
            var expected = new NoSpecimen(request);
            Assert.Equal(expected, result);
        }
        public void CreateWithAbstractionRequest_ReturnsNoSpecimen_WhenDecoratedBuilderReturnsNull(Type request)
        {
            // Fixture setup
            var builder = Substitute.For<ISpecimenBuilder>();
            var context = Substitute.For<ISpecimenContext>();
            builder.Create(request, context).Returns(null);
            var sut = new NSubstituteBuilder(builder);

            // Exercise system
            var result = sut.Create(request, context);

            // Verify outcome
            var expected = new NoSpecimen(request);
            Assert.Equal(expected, result);
        }
        public void CreateWithAbstractionRequest_ReturnsResultFromDecoratedBuilder(Type request)
        {
            // Fixture setup
            var builder = Substitute.For<ISpecimenBuilder>();
            var context = Substitute.For<ISpecimenContext>();
            var expected = new object();
            builder.Create(request, context).Returns(expected);
            var sut = new NSubstituteBuilder(builder);

            // Exercise system
            var result = sut.Create(request, context);

            // Verify outcome
            Assert.Same(expected, result);
        }