private static IEnumerable<object> MakeData(Type[] types) { var fixture = new Fixture(); var context = new SpecimenContext(fixture); foreach (var item in types) yield return fixture.Create(item, context); }
public virtual void SetPropertyValues() { var instance = Fixture.Create<PocoClass>(); var objectModel = CreateObjectModel(instance); var properties = objectModel.GetProperties().ToList(); if (properties.Any()) { foreach (var property in properties) { if (property.ReadOnly) continue; var type = property.Type ?? typeof (object); var specimenContext = new SpecimenContext(Fixture); var newValue = specimenContext.Resolve(type); property.SetValue(newValue); Assert.AreEqual(newValue, property.Value); } } else { Assert.Inconclusive("ObjectModel has no properties, cannot test if values are set"); } }
public void CombineExplictPropertyWithAutoProperties() { // Fixture setup var expectedText = "Fnaah"; var specifiedCommand = new BindingCommand<DoublePropertyHolder<string, int>, string>(ph => ph.Property1, expectedText); var reservedProperty = new InverseRequestSpecification(specifiedCommand); var customizedBuilder = new Postprocessor<DoublePropertyHolder<string, int>>( new Postprocessor<DoublePropertyHolder<string, int>>( new MethodInvoker(new ModestConstructorQuery()), specifiedCommand), new AutoPropertiesCommand<DoublePropertyHolder<string, int>>(reservedProperty), new AnyTypeSpecification()); var builder = new CompositeSpecimenBuilder( customizedBuilder, Scenario.CreateAutoPropertyBuilder()); var container = new SpecimenContext(builder); // Exercise system var result = container.Resolve(typeof(DoublePropertyHolder<string, int>)); // Verify outcome var actual = Assert.IsAssignableFrom<DoublePropertyHolder<string, int>>(result); Assert.Equal(expectedText, actual.Property1); Assert.Equal(1, actual.Property2); // Teardown }
/// <inerhitdoc /> public object GenerateAnonymousValue(AnonymousValueFixture any, Type type, string propertyName) { // http://autofixture.codeplex.com/workitem/4229 var context = new SpecimenContext(any.Fixture); var specimen = context.Resolve(type); return specimen; }
static object CreateFromFixture(Type type) { var fixture = new Fixture(); var instance = new SpecimenContext(fixture).Resolve(type); return instance; }
public void SutIsSpecimenContext() { // Fixture setup var dummyBuilder = new DelegatingSpecimenBuilder(); // Exercise system var sut = new SpecimenContext(dummyBuilder); // Verify outcome Assert.IsAssignableFrom<ISpecimenContext>(sut); // Teardown }
public void BuilderIsCorrect() { // Fixture setup var expectedBuilder = new DelegatingSpecimenBuilder(); var sut = new SpecimenContext(expectedBuilder); // Exercise system ISpecimenBuilder result = sut.Builder; // Verify outcome Assert.Equal(expectedBuilder, result); // Teardown }
public void CreateWillReturnCorrectResult() { // Fixture setup var expectedResult = new object(); var builder = new DelegatingSpecimenBuilder { OnCreate = (r, c) => expectedResult }; var sut = new SpecimenContext(builder); // Exercise system var dummyRequest = new object(); var result = sut.Resolve(dummyRequest); // Verify outcome Assert.Equal(expectedResult, result); // Teardown }
private TestCaseParameters GetParametersForMethod(IMethodInfo method) { try { var specimenBuilder = new SpecimenContext(this._fixture); var parameterValues = method.GetParameters() .Select(p => specimenBuilder.Resolve(p.ParameterInfo)) .ToArray(); return new TestCaseParameters(parameterValues); } catch (Exception ex) { return new TestCaseParameters(ex); } }
public void ComposeWithAutoProperties() { // Fixture setup var customBuilder = SpecimenBuilderNodeFactory.CreateComposer<DoublePropertyHolder<int, int>>() .WithAutoProperties(); var builder = new CompositeSpecimenBuilder( customBuilder, Scenario.CreateCoreBuilder()); // Exercise system var result = new SpecimenContext(builder).CreateAnonymous<DoublePropertyHolder<int, int>>(); // Verify outcome Assert.Equal(1, result.Property1); Assert.Equal(2, result.Property2); // Teardown }
public void CreateWillInvokeBuilderWithCorrectRequest() { // Fixture setup var expectedRequest = new object(); var mockVerified = false; var builderMock = new DelegatingSpecimenBuilder(); builderMock.OnCreate = (r, c) => { Assert.Equal(expectedRequest, r); mockVerified = true; return new object(); }; var sut = new SpecimenContext(builderMock); // Exercise system sut.Resolve(expectedRequest); // Verify outcome Assert.True(mockVerified, "Mock verification"); // Teardown }
public void ComposeComplexObjectWithAutoPropertiesAndSomeCustomizations() { // Fixture setup var builder = new CompositeSpecimenBuilder( SpecimenBuilderNodeFactory.CreateComposer<DoublePropertyHolder<long, long>>() .With(x => x.Property2, 43) .WithAutoProperties(), SpecimenBuilderNodeFactory.CreateComposer<DoublePropertyHolder<int, string>>() .OmitAutoProperties() .With(x => x.Property1), SpecimenBuilderNodeFactory.CreateComposer<DoublePropertyHolder<DoublePropertyHolder<long, long>, DoublePropertyHolder<int, string>>>() .WithAutoProperties(), Scenario.CreateCoreBuilder()); // Exercise system var result = new SpecimenContext(builder).CreateAnonymous<DoublePropertyHolder<DoublePropertyHolder<long, long>, DoublePropertyHolder<int, string>>>(); // Verify outcome Assert.Equal(1, result.Property1.Property1); Assert.Equal(43, result.Property1.Property2); Assert.Equal(1, result.Property2.Property1); Assert.Null(result.Property2.Property2); // Teardown }
public void CreateAndAddProperyValues() { // Fixture setup var ctorInvoker = new MethodInvoker(new ModestConstructorQuery()); var strCmd = new BindingCommand<DoublePropertyHolder<string, int>, string>(ph => ph.Property1); var intCmd = new BindingCommand<DoublePropertyHolder<string, int>, int>(ph => ph.Property2); var strPostprocessor = new Postprocessor<DoublePropertyHolder<string, int>>(ctorInvoker, strCmd); var intPostprocessor = new Postprocessor<DoublePropertyHolder<string, int>>(strPostprocessor, intCmd); var builder = new CompositeSpecimenBuilder( new FilteringSpecimenBuilder(intPostprocessor, new ExactTypeSpecification(typeof(DoublePropertyHolder<string, int>))), Scenario.CreateAutoPropertyBuilder()); var container = new SpecimenContext(builder); // Exercise system var result = container.Resolve(typeof(DoublePropertyHolder<string, int>)); // Verify outcome var actual = Assert.IsAssignableFrom<DoublePropertyHolder<string, int>>(result); Assert.False(string.IsNullOrEmpty(actual.Property1), "Property1"); Assert.Equal(1, actual.Property2); // Teardown }
public void ComposeWithValueReturnsCorrectResult() { // Fixture setup var expectedValue = 9; var customBuilder = SpecimenBuilderNodeFactory.CreateComposer<PropertyHolder<int>>() .With(x => x.Property, expectedValue); var builder = new CompositeSpecimenBuilder( customBuilder, Scenario.CreateCoreBuilder()); // Exercise system var result = new SpecimenContext(builder).CreateAnonymous<PropertyHolder<int>>(); // Verify outcome Assert.Equal(expectedValue, result.Property); // Teardown }
public void ComposeWithoutCorrectlyCreatesSpecimen() { // Fixture setup var builder = new CompositeSpecimenBuilder( SpecimenBuilderNodeFactory.CreateComposer<DoubleFieldHolder<string, int>>().WithAutoProperties().Without(x => x.Field1), Scenario.CreateCoreBuilder()); // Exercise system var result = new SpecimenContext(builder).CreateAnonymous<DoubleFieldHolder<string, int>>(); // Verify outcome Assert.Null(result.Field1); Assert.Equal(1, result.Field2); // Teardown }
public void CreateThrowsWithAutoMockingHintOnInterfaceOrAbcRequest( object request, string requestType) { var tracer = new DelegatingTracingBuilder( new DelegatingSpecimenBuilder { OnCreate = (r, c) => new NoSpecimen(request) }); var sut = new TerminatingWithPathSpecimenBuilder(tracer); var context = new SpecimenContext(sut); var e = Assert.Throws<ObjectCreationException>( () => sut.Create(request, context)); Assert.Contains( requestType, e.Message, StringComparison.CurrentCultureIgnoreCase); Assert.Contains( "auto-mocking", e.Message, StringComparison.CurrentCultureIgnoreCase); Assert.Contains( "request path", e.Message, StringComparison.CurrentCultureIgnoreCase); }
public void CustomizeFromFactoryCorrectlyResolvesSpecimen() { // Fixture setup var instance = new PropertyHolder<float> { Property = 89 }; var builder = new CompositeSpecimenBuilder( SpecimenBuilderNodeFactory.CreateComposer<PropertyHolder<float>>().FromFactory(() => instance).OmitAutoProperties(), Scenario.CreateCoreBuilder()); // Exercise system var result = new SpecimenContext(builder).CreateAnonymous<PropertyHolder<float>>(); // Verify outcome Assert.Equal(instance, result); Assert.Equal(89, result.Property); // Teardown }
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() #pragma warning disable 618 : new NoSpecimen(request) #pragma warning restore 618 }; 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)); }
public void SpecimenRequestsAreEmptyAfterThrowing() { // Fixture setup var requests = new[] {new object(), new object(), new object() }; var requestQueue = new Queue<object>(requests); var firstRequest = requestQueue.Dequeue(); var tracer = new DelegatingTracingBuilder(new DelegatingSpecimenBuilder { OnCreate = (r, c) => requestQueue.Count > 0 ? c.Resolve(requestQueue.Dequeue()) : new NoSpecimen() }); var sut = new TerminatingWithPathSpecimenBuilder(tracer); var container = new SpecimenContext(sut); // Exercise system and verify outcome Assert.Throws<ObjectCreationException>(() => sut.Create(firstRequest, container)); Assert.Empty(sut.SpecimenRequests); }
public void CreateWillTrackCreatedSpecimensComposite() { // Fixture setup object requestedObject = "The request"; object subRequest = "Some sub request"; object createdSpecimen = Guid.NewGuid(); var spy = new List<object>(); var builder2 = new DelegatingSpecimenBuilder { OnCreate = (r, c) => r == requestedObject ? c.Resolve(subRequest) : new NoSpecimen() }; var builder3 = new DelegatingSpecimenBuilder { OnCreate = (r, c) => r == subRequest ? createdSpecimen : new NoSpecimen() }; var compBuilder = new CompositeSpecimenBuilder(builder2, builder3); var sut = new DelegatingTracingBuilder(compBuilder); sut.SpecimenCreated += (sender, e) => spy.Add(e.Specimen); var container = new SpecimenContext(sut); // Exercise system sut.Create(requestedObject, container); // Verify outcome Assert.Equal(2, spy.Count); Assert.Equal(createdSpecimen, spy[0]); Assert.Equal(createdSpecimen, spy[1]); // Teardown }
public TestSimpleInjectorConfig(SpecimenContext context) { this.context = context; }
private ISpecimenBuilder FreezeTargetType(IFixture fixture) { var context = new SpecimenContext(fixture); var specimen = context.Resolve(this.targetType); return new FixedBuilder(specimen); }
public void CreateThrowsWhenNoSpecimenIsReturnedFromTheDecoratedGraph() { // Fixture setup var requests = new[] {new object(), new object(), new object()}; var tracer = new DelegatingTracingBuilder(new DelegatingSpecimenBuilder { // Returns NoSpecimen only on the last specimen request OnCreate = (r, c) => (r == requests[2]) ? new NoSpecimen() : new object(), }); var sut = new TerminatingWithPathSpecimenBuilder(tracer); var container = new SpecimenContext(sut); // Exercise system and verify outcome Assert.DoesNotThrow(() => sut.Create(requests[0], container)); Assert.DoesNotThrow(() => sut.Create(requests[1], container)); Assert.Throws<ObjectCreationException>(() => sut.Create(requests[2], container)); // Teardown }
public void CreateDoubleMixedParameterizedTypeWithNumberBasedStringGenerator() { // Fixture setup var intGenerator = new Int32SequenceGenerator(); var builder = new CompositeSpecimenBuilder( intGenerator, new StringGenerator(() => intGenerator.CreateAnonymous()), new Int64SequenceGenerator(), new DecimalSequenceGenerator(), new BooleanSwitch(), new GuidGenerator(), new MethodInvoker(new ModestConstructorQuery()), new ParameterRequestRelay(), new StringSeedRelay(), new SeedIgnoringRelay()); var container = new SpecimenContext(builder); // Exercise system var result = (TripleParameterType<int, string, int>)container.Resolve(typeof(TripleParameterType<int, string, int>)); // Verify outcome Assert.Equal(1, result.Parameter1); Assert.Equal("parameter22", result.Parameter2); Assert.Equal(3, result.Parameter3); // Teardown }
public void CustomDoSetsCorrectProperty() { // Fixture setup var builder = new CompositeSpecimenBuilder( SpecimenBuilderNodeFactory.CreateComposer<PropertyHolder<decimal>>().OmitAutoProperties().Do(x => x.SetProperty(6789)), Scenario.CreateCoreBuilder()); // Exercise system var result = new SpecimenContext(builder).CreateAnonymous<SingleParameterType<PropertyHolder<decimal>>>(); // Verify outcome Assert.Equal(6789, result.Parameter.Property); // Teardown }
public void BuildWithNullRecursionHandlerWillCreateNullOnRecursionPointObsolete() { // Fixture setup var sut = new Fixture(); // Exercise system var result = new SpecimenContext( new NullRecursionGuard( sut.Build<RecursionTestObjectWithConstructorReferenceOutA>() ) ).CreateAnonymous<RecursionTestObjectWithConstructorReferenceOutA>(); // Verify outcome Assert.Null(result.ReferenceToB.ReferenceToA); }
private object Resolve(ParameterInfo p) { var context = new SpecimenContext(this.Fixture); return context.Resolve(p); }
public void ExecuteIgnoresNotDbItemSpecimens(AddContentItemCommand sut, object specimen, SpecimenContext context) { Action action = () => sut.Execute(specimen, context); action.ShouldNotThrow(); }
public void CreateWillCorrectlyRaiseSpecimenRequestedInCompositeRequest() { // Fixture setup object requestedObject = "The request"; object subRequest = "Some sub request"; var spy = new List<RequestTraceEventArgs>(); var builder2 = new DelegatingSpecimenBuilder { OnCreate = (r, c) => r == requestedObject ? c.Resolve(subRequest) : new NoSpecimen() }; var builder3 = new DelegatingSpecimenBuilder { OnCreate = (r, c) => r == subRequest ? new object() : new NoSpecimen() }; var compBuilder = new CompositeSpecimenBuilder(builder2, builder3); var sut = new DelegatingTracingBuilder(compBuilder); sut.SpecimenRequested += (sender, e) => spy.Add(e); var container = new SpecimenContext(sut); // Exercise system sut.Create(requestedObject, container); // Verify outcome Assert.Equal(2, spy.Count); Assert.Equal(subRequest, spy[1].Request); Assert.Equal(2, spy[1].Depth); // Teardown }
public void FixtureDoesNotHijackCollectionInterfacesIfAnotherCustomizationExistsForThem(Type collectionInterface) { // Fixture setup var fixture = new Fixture().Customize(new MultipleCustomization()).Customize(new AutoNSubstituteCustomization()); var context = new SpecimenContext(fixture.Compose()); // Exercise system var result = context.Resolve(new SeededRequest(collectionInterface, null)); // Verify outcome Assert.NotEmpty((IEnumerable)result); }