コード例 #1
0
 public void SutIsSpecimenContainer()
 {
     // Fixture setup
     var dummyBuilder = new DelegatingSpecimenBuilder();
     // Exercise system
     var sut = new DefaultSpecimenContainer(dummyBuilder);
     // Verify outcome
     Assert.IsInstanceOfType(sut, typeof(ISpecimenContainer));
     // Teardown
 }
コード例 #2
0
 public void BuilderIsCorrect()
 {
     // Fixture setup
     var expectedBuilder = new DelegatingSpecimenBuilder();
     var sut = new DefaultSpecimenContainer(expectedBuilder);
     // Exercise system
     ISpecimenBuilder result = sut.Builder;
     // Verify outcome
     Assert.AreEqual(expectedBuilder, result, "Builder");
     // Teardown
 }
コード例 #3
0
 public void CreateWillReturnCorrectResult()
 {
     // Fixture setup
     var expectedResult = new object();
     var builder = new DelegatingSpecimenBuilder { OnCreate = (r, c) => expectedResult };
     var sut = new DefaultSpecimenContainer(builder);
     // Exercise system
     var dummyRequest = new object();
     var result = sut.Create(dummyRequest);
     // Verify outcome
     Assert.AreEqual(expectedResult, result, "Create");
     // Teardown
 }
コード例 #4
0
        public void TransformReturnsCorrectResultForDefaultRecursionDepth()
        {
            // Fixture setup
            var sut = new OmitOnRecursionBehavior();
            // Exercise system
            var dummyBuilder = new DelegatingSpecimenBuilder();
            var result       = sut.Transform(dummyBuilder);
            // Verify outcome
            var rg = Assert.IsAssignableFrom <RecursionGuard>(result);

            Assert.IsAssignableFrom <OmitOnRecursionHandler>(rg.RecursionHandler);
            Assert.Equal(1, rg.RecursionDepth);
            // Teardown
        }
        public void AddRaisesGraphChanged()
        {
            // Fixture setup
            var verified = false;

            this.sut.GraphChanged += (s, e) => verified = s != null && e != null;
            // Exercise system
            var dummyItem = new DelegatingSpecimenBuilder();

            this.sut.Add(dummyItem);
            // Verify outcome
            Assert.True(verified);
            // Teardown
        }
コード例 #6
0
        public void ConstructWithBuilderAndHandlerAndComparerHasCorrectComparer()
        {
            // Fixture setup
            var dummyBuilder = new DelegatingSpecimenBuilder();
            var dummyHandler = new DelegatingRecursionHandler();
            var expected     = new DelegatingEqualityComparer();
            var sut          = new RecursionGuard(dummyBuilder, dummyHandler, expected);
            // Exercise system
            var actual = sut.Comparer;

            // Verify outcome
            Assert.Equal(expected, actual);
            // Teardown
        }
コード例 #7
0
        public void ComposeSingleItemReturnsCorrectResult()
        {
            // Fixture setup
            var dummy    = new DelegatingSpecimenBuilder();
            var sut      = this.CreateSut(dummy);
            var expected = new DelegatingSpecimenBuilder();
            // Exercise system
            var actual = sut.Compose(new[] { expected });
            // Verify outcome
            var mn = Assert.IsAssignableFrom <T>(actual);

            Assert.Equal(expected, this.GetBuilder(mn));
            // Teardown
        }
コード例 #8
0
        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
        }
コード例 #9
0
        public void ComposeRetainsComparer()
        {
            // Fixture setup
            var dummyBuilder = new DelegatingSpecimenBuilder();
            var dummyHandler = new DelegatingRecursionHandler();
            var expected     = new DelegatingEqualityComparer();
            var sut          = new RecursionGuard(dummyBuilder, dummyHandler, expected);
            // Exercise system
            var actual = sut.Compose(new ISpecimenBuilder[0]);
            // Verify outcome
            var rg = Assert.IsAssignableFrom <RecursionGuard>(actual);

            Assert.Equal(expected, rg.Comparer);
            // Teardown
        }
コード例 #10
0
        public void TransformReturnsCorrectResultForSpecificRecursionDepth()
        {
            // Fixture setup
            const int explicitRecursionDepth = 2;
            var       sut = new NullRecursionBehavior(explicitRecursionDepth);
            // Exercise system
            var dummyBuilder = new DelegatingSpecimenBuilder();
            var result       = sut.Transform(dummyBuilder);
            // Verify outcome
            var rg = Assert.IsAssignableFrom <RecursionGuard>(result);

            Assert.IsAssignableFrom <NullRecursionHandler>(rg.RecursionHandler);
            Assert.Equal(explicitRecursionDepth, rg.RecursionDepth);
            // Teardown
        }
コード例 #11
0
        public void CreateWillReturnCorrectResult()
        {
            // Fixture setup
            var expectedResult = new object();
            var builder        = new DelegatingSpecimenBuilder {
                OnCreate = (r, c) => expectedResult
            };
            var sut = new DefaultSpecimenContainer(builder);
            // Exercise system
            var dummyRequest = new object();
            var result       = sut.Create(dummyRequest);

            // Verify outcome
            Assert.AreEqual(expectedResult, result, "Create");
            // Teardown
        }
コード例 #12
0
        public void ConstructWithBuilderAndHandlerAndComparerHasCorrectBuilder()
        {
            // Fixture setup
            var expected      = new DelegatingSpecimenBuilder();
            var dummyHandler  = new DelegatingRecursionHandler();
            var dummyComparer = new DelegatingEqualityComparer();

#pragma warning disable 618
            var sut = new RecursionGuard(expected, dummyHandler, dummyComparer);
#pragma warning restore 618
            // Exercise system
            var actual = sut.Builder;
            // Verify outcome
            Assert.Equal(expected, actual);
            // Teardown
        }
コード例 #13
0
        public void ComposeSingleItemReturnsCorrectResult()
        {
            // Fixture setup
            var dummyBuilder        = new DelegatingSpecimenBuilder();
            var dummyHandler        = new DelegatingRecursionHandler();
            var dummyComparer       = new DelegatingEqualityComparer();
            int dummyRecursionDepth = 2;
            var sut = new RecursionGuard(dummyBuilder, dummyHandler, dummyComparer, dummyRecursionDepth);
            // Exercise system
            var expected = new DelegatingSpecimenBuilder();
            var actual   = sut.Compose(new[] { expected });
            // Verify outcome
            var rg = Assert.IsAssignableFrom <RecursionGuard>(actual);

            Assert.Equal(expected, rg.Builder);
            // Teardown
        }
コード例 #14
0
        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
        }
コード例 #15
0
        public void SingleParameterDoWillInvokeMethodWithCorrectParameter(
            int expected)
        {
            // Fixture setup
            var builder = new DelegatingSpecimenBuilder();

            builder.OnCreate = (r, c) => expected;

            var verified = false;
            var mock     = new CommandMock <int>();

            mock.OnCommand = x => verified = expected == x;
            // Exercise system
            builder.Do((int i) => mock.Command(i));
            // Verify outcome
            Assert.True(verified, "Mock wasn't verified.");
            // Teardown
        }
コード例 #16
0
        public void CreateWillTriggerHandlingOnRecursiveRequests()
        {
            // Fixture setup
            var builder = new DelegatingSpecimenBuilder();

            builder.OnCreate = (r, c) => c.Resolve(r);
            var  sut = new DelegatingRecursionGuard(builder);
            bool handlingTriggered = false;

            sut.OnHandleRecursiveRequest = obj => handlingTriggered = true;
            var container = new DelegatingSpecimenContext();

            container.OnResolve = (r) => sut.Create(r, container);

            // Exercise system
            sut.Create(Guid.NewGuid(), container);

            // Verify outcome
            Assert.True(handlingTriggered);
        }
コード例 #17
0
        public void CreateWillInvokeBuilderWithCorrectRequest()
        {
            // Fixture setup
            var expectedRequest = new object();

            var mockVerified = false;
            var builderMock = new DelegatingSpecimenBuilder();
            builderMock.OnCreate = (r, c) =>
                {
                    Assert.AreEqual(expectedRequest, r, "Create");
                    mockVerified = true;
                    return new object();
                };

            var sut = new DefaultSpecimenContainer(builderMock);
            // Exercise system
            sut.Create(expectedRequest);
            // Verify outcome
            Assert.IsTrue(mockVerified, "Mock verification");
            // Teardown
        }
コード例 #18
0
        public void CreateOnSpecimenBuilderReturnsCorrectResult()
        {
            // Fixture setup
            var expected = new DateTime(2012, 11, 20, 9, 45, 51);
            var builder  = new DelegatingSpecimenBuilder();

            builder.OnCreate = (r, c) =>
            {
                Assert.NotNull(c);
                Assert.Equal(
                    new SeededRequest(typeof(DateTime), default(DateTime)),
                    r);
                return(expected);
            };
            // Exercise system
            DateTime actual = builder.Create <DateTime>();

            // Verify outcome
            Assert.Equal(expected, actual);
            // Teardown
        }
コード例 #19
0
        public void CreateWillInvokeBuilderWithCorrectContainer()
        {
            // Fixture setup
            var mockVerified = false;
            var builderMock  = new DelegatingSpecimenBuilder();

            var sut = new DefaultSpecimenContainer(builderMock);

            builderMock.OnCreate = (r, c) =>
            {
                Assert.AreEqual(sut, c, "Create");
                mockVerified = true;
                return(new object());
            };
            // Exercise system
            var dummyRequest = new object();

            sut.Create(dummyRequest);
            // Verify outcome
            Assert.IsTrue(mockVerified, "Mock verification");
            // Teardown
        }
コード例 #20
0
        public void ComposeReturnsCorrectResult()
        {
            // Fixture setup
            var dummy = new DelegatingSpecimenBuilder();
            var sut   = this.CreateSut(dummy);
            // Exercise system
            var expected = new[]
            {
                new DelegatingSpecimenBuilder(),
                new DelegatingSpecimenBuilder(),
                new DelegatingSpecimenBuilder()
            };
            var actual = sut.Compose(expected);
            // Verify outcome
            var mn       = Assert.IsAssignableFrom <T>(actual);
            var builders =
                Assert.IsAssignableFrom <IEnumerable <ISpecimenBuilder> >(
                    this.GetBuilder(mn));

            Assert.True(expected.SequenceEqual(builders));
            // Teardown
        }
コード例 #21
0
        public void ComposeReturnsCorrectResult()
        {
            // Fixture setup
            var dummyBuilder  = new DelegatingSpecimenBuilder();
            var dummyHandler  = new DelegatingRecursionHandler();
            var dummyComparer = new DelegatingEqualityComparer();
            var sut           = new RecursionGuard(dummyBuilder, dummyHandler, dummyComparer);
            // Exercise system
            var expectedBuilders = new[]
            {
                new DelegatingSpecimenBuilder(),
                new DelegatingSpecimenBuilder(),
                new DelegatingSpecimenBuilder()
            };
            var actual = sut.Compose(expectedBuilders);
            // Verify outcome
            var rg        = Assert.IsAssignableFrom <RecursionGuard>(actual);
            var composite = Assert.IsAssignableFrom <CompositeSpecimenBuilder>(rg.Builder);

            Assert.True(expectedBuilders.SequenceEqual(composite));
            // Teardown
        }
コード例 #22
0
        public void CreateWithSeedOnSpecimenBuilderReturnsCorrectResult()
        {
            // Fixture setup
            var seed     = new Version(2, 15);
            var expected = new Version(3, 0);
            var builder  = new DelegatingSpecimenBuilder();

            builder.OnCreate = (r, c) =>
            {
                Assert.NotNull(c);
                Assert.Equal(
                    new SeededRequest(typeof(Version), seed),
                    r);
                return(expected);
            };
            // Exercise system
            Version actual = builder.Create <Version>(seed);

            // Verify outcome
            Assert.Equal(expected, actual);
            // Teardown
        }
コード例 #23
0
        public void CreateReturnsCorrectResult()
        {
            // Fixture setup
            var request  = new object();
            var context  = new DelegatingSpecimenContext();
            var expected = new object();
            var stub     = new DelegatingSpecimenBuilder
            {
                OnCreate = (r, c) =>
                {
                    Assert.Equal(request, r);
                    Assert.Equal(context, c);
                    return(expected);
                }
            };
            var sut = this.CreateSut(stub);
            // Exercise system
            var actual = sut.Create(request, context);

            // Verify outcome
            Assert.Equal(expected, actual);
            // Teardown
        }
コード例 #24
0
        public void CreateAnonymousOnPostprocessComposerReturnsCorrectResult()
        {
            // Fixture setup
            var expectedResult  = new DateTime(2010, 5, 31, 14, 52, 19);
            var specimenBuilder = new DelegatingSpecimenBuilder();

            specimenBuilder.OnCreate = (r, c) =>
            {
                Assert.NotNull(c);
                Assert.Equal(new SeededRequest(typeof(DateTime), default(DateTime)), r);
                return(expectedResult);
            };

            var composer = new DelegatingComposer <DateTime> {
                OnCompose = () => specimenBuilder
            };
            // Exercise system
            var result = composer.CreateAnonymous();

            // Verify outcome
            Assert.Equal(expectedResult, result);
            // Teardown
        }
コード例 #25
0
        public void CreateManyOnPostprocessComposerReturnsCorrectResult()
        {
            // Fixture setup
            var expectedResult  = Enumerable.Range(1, 17).Select(i => i.ToString());
            var specimenBuilder = new DelegatingSpecimenBuilder();

            specimenBuilder.OnCreate = (r, c) =>
            {
                Assert.NotNull(c);
                Assert.Equal(new MultipleRequest(new SeededRequest(typeof(string), null)), r);
                return(expectedResult.Cast <object>());
            };

            var composer = new DelegatingComposer <string> {
                OnCompose = () => specimenBuilder
            };
            // Exercise system
            var result = composer.CreateMany();

            // Verify outcome
            Assert.True(expectedResult.SequenceEqual(result));
            // Teardown
        }
コード例 #26
0
        public void CustomizeWithCompetingSpecimenBuilderForTheSameTypeShouldReturnTheFrozenSpecimen()
        {
            // Fixture setup
            var fixture          = new Fixture();
            var context          = new SpecimenContext(fixture);
            var frozenType       = typeof(object);
            var competingBuilder = new DelegatingSpecimenBuilder
            {
                OnCreate = (request, ctx) =>
                           request.Equals(frozenType)
                        ? new object()
                        : new NoSpecimen(request)
            };
            var sut = new FreezeOnMatchCustomization(
                frozenType,
                new ExactTypeSpecification(frozenType));

            // Exercise system
            fixture.Customizations.Add(competingBuilder);
            sut.Customize(fixture);
            // Verify outcome
            Assert.Equal(context.Resolve(frozenType), context.Resolve(frozenType));
        }
コード例 #27
0
        public void CreateWillUseEqualityComparer()
        {
            // Fixture setup
            var builder = new DelegatingSpecimenBuilder();

            builder.OnCreate = (r, c) => c.Resolve(r);
            bool comparerUsed = false;
            var  comparer     = new DelegatingEqualityComparer {
                OnEquals = (x, y) => comparerUsed = true
            };
            var sut = new DelegatingRecursionGuard(builder, comparer);

            sut.OnHandleRecursiveRequest = (obj) => { return(null); };
            var container = new DelegatingSpecimenContext();

            container.OnResolve = (r) => sut.Create(r, container);

            // Exercise system
            sut.Create(Guid.NewGuid(), container);

            // Verify outcome
            Assert.True(comparerUsed);
        }
コード例 #28
0
        public void CreateReturnsResultFromInjectedHandlerWhenRequestIsMatched()
        {
            // Fixture setup
            var builder = new DelegatingSpecimenBuilder()
            {
                OnCreate = (r, ctx) => ctx.Resolve(r)
            };

            var request     = new object();
            var expected    = new object();
            var handlerStub = new DelegatingRecursionHandler
            {
                OnHandleRecursiveRequest = (r, rs) =>
                {
                    Assert.Equal(request, r);
                    Assert.NotNull(rs);
                    return(expected);
                }
            };

            var comparer = new DelegatingEqualityComparer
            {
                OnEquals = (x, y) => true
            };

            var sut = new RecursionGuard(builder, handlerStub, comparer, 1);

            var context = new DelegatingSpecimenContext();

            context.OnResolve = r => sut.Create(r, context);
            // Exercise system
            var actual = sut.Create(request, context);

            // Verify outcome
            Assert.Equal(expected, actual);
            // Teardown
        }
コード例 #29
0
        public void CreateSeededManyOnSpecimenBuilderComposerReturnsCorrectResult()
        {
            // Fixture setup
            var seed            = TimeSpan.FromMinutes(48);
            var expectedResult  = Enumerable.Range(1, 8).Select(i => TimeSpan.FromHours(i));
            var specimenBuilder = new DelegatingSpecimenBuilder();

            specimenBuilder.OnCreate = (r, c) =>
            {
                Assert.NotNull(c);
                Assert.Equal(new MultipleRequest(new SeededRequest(typeof(TimeSpan), seed)), r);
                return(expectedResult.Cast <object>());
            };

            var composer = new DelegatingComposer {
                OnCompose = () => specimenBuilder
            };
            // Exercise system
            var result = composer.CreateMany(seed);

            // Verify outcome
            Assert.True(expectedResult.SequenceEqual(result));
            // Teardown
        }
コード例 #30
0
        public void CreateaSeededAnonymousOnSpecimenBuilderComposerReturnsCorrectResult()
        {
            // Fixture setup
            var seed            = new Version(1, 1);
            var expectedResult  = new Version(2, 0);
            var specimenBuilder = new DelegatingSpecimenBuilder();

            specimenBuilder.OnCreate = (r, c) =>
            {
                Assert.NotNull(c);
                Assert.Equal(new SeededRequest(typeof(Version), seed), r);
                return(expectedResult);
            };

            var composer = new DelegatingComposer {
                OnCompose = () => specimenBuilder
            };
            // Exercise system
            var result = composer.CreateAnonymous(seed);

            // Verify outcome
            Assert.Equal(expectedResult, result);
            // Teardown
        }
コード例 #31
0
        public void CreateCountedManyOnSpecimenBuilderComposerReturnsCorrectResult()
        {
            // Fixture setup
            var count           = 9;
            var expectedResult  = Enumerable.Range(1, count).Select(i => i.ToString());
            var specimenBuilder = new DelegatingSpecimenBuilder();

            specimenBuilder.OnCreate = (r, c) =>
            {
                Assert.NotNull(c);
                Assert.Equal(new FiniteSequenceRequest(new SeededRequest(typeof(string), null), count), r);
                return(expectedResult.Cast <object>());
            };

            ISpecimenBuilder composer = new DelegatingComposer {
                OnCreate = specimenBuilder.OnCreate
            };
            // Exercise system
            var result = composer.CreateMany <string>(count);

            // Verify outcome
            Assert.True(expectedResult.SequenceEqual(result));
            // Teardown
        }