public void TestAppendInvalidateAppend()
        {
            var changes = new MergedLogFileChanges(0);

            changes.Append(0, 2);
            changes.InvalidateFrom(1);
            changes.Append(1, 1);

            changes.Sections.Should().Equal(new object[]
            {
                new LogFileSection(0, 2)
            });
        }
        public void TestInvalidateThenAppendWithGap()
        {
            var changes = new MergedLogFileChanges(10);

            changes.InvalidateFrom(5);
            changes.Append(7, 10);

            changes.Sections.Should().Equal(new object[]
            {
                LogFileSection.Invalidate(5, 5),
                new LogFileSection(5, 12)
            });
        }
        public void TestInvalidate()
        {
            var changes = new MergedLogFileChanges(42);

            changes.InvalidateFrom(10);

            changes.Sections.Should().Equal(new object[]
            {
                LogFileSection.Invalidate(10, 32)
            });

            changes.TryGetFirstInvalidationIndex(out var index).Should().BeTrue();
            index.Should().Be(new LogLineIndex(10));
        }
        public void TestInvalidateTwiceSuperfluous()
        {
            var changes = new MergedLogFileChanges(13);

            changes.InvalidateFrom(5);
            changes.InvalidateFrom(7);

            changes.Sections.Should().Equal(new object[]
            {
                LogFileSection.Invalidate(5, 8)
            });

            changes.TryGetFirstInvalidationIndex(out var index).Should().BeTrue();
            index.Should().Be(new LogLineIndex(5));
        }
        public void TestInvalidateThenAppend()
        {
            var changes = new MergedLogFileChanges(10);

            changes.InvalidateFrom(5);
            changes.Append(5, 6);

            changes.Sections.Should().Equal(new object[]
            {
                LogFileSection.Invalidate(5, 5),
                new LogFileSection(5, 6)
            });

            changes.TryGetFirstInvalidationIndex(out var index).Should().BeTrue();
            index.Should().Be(new LogLineIndex(5));
        }