コード例 #1
0
        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();
                }
            }
        }
コード例 #2
0
        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);
        }