public void TestToString() { var inc = new Incrementor(0, 10); inc.ToString().Should().Be("0"); for (int i = 1; i <= 10; i++) { inc = inc.IncrementValue(); inc.ToString().Should().Be(i.ToString()); } }
public void TestIncrementBy1() { var inc = new Incrementor(0, 10); inc.Value.Should().Be(0); for (int i = 1; i <= 10; i++) { inc = inc.IncrementValue(); inc.Value.Should().Be(i); } }
public void TestIncrementBy2() { var inc = new Incrementor(10, 20, 2); inc.Value.Should().Be(10); for (int i = 1; i <= 5; i++) { inc = inc.IncrementValue(); inc.Value.Should().Be(10 + 2 * i); } }
public void TestNoParentIncrementor() { var inc1 = new Incrementor(0, 3); inc1.CanIncrement.Should().BeTrue(); var maxInc = inc1.IncrementValue().IncrementValue().IncrementValue(); maxInc.CanIncrement.Should().BeFalse(); Action act = () => maxInc.IncrementValue(); act.ShouldThrow <InvalidOperationException>(); }
public void TestLongCombined() { int incrementorCount = _random.Next(3, 10); Incrementor[] incrementors = Enumerable.Range(1, incrementorCount).Select(i => CreateRandomIncrementor()).ToArray(); Incrementor combined = Incrementor.CreateCombined(incrementors); int count = 0; while (combined.CanIncrement) { count++; combined = combined.IncrementValue(); } int expectedPossibilities = (incrementors.Select(i => i.Maximum).Aggregate(1, (a, i) => a * (i + 1)) - 1); count.Should().Be(expectedPossibilities); string expectedFinalString = string.Join("", incrementors.Select(i => i.Maximum.ToString())); combined.ToString().Should().Be(expectedFinalString); }