public void TestNormalUse()
        {
            var list = new MatchesList(5);

            list.Count.Should().Be(0);
            list.Add("one", "two", null);
            list.Count.Should().Be(1);
            list.Add("three", "four", null);
            list.Count.Should().Be(2);
            var iterator = list.GetEnumerator();
            var next     = iterator.MoveNext();

            next.Should().BeTrue();
            var match1 = iterator.Current;

            next = iterator.MoveNext();
            next.Should().BeTrue();
            var match2 = iterator.Current;

            next = iterator.MoveNext();
            next.Should().BeFalse();
            match1.Key.Should().Be("one");
            match1.Value.Should().Be("two");
            match1.Result.Should().BeNull();
            match2.Key.Should().Be("three");
            match2.Value.Should().Be("four");
            match2.Result.Should().BeNull();
        }
        public void TestTooMany()
        {
            var list = new MatchesList(5)
            {
                { "one", "two", null },
                { "three", "four", null }
            };
            var iterator = list.GetEnumerator();

            iterator.MoveNext().Should().BeTrue();
            iterator.Current.Should().NotBeNull();
            iterator.MoveNext().Should().BeTrue();
            iterator.Current.Should().NotBeNull();
            iterator.MoveNext().Should().BeFalse();
            var a = new Action(() => { var c = iterator.Current; });

            a.Should().Throw <IndexOutOfRangeException>();
        }