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 SutIsSpecimenBuilder()
 {
     // Fixture setup
     var dummySpecification = new DelegatingRequestSpecification();
     var dummyBuilder = new DelegatingSpecimenBuilder();
     // Exercise system
     var sut = new FilteringSpecimenBuilder(dummyBuilder, dummySpecification);
     // Verify outcome
     Assert.IsAssignableFrom<ISpecimenBuilder>(sut);
     // Teardown
 }
 public void SpecificationIsCorrect()
 {
     // Fixture setup
     var dummyBuilder = new DelegatingSpecimenBuilder();
     var expectedSpecification = new DelegatingRequestSpecification();
     var sut = new FilteringSpecimenBuilder(dummyBuilder, expectedSpecification);
     // Exercise system
     IRequestSpecification result = sut.Specification;
     // Verify outcome
     Assert.Equal(expectedSpecification, result);
     // Teardown
 }
 public void CreateReturnsCorrectResultWhenSpecificationIsNotSatisfied()
 {
     // Fixture setup
     var spec = new DelegatingRequestSpecification { OnIsSatisfiedBy = r => false };
     var dummyBuilder = new DelegatingSpecimenBuilder();
     var sut = new FilteringSpecimenBuilder(dummyBuilder, spec);
     var request = new object();
     // Exercise system            
     var dummyContainer = new DelegatingSpecimenContext();
     var result = sut.Create(request, dummyContainer);
     // Verify outcome
     var expectedResult = new NoSpecimen(request);
     Assert.Equal(expectedResult, result);
     // Teardown
 }
        public void SpecificationReceivesCorrectRequest()
        {
            // Fixture setup
            var expectedRequest = new object();
            var verified = false;
            var specMock = new DelegatingRequestSpecification { OnIsSatisfiedBy = r => verified = expectedRequest == r };

            var dummyBuilder = new DelegatingSpecimenBuilder();
            var sut = new FilteringSpecimenBuilder(dummyBuilder, specMock);
            // Exercise system
            var dummyContainer = new DelegatingSpecimenContext();
            sut.Create(expectedRequest, dummyContainer);
            // Verify outcome
            Assert.True(verified, "Mock verified");
            // Teardown
        }
 public void ComposePreservesSpecification()
 {
     // Fixture setup
     var dummyBuilder = new DelegatingSpecimenBuilder();
     var expected = new DelegatingRequestSpecification();
     var sut = new FilteringSpecimenBuilder(dummyBuilder, expected);
     // Exercise system
     var actual = sut.Compose(new ISpecimenBuilder[0]);
     // Verify outcome
     var f = Assert.IsAssignableFrom<FilteringSpecimenBuilder>(actual);
     Assert.Equal(expected, f.Specification);
     // Teardown
 }
 public void ComposeSingleItemReturnsCorrectResult()
 {
     // Fixture setup
     var dummyBuilder = new DelegatingSpecimenBuilder();
     var dummySpecification = new DelegatingRequestSpecification();
     var sut = new FilteringSpecimenBuilder(dummyBuilder, dummySpecification);
     // Exercise system
     var expected = new DelegatingSpecimenBuilder();
     var actual = sut.Compose(new[] { expected });
     // Verify outcome
     var f = Assert.IsAssignableFrom<FilteringSpecimenBuilder>(actual);
     Assert.Equal(expected, f.Builder);
     // Teardown
 }
 public void ComposeReturnsCorrectResult()
 {
     // Fixture setup
     var dummyBuilder = new DelegatingSpecimenBuilder();
     var dummySpecification = new DelegatingRequestSpecification();
     var sut = new FilteringSpecimenBuilder(dummyBuilder, dummySpecification);
     // Exercise system
     var expectedBuilders = new[]
     {
         new DelegatingSpecimenBuilder(),
         new DelegatingSpecimenBuilder(),
         new DelegatingSpecimenBuilder()
     };
     var actual = sut.Compose(expectedBuilders);
     // Verify outcome
     var f = Assert.IsAssignableFrom<FilteringSpecimenBuilder>(actual);
     var composite = Assert.IsAssignableFrom<CompositeSpecimenBuilder>(f.Builder);
     Assert.True(expectedBuilders.SequenceEqual(composite));
     // Teardown
 }
 public void SutYieldsDecoratedBuilder()
 {
     // Fixture setup
     var expected = new DelegatingSpecimenBuilder();
     var dummySpecification = new DelegatingRequestSpecification();
     // Exercise system
     var sut = new FilteringSpecimenBuilder(expected, dummySpecification);
     // Verify outcome
     Assert.True(new[] { expected }.SequenceEqual(sut));
     Assert.True(new object[] { expected }.SequenceEqual(((System.Collections.IEnumerable)sut).Cast<object>()));
     // Teardown
 }
 public void CreatePassesCorrectParametersToDecoratedBuilder()
 {
     // Fixture setup
     var expectedRequest = new object();
     var expectedContainer = new DelegatingSpecimenContext();
     var verified = false;
     var builderMock = new DelegatingSpecimenBuilder { OnCreate = (r, c) => verified = r == expectedRequest && c == expectedContainer };
     var spec = new DelegatingRequestSpecification { OnIsSatisfiedBy = r => true };
     var sut = new FilteringSpecimenBuilder(builderMock, spec);
     // Exercise system
     sut.Create(expectedRequest, expectedContainer);
     // Verify outcome
     Assert.True(verified, "Mock verified");
     // Teardown
 }
 public void CreateReturnsCorrectResultWhenFilterAllowsRequestThrough()
 {
     // Fixture setup
     var expectedResult = new object();
     var spec = new DelegatingRequestSpecification { OnIsSatisfiedBy = r => true };
     var builder = new DelegatingSpecimenBuilder { OnCreate = (r, c) => expectedResult };
     var sut = new FilteringSpecimenBuilder(builder, spec);
     // Exercise system
     var dummyRequest = new object();
     var dummyContainer = new DelegatingSpecimenContext();
     var result = sut.Create(dummyRequest, dummyContainer);
     // Verify outcome
     Assert.Equal(expectedResult, result);
     // Teardown
 }