public void Constructor_ShouldHydrateCalculatedTerms() { // Arrange. var seedTerms = new Int32[] { 0, 1, 2 }; // Act. var target = new SimulatedInfiniteSequence(seedTerms); // Assert. target.CalculatedTermCount.Should().Be(3); target.ToArray(0, 3).Should().OnlyContain(term => seedTerms.Contains(term)); }
public void ToArray_ShouldReturnValidResult_ForValidRangeArguments() { // Arrange. var seedTerm = 5; var startIndex = 3; var count = 5; var target = new SimulatedInfiniteSequence(seedTerm); // Act. var result = target.ToArray(startIndex, count); // Assert. result.Should().BeEquivalentTo(8, 9, 10, 11, 12); target.CalculatedTermCount.Should().Be(8); }
public void ToArray_ShouldRaiseArgumentOutOfRangeException_ForNegativeStartIndexArgument() { // Arrange. var seedTerm = 5; var startIndex = -1; var count = 3; var target = new SimulatedInfiniteSequence(seedTerm); // Act. var action = new Action(() => { var result = target.ToArray(startIndex, count); }); // Assert. action.Should().Throw <ArgumentOutOfRangeException>(); }