Browse Source

Fixed bug in TextDocument.GetOffset when column is 0

pull/1/head
Daniel Grunwald 16 years ago
parent
commit
6c1a9504a9
  1. 36
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit.Tests/Document/LineManagerTests.cs
  2. 2
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Document/TextDocument.cs

36
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit.Tests/Document/LineManagerTests.cs

@ -495,5 +495,41 @@ namespace ICSharpCode.AvalonEdit.Document
"x", "x",
"c"); "c");
} }
[Test]
public void GetOffset()
{
document.Text = "Hello,\nWorld!";
Assert.AreEqual(0, document.GetOffset(1, 1));
Assert.AreEqual(1, document.GetOffset(1, 2));
Assert.AreEqual(5, document.GetOffset(1, 6));
Assert.AreEqual(6, document.GetOffset(1, 7));
Assert.AreEqual(7, document.GetOffset(2, 1));
Assert.AreEqual(8, document.GetOffset(2, 2));
Assert.AreEqual(12, document.GetOffset(2, 6));
Assert.AreEqual(13, document.GetOffset(2, 7));
}
[Test]
public void GetOffsetIgnoreNegativeColumns()
{
document.Text = "Hello,\nWorld!";
Assert.AreEqual(0, document.GetOffset(1, -1));
Assert.AreEqual(0, document.GetOffset(1, -100));
Assert.AreEqual(0, document.GetOffset(1, 0));
Assert.AreEqual(7, document.GetOffset(2, -1));
Assert.AreEqual(7, document.GetOffset(2, -100));
Assert.AreEqual(7, document.GetOffset(2, 0));
}
[Test]
public void GetOffsetIgnoreTooHighColumns()
{
document.Text = "Hello,\nWorld!";
Assert.AreEqual(6, document.GetOffset(1, 8));
Assert.AreEqual(6, document.GetOffset(1, 100));
Assert.AreEqual(13, document.GetOffset(2, 8));
Assert.AreEqual(13, document.GetOffset(2, 100));
}
} }
} }

2
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Document/TextDocument.cs

@ -664,7 +664,7 @@ namespace ICSharpCode.AvalonEdit.Document
public int GetOffset(int line, int column) public int GetOffset(int line, int column)
{ {
DocumentLine docLine = GetLineByNumber(line); DocumentLine docLine = GetLineByNumber(line);
if (column < 0) if (column <= 0)
return docLine.Offset; return docLine.Offset;
if (column > docLine.Length) if (column > docLine.Length)
return docLine.EndOffset; return docLine.EndOffset;

Loading…
Cancel
Save