public void TestRangeWithoutKvp()
        {
            var settings = new FizzBuzzSettings {
                Start = 1, End = 100
            };
            var actual = new FizzBuzz(settings).ToArray();

            Assert.IsNotNull(actual);
            Assert.AreEqual(actual.Length, 100);
            for (var i = 0; i < actual.Length;)
            {
                Assert.AreEqual(actual[i], (++i).ToString(), $"Index {i-1} is '{actual[i-1]} should be {i}");
            }
        }
        public void TestRangeWithManyKvp()
        {
            var kvp = new[]
            {
                new KeyValuePair <long, string>(3, "fizz"),
                new KeyValuePair <long, string>(5, "buzz"),
                new KeyValuePair <long, string>(7, "foo"),
                new KeyValuePair <long, string>(11, "bar")
            };

            var settings = new FizzBuzzSettings {
                Start = 1, End = 3 * 5 * 7 * 11, Pairs = kvp
            };
            var actual = new FizzBuzz(settings).ToArray();

            TestFizzBuzzFooBarSequence(actual, settings);
        }
        public void TestConditionalValueWithManyKvp()
        {
            var kvp = new[]
            {
                new KeyValuePair <long, string>(3, "fizz"),
                new KeyValuePair <long, string>(5, "buzz"),
                new KeyValuePair <long, string>(7, "foo"),
                new KeyValuePair <long, string>(11, "bar")
            };

            // note, doubling 'End' to test condition
            var settings = new FizzBuzzSettings {
                Start = 1, End = 3 * 5 * 7 * 11 * 2, Pairs = kvp
            };
            var actual = new FizzBuzzWhile(settings, (lastIndex, lastValue) => lastValue != "fizzbuzzfoobar").ToArray();

            TestFizzBuzzFooBarSequence(actual, settings);
        }