public void SubtractPastStart()
            {
                Create("cat", "dog");
                var column = VirtualSnapshotColumn.GetForColumnNumber(_textBuffer.GetLine(0), 0);

                Assert.Throws <ArgumentException>(() => column.SubtractInLine(1));
            }
            public void Simple()
            {
                Create("cat", "dog");
                var column = VirtualSnapshotColumn.GetForColumnNumber(_textBuffer.GetLine(0), 3);

                Assert.Equal(0, column.VirtualSpaces);
                Assert.True(column.Column.IsLineBreak);
            }
            public void EndBig()
            {
                Create("cat", "dog");
                var column = VirtualSnapshotColumn.GetForColumnNumber(_textBuffer.GetLine(0), 10);

                Assert.Equal(3, column.VirtualStartPoint.Position);
                Assert.Equal(7, column.VirtualSpaces);
                Assert.True(column.IsInVirtualSpace);
            }
            public void Middle()
            {
                Create("cat", "dog");
                var column = VirtualSnapshotColumn.GetForColumnNumber(_textBuffer.GetLine(0), 1);

                Assert.Equal(1, column.VirtualStartPoint.Position);
                Assert.Equal(0, column.VirtualSpaces);
                Assert.False(column.IsInVirtualSpace);
            }
            public void SimpleBlankLine()
            {
                Create("", "dog");
                var column = VirtualSnapshotColumn.GetColumnForSpaces(_textBuffer.GetLine(0), spaces: 0, TabStop);

                Assert.True(column.Column.IsLineBreak);
                Assert.False(column.IsInVirtualSpace);
                Assert.Equal(0, column.VirtualSpaces);
            }
            public void GiantAdd()
            {
                Create("cat", "dog");
                var column = VirtualSnapshotColumn.GetForColumnNumber(_textBuffer.GetLine(0), 3);

                Assert.True(column.Column.IsLineBreak);
                column = column.AddInLine(300);
                Assert.True(column.IsInVirtualSpace);
                Assert.Equal(300, column.VirtualSpaces);
            }
            public void SimpleSubtract()
            {
                Create("cat", "dog");
                var column = VirtualSnapshotColumn.GetForColumnNumber(_textBuffer.GetLine(0), 4);

                Assert.True(column.Column.IsLineBreak);
                Assert.True(column.IsInVirtualSpace);
                column = column.SubtractInLine(1);
                Assert.False(column.IsInVirtualSpace);
                Assert.Equal(0, column.VirtualSpaces);
            }