public void TestCombined() { var inc1 = new Incrementor(0, 3); var inc2 = new Incrementor(5, 7); var combined = Incrementor.CreateCombined(new Incrementor[] { inc1, inc2 }); string[] expected = { "05", "06", "07", "15", "16", "17", "25", "26", "27", "35", "36", "37" }; for (int i = 0; i < expected.Length; i++) { combined.ToString().Should().Be(expected[i]); if (combined.CanIncrement) { combined = combined.IncrementValue(); } } }
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); }