public void DepthWillBeResetAfterDecoratedBuilderThrows() { // Arrange int createCallNumber = 0; int lastRequestDepth = 0; var firstRequest = Guid.NewGuid(); var secondRequest = Guid.NewGuid(); var dummyContainer = new DelegatingSpecimenContext(); var builder = new DelegatingSpecimenBuilder { OnCreate = (r, c) => { createCallNumber++; if (createCallNumber == 1) { throw new PrivateException(); } return(c.Resolve(r)); } }; var sut = new DelegatingTracingBuilder(builder); sut.SpecimenRequested += (sender, e) => lastRequestDepth = e.Depth; // Act & assert Assert.Throws <PrivateException>(() => sut.Create(firstRequest, dummyContainer)); Assert.Equal(1, lastRequestDepth); sut.Create(secondRequest, dummyContainer); Assert.Equal(1, lastRequestDepth); }
public void CreateWillTrackCompositeRequests() { // Fixture setup object requestedObject = "The request"; object subRequest = "Some sub request"; 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 ? new object() : new NoSpecimen() }; var compBuilder = new CompositeSpecimenBuilder(builder2, builder3); var sut = new DelegatingTracingBuilder(compBuilder); sut.SpecimenRequested += (sender, e) => spy.Add(e.Request); var container = new SpecimenContext(sut); // Exercise system sut.Create(requestedObject, container); // Verify outcome Assert.Equal(2, spy.Count); Assert.Equal(subRequest, spy[1]); // Teardown }
public void CreateWillTrackCreatedSpecimensComposite() { // Arrange 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); // Act sut.Create(requestedObject, container); // Assert Assert.Equal(2, spy.Count); Assert.Equal(createdSpecimen, spy[0]); Assert.Equal(createdSpecimen, spy[1]); }
public void CreateWillCorrectRaiseSpecimenCreatedInCompositeRequest() { // Fixture setup object request = "The request"; object subRequest = "Some sub request"; var createdSpecimen = new object(); var spy = new List <SpecimenCreatedEventArgs>(); var builder2 = new DelegatingSpecimenBuilder { OnCreate = (r, c) => r == request?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); var container = new SpecimenContext(sut); // Exercise system sut.Create(request, container); // Verify outcome Assert.Equal(2, spy.Count); Assert.Equal(createdSpecimen, spy[0].Specimen); Assert.Equal(2, spy[0].Depth); Assert.Equal(createdSpecimen, spy[1].Specimen); Assert.Equal(1, spy[1].Depth); // Teardown }
public void CreateWillCorrectlyRaiseSpecimenRequestedInCompositeRequest() { // Arrange 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); // Act sut.Create(requestedObject, container); // Assert Assert.Equal(2, spy.Count); Assert.Equal(subRequest, spy[1].Request); Assert.Equal(2, spy[1].Depth); }
public void CreateWillNotRaiseSpecimenCreatedForIgnoredType() { // Fixture setup var eventRaised = false; var request = Guid.NewGuid(); var sut = new DelegatingTracingBuilder(); sut.SpecimenCreated += (sender, e) => eventRaised = true; var ignoredTypes = new List <Type> { typeof(Guid) }; sut.Filter = new DelegatingRequestSpecification { OnIsSatisfiedBy = r => !ignoredTypes.Contains(r.GetType()) }; // Exercise system var dummyContainer = new DelegatingSpecimenContext(); sut.Create(request, dummyContainer); // Verify outcome Assert.False(eventRaised, "Event raised"); // Teardown }
public void IgnoredTypeWillNotTrackRequest() { // Fixture setup object tracked = null; object requestedObject = Guid.NewGuid(); var sut = new DelegatingTracingBuilder(); var ignoredTypes = new List <Type> { typeof(Guid) }; sut.Filter = new DelegatingRequestSpecification { OnIsSatisfiedBy = r => !ignoredTypes.Contains(r.GetType()) }; // Exercise system var dummyContainer = new DelegatingSpecimenContext(); sut.Create(requestedObject, dummyContainer); // Verify outcome Assert.Null(tracked); // Teardown }
public void IgnoredTypeWillNotTrackCreatedSpecimen() { // Arrange object tracked = null; object requestedObject = Guid.NewGuid(); var decoratedBuilder = new DelegatingSpecimenBuilder { OnCreate = (r, c) => r }; var sut = new DelegatingTracingBuilder(decoratedBuilder); var ignoredTypes = new List <Type> { typeof(Guid) }; sut.Filter = new DelegatingRequestSpecification { OnIsSatisfiedBy = r => !ignoredTypes.Contains(r.GetType()) }; // Act var dummyContainer = new DelegatingSpecimenContext(); object res = sut.Create(requestedObject, dummyContainer); // Assert Assert.Null(tracked); }
public void SutIsSpecimenBuilder() { // Arrange // Act var sut = new DelegatingTracingBuilder(); // Assert Assert.IsAssignableFrom <ISpecimenBuilder>(sut); }
public void TestSpecificSutIsSut() { // Arrange // Act var sut = new DelegatingTracingBuilder(); // Assert Assert.IsAssignableFrom <TracingBuilder>(sut); }
public void InitializeWithNullWriterWillThrow() { // Arrange var dummyBuilder = new DelegatingTracingBuilder(); // Act & assert Assert.Throws <ArgumentNullException>(() => new TraceWriter(null, dummyBuilder)); }
public void AssignNullFilterWillThrow() { // Arrange var sut = new DelegatingTracingBuilder(); // Act & assert Assert.Throws <ArgumentNullException>(() => sut.Filter = null); }
public void SutIsSpecimenBuilder() { // Fixture setup // Exercise system var sut = new DelegatingTracingBuilder(); // Verify outcome Assert.IsAssignableFrom <ISpecimenBuilder>(sut); // Teardown }
public void AssignNullFilterWillThrow() { // Fixture setup var sut = new DelegatingTracingBuilder(); // Exercise system and verify outcome Assert.Throws <ArgumentNullException>(() => sut.Filter = null); // Teardown }
public void InitializeWithNullWriterWillThrow() { // Fixture setup var dummyBuilder = new DelegatingTracingBuilder(); // Exercise system and verify outcome Assert.Throws <ArgumentNullException>(() => new TraceWriter(null, dummyBuilder)); // Teardown }
public void SutIsSpecimenBuilderNode() { // Arrange var dummyWriter = TextWriter.Null; var dummyBuilder = new DelegatingTracingBuilder(); // Act var sut = new TraceWriter(dummyWriter, dummyBuilder); // Assert Assert.IsAssignableFrom <ISpecimenBuilderNode>(sut); }
public void TracerIsCorrect() { // Arrange var dummyWriter = TextWriter.Null; var expectedTracer = new DelegatingTracingBuilder(); var sut = new TraceWriter(dummyWriter, expectedTracer); // Act TracingBuilder result = sut.Tracer; // Assert Assert.Equal(expectedTracer, result); }
public void SutIsSpecimenBuilderNode() { // Fixture setup var dummyWriter = TextWriter.Null; var dummyBuilder = new DelegatingTracingBuilder(); // Exercise system var sut = new TraceWriter(dummyWriter, dummyBuilder); // Verify outcome Assert.IsAssignableFrom <ISpecimenBuilderNode>(sut); // Teardown }
public void SutYieldsCorrectSequence() { // Arrange var dummyWriter = TextWriter.Null; var expected = new DelegatingSpecimenBuilder(); var tracer = new DelegatingTracingBuilder(expected); var sut = new TraceWriter(dummyWriter, tracer); // Act // Assert Assert.Equal(expected, sut.Single()); Assert.Equal(expected, ((System.Collections.IEnumerable)sut).Cast <object>().Single()); }
public void TracerIsCorrect() { // Fixture setup var dummyWriter = TextWriter.Null; var expectedTracer = new DelegatingTracingBuilder(); var sut = new TraceWriter(dummyWriter, expectedTracer); // Exercise system TracingBuilder result = sut.Tracer; // Verify outcome Assert.Equal(expectedTracer, result); // Teardown }
public void FilterIsProperWritableProperty() { // Arrange var sut = new DelegatingTracingBuilder(); IRequestSpecification expectedFilter = new DelegatingRequestSpecification(); // Act sut.Filter = expectedFilter; IRequestSpecification result = sut.Filter; // Assert Assert.Equal(expectedFilter, result); }
public void FilterIsProperWritableProperty() { // Fixture setup var sut = new DelegatingTracingBuilder(); IRequestSpecification expectedFilter = new DelegatingRequestSpecification(); // Exercise system sut.Filter = expectedFilter; IRequestSpecification result = sut.Filter; // Verify outcome Assert.Equal(expectedFilter, result); // Teardown }
public void ComposeSingleItemReturnsCorrectResult() { // Arrange var writer = TextWriter.Null; var tracer = new DelegatingTracingBuilder(); var sut = new TraceWriter(writer, tracer); // Act var expected = new DelegatingSpecimenBuilder(); var actual = sut.Compose(new[] { expected }); // Assert var tw = Assert.IsAssignableFrom <TraceWriter>(actual); Assert.Equal(expected, tw.Tracer.Builder); }
public void SutYieldsCorrectSequence() { // Fixture setup var dummyWriter = TextWriter.Null; var expected = new DelegatingSpecimenBuilder(); var tracer = new DelegatingTracingBuilder(expected); var sut = new TraceWriter(dummyWriter, tracer); // Exercise system // Verify outcome Assert.Equal(expected, sut.Single()); Assert.Equal(expected, ((System.Collections.IEnumerable)sut).Cast <object>().Single()); // Teardown }
public void CreateWillCorrectlyRaiseSpecimenRequested() { // Arrange var verified = false; var request = new object(); var sut = new DelegatingTracingBuilder(); sut.SpecimenRequested += (sender, e) => verified = e.Request == request && e.Depth == 1; // Act var dummyContainer = new DelegatingSpecimenContext(); sut.Create(request, dummyContainer); // Assert Assert.True(verified, "Event raised"); }
public void ComposeSingleItemReturnsCorrectResult() { // Fixture setup var writer = TextWriter.Null; var tracer = new DelegatingTracingBuilder(); var sut = new TraceWriter(writer, tracer); // Exercise system var expected = new DelegatingSpecimenBuilder(); var actual = sut.Compose(new[] { expected }); // Verify outcome var tw = Assert.IsAssignableFrom <TraceWriter>(actual); Assert.Equal(expected, tw.Tracer.Builder); // Teardown }
public void CreateWillTrackCreatedSpecimen() { // Arrange object tracked = null; object createdSpecimen = Guid.NewGuid(); var container = new DelegatingSpecimenContext { OnResolve = r => createdSpecimen }; var sut = new DelegatingTracingBuilder(); // Act object res = sut.Create(new object(), container); // Assert Assert.Equal(res, tracked); }
public void CreateWillPassThroughToDecoratedBuilder() { // Arrange object expectedSpecimen = Guid.NewGuid(); var decoratedBuilder = new DelegatingSpecimenBuilder { OnCreate = (r, c) => r }; var sut = new DelegatingTracingBuilder(decoratedBuilder); // Act var dummyContainer = new DelegatingSpecimenContext(); object result = sut.Create(expectedSpecimen, dummyContainer); // Assert Assert.Equal(expectedSpecimen, result); }
public void CreateWillCorrectlyRaiseSpecimenRequested() { // Fixture setup var verified = false; var request = new object(); var sut = new DelegatingTracingBuilder(); sut.SpecimenRequested += (sender, e) => verified = e.Request == request && e.Depth == 1; // Exercise system var dummyContainer = new DelegatingSpecimenContext(); sut.Create(request, dummyContainer); // Verify outcome Assert.True(verified, "Event raised"); // Teardown }
public void CreateWillNotTrackFilteredRequest() { // Arrange object tracked = null; object requestedObject = new object(); var sut = new DelegatingTracingBuilder(); sut.Filter = new DelegatingRequestSpecification { OnIsSatisfiedBy = r => false }; // Act var dummyContainer = new DelegatingSpecimenContext(); sut.Create(requestedObject, dummyContainer); // Assert Assert.Null(tracked); }