Skip to content

Commit

Permalink
Adds EnumerableRelay to AutoConfiguredNSubstituteCustomization's Resi…
Browse files Browse the repository at this point in the history
…dueCollectors.
  • Loading branch information
mrinaldi committed Feb 27, 2015
1 parent 7191b20 commit 835ae9b
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 4 deletions.
Expand Up @@ -49,6 +49,7 @@ public void Customize(IFixture fixture)
if (fixture == null)
throw new ArgumentNullException("fixture");

fixture.ResidueCollectors.Add(new EnumeratorRelay());
fixture.ResidueCollectors.Add(
new Postprocessor(
Builder,
Expand Down
Expand Up @@ -415,5 +415,22 @@ public void InterfaceShadowedMethodsReturnValueFromFixture()
// Teardown
}

[Fact]
public void InterfacesImplementingIEnumerableReturnFiniteSequence()
{
var fixture = new Fixture();
fixture.Customize(new AutoConfiguredNSubstituteCustomization());
var repeatCount = fixture.Create<int>();
fixture.RepeatCount = repeatCount;
var sut = fixture.Create<IMyList<string>>();

var result = sut.Take(repeatCount + 1).Count();

Assert.Equal(repeatCount, result);
}

public interface IMyList<out T> : IEnumerable<T>
{
}
}
}
Expand Up @@ -51,8 +51,8 @@ public void CustomizeAddsNSubstitutePostprocessorCommandsToResidueCollectors()
// Exercise system
sut.Customize(fixture);
// Verify outcome
var customization = Assert.Single(residueCollectors);
var postprocessor = Assert.IsAssignableFrom<Postprocessor>(customization);
var postprocessor =
Assert.Single(residueCollectors.OfType<Postprocessor>());
var nsubstituteBuilder = Assert.IsAssignableFrom<NSubstituteBuilder>(postprocessor.Builder);
var methodInvoker = Assert.IsAssignableFrom<MethodInvoker>(nsubstituteBuilder.Builder);
Assert.IsAssignableFrom<AbstractTypeSpecification>(nsubstituteBuilder.SubstitutionSpecification);
Expand All @@ -74,9 +74,37 @@ public void CustomizeAddsBuilderToResidueCollectors()

sut.Customize(fixture);

var customization = Assert.Single(residueCollectors);
var postprocessor = Assert.IsAssignableFrom<Postprocessor>(customization);
var postprocessor =
Assert.Single(residueCollectors.OfType<Postprocessor>());
Assert.Equal(builder, postprocessor.Builder);
}

[Fact]
public void CustomizeAddsEnumeratorRelayToResidueCollectors()
{
var builder = Substitute.For<ISpecimenBuilder>();
var residueCollectors = new List<ISpecimenBuilder>();
var fixture = Substitute.For<IFixture>();
fixture.ResidueCollectors.Returns(residueCollectors);
var sut = new AutoConfiguredNSubstituteCustomization(builder);

sut.Customize(fixture);

Assert.Single(residueCollectors.OfType<EnumeratorRelay>());
}

[Fact]
public void CustomizeAddsEnumeratorRelayInCorrectOrder()
{
var builder = Substitute.For<ISpecimenBuilder>();
var residueCollectors = new List<ISpecimenBuilder>();
var fixture = Substitute.For<IFixture>();
fixture.ResidueCollectors.Returns(residueCollectors);
var sut = new AutoConfiguredNSubstituteCustomization(builder);

sut.Customize(fixture);

Assert.IsAssignableFrom<EnumeratorRelay>(residueCollectors.First());
}
}
}

0 comments on commit 835ae9b

Please sign in to comment.