コード例 #1
0
        public void GetArgumentsReturnsCorrectResult()
        {
            // Fixture setup
            var method     = typeof(TypeWithOverloadedMembers).GetMethod("DoSomething", new[] { typeof(object) });
            var parameters = method.GetParameters();

            var expectedResult = new object();
            var builder        = new DelegatingSpecimenBuilder
            {
                OnCreate = (r, c) =>
                {
                    Assert.AreEqual(parameters.Single(), r);
                    Assert.NotNull(c);
                    return(expectedResult);
                }
            };
            var composer = new DelegatingFixture {
                OnCreate = builder.OnCreate
            };

            var sut = new DerivedAutoDataAttribute(() => composer);
            // Exercise system
            var result = sut.GetData(method);

            // Verify outcome
            Assert.True(new[] { expectedResult }.SequenceEqual(result.Single()));
            // Teardown
        }
コード例 #2
0
        public void ShouldRecognizeAttributesImplementingIParameterCustomizationSource()
        {
            // Fixture setup
            var method = typeof(TypeWithIParameterCustomizationSourceUsage)
                         .GetMethod(nameof(TypeWithIParameterCustomizationSourceUsage.DecoratedMethod));

            var parameters     = method.GetParameters();
            var parameterTypes = parameters.Select(p => p.ParameterType).ToArray();

            var customizationLog = new List <ICustomization>();
            var fixture          = new DelegatingFixture();

            fixture.OnCustomize = c =>
            {
                customizationLog.Add(c);
                return(fixture);
            };
            var sut = new DerivedAutoDataAttribute(() => fixture);

            // Exercise system
            sut.GetData(method, parameterTypes);
            // Verify outcome
            Assert.True(customizationLog[0] is TypeWithIParameterCustomizationSourceUsage.Customization);
            // Teardown
        }
コード例 #3
0
        public void GetDataOrdersCustomizationAttributes(string methodName)
        {
            // Fixture setup
            var method = typeof(TypeWithCustomizationAttributes).GetMethod(methodName, new[] { typeof(ConcreteType) });

            var parameters     = method.GetParameters();
            var parameterTypes = (from pi in parameters
                                  select pi.ParameterType).ToArray();

            var customizationLog = new List <ICustomization>();
            var fixture          = new DelegatingFixture();

            fixture.OnCustomize = c =>
            {
                customizationLog.Add(c);
                return(fixture);
            };
            var sut = new DerivedAutoDataAttribute(() => fixture);

            // Exercise system
            sut.GetData(method, parameterTypes);
            // Verify outcome
            Assert.False(customizationLog[0] is FreezeOnMatchCustomization);
            Assert.True(customizationLog[1] is FreezeOnMatchCustomization);
            // Teardown
        }
コード例 #4
0
        public void GetDataReturnsCorrectResult()
        {
            // Arrange
            var method         = typeof(TypeWithOverloadedMembers).GetMethod("DoSomething", new[] { typeof(object) });
            var parameters     = method.GetParameters();
            var parameterTypes = (from pi in parameters
                                  select pi.ParameterType).ToArray();

            var expectedResult = new object();
            var builder        = new DelegatingSpecimenBuilder
            {
                OnCreate = (r, c) =>
                {
                    Assert.Equal(parameters.Single(), r);
                    Assert.NotNull(c);
                    return(expectedResult);
                }
            };
            var composer = new DelegatingFixture {
                OnCreate = builder.OnCreate
            };

            var sut = new DerivedAutoDataAttribute(() => composer);
            // Act
            var result = sut.GetData(method, parameterTypes);

            // Assert
            Assert.True(new[] { expectedResult }.SequenceEqual(result.Single()));
        }
コード例 #5
0
        public void InitializedWithFixtureFactoryConstrucorHasCorrectFixture()
        {
            // Arrange
            var fixture = new Fixture();

            // Act
            var sut = new DerivedAutoDataAttribute(() => fixture);

            // Assert
#pragma warning disable 618
            Assert.Same(fixture, sut.Fixture);
#pragma warning restore 618
        }
コード例 #6
0
        public void InitializedWithFixtureFactoryConstrucorHasCorrectFixture()
        {
            // Fixture setup
            var fixture = new Fixture();

            // Exercise system
            var sut = new DerivedAutoDataAttribute(() => fixture);

            // Verify outcome
#pragma warning disable 618
            Assert.AreSame(fixture, sut.Fixture);
#pragma warning restore 618
            // Teardown
        }
コード例 #7
0
        public void InitializedWithComposerHasCorrectComposer()
        {
            // Arrange
            var expectedComposer = new DelegatingFixture();

#pragma warning disable 612
            var sut = new DerivedAutoDataAttribute(expectedComposer);
#pragma warning restore 612
            // Act
#pragma warning disable 618
            var result = sut.Fixture;
#pragma warning restore 618
            // Assert
            Assert.Equal(expectedComposer, result);
        }
コード例 #8
0
        public void InitializedWithComposerHasCorrectComposer()
        {
            // Fixture setup
            var expectedComposer = new DelegatingFixture();

#pragma warning disable 612
            var sut = new DerivedAutoDataAttribute(expectedComposer);
#pragma warning restore 612
            // Exercise system
#pragma warning disable 618
            var result = sut.Fixture;
#pragma warning restore 618
            // Verify outcome
            Assert.AreEqual(expectedComposer, result);
            // Teardown
        }
コード例 #9
0
        public void FixtureFactoryIsNotInvokedImmediately()
        {
            // Arrange
            bool            wasInvoked     = false;
            Func <IFixture> fixtureFactory = () =>
            {
                wasInvoked = true;
                return(null);
            };

            // Act
            var sut = new DerivedAutoDataAttribute(fixtureFactory);

            // Assert
            Assert.False(wasInvoked);
        }
コード例 #10
0
        public void DoesntActivateFixtureImmediately()
        {
            // Arrange
            bool wasInvoked = false;
            var  autoData   = new DerivedAutoDataAttribute(() =>
            {
                wasInvoked = true;
                return(null);
            });

            // Act
            var sut = new DerivedInlineAutoDataAttribute(autoData);

            // Assert
            Assert.False(wasInvoked);
        }
コード例 #11
0
        public void FixtureFactoryIsNotInvokedImmediately()
        {
            // Fixture setup
            bool            wasInvoked     = false;
            Func <IFixture> fixtureFactory = () =>
            {
                wasInvoked = true;
                return(null);
            };

            // Exercise system
            var sut = new DerivedAutoDataAttribute(fixtureFactory);

            // Verify outcome
            Assert.False(wasInvoked);
            // Teardown
        }
コード例 #12
0
        public void DoesntActivateFixtureImmediately()
        {
            // Fixture setup
            bool wasInvoked = false;
            var  autoData   = new DerivedAutoDataAttribute(() =>
            {
                wasInvoked = true;
                return(null);
            });

            // Exercise system
            var sut = new DerivedInlineAutoDataAttribute(autoData);

            // Verify outcome
            Assert.False(wasInvoked);
            // Teardown
        }
コード例 #13
0
        public void DoesNotActivateFixtureImmediately()
        {
            // Arrange
            var  memberName = Guid.NewGuid().ToString();
            bool wasInvoked = false;
            var  autoData   = new DerivedAutoDataAttribute(() =>
            {
                wasInvoked = true;
                return(new Fixture());
            });

            // Act
            var sut = new DerivedMemberAutoDataAttribute(autoData, memberName);

            // Assert
            Assert.False(wasInvoked);
        }
コード例 #14
0
        public void GetDataOrdersCustomizationAttributes(string methodName)
        {
            // Arrange
            var method           = typeof(TypeWithCustomizationAttributes).GetMethod(methodName, new[] { typeof(ConcreteType) });
            var customizationLog = new List <ICustomization>();
            var fixture          = new DelegatingFixture();

            fixture.OnCustomize = c =>
            {
                customizationLog.Add(c);
                return(fixture);
            };
            var sut = new DerivedAutoDataAttribute(() => fixture);

            // Act
            sut.GetData(method);
            // Assert
            Assert.False(customizationLog[0] is FreezeOnMatchCustomization);
            Assert.True(customizationLog[1] is FreezeOnMatchCustomization);
        }
コード例 #15
0
        public void ShouldRecognizeAttributesImplementingIParameterCustomizationSource()
        {
            // Arrange
            var method = typeof(TypeWithIParameterCustomizationSourceUsage)
                         .GetMethod(nameof(TypeWithIParameterCustomizationSourceUsage.DecoratedMethod));

            var customizationLog = new List <ICustomization>();
            var fixture          = new DelegatingFixture();

            fixture.OnCustomize = c =>
            {
                customizationLog.Add(c);
                return(fixture);
            };
            var sut = new DerivedAutoDataAttribute(() => fixture);

            // Act
            sut.GetData(method);
            // Assert
            Assert.True(customizationLog[0] is TypeWithIParameterCustomizationSourceUsage.Customization);
        }