From 6c1a9504a9bb931a95927c52da026db23efa0c5e Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Thu, 2 Sep 2010 19:30:12 +0200 Subject: [PATCH] Fixed bug in TextDocument.GetOffset when column is 0 --- .../Document/LineManagerTests.cs | 36 +++++++++++++++++++ .../Document/TextDocument.cs | 2 +- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit.Tests/Document/LineManagerTests.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit.Tests/Document/LineManagerTests.cs index 192c154019..be967381d2 100644 --- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit.Tests/Document/LineManagerTests.cs +++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit.Tests/Document/LineManagerTests.cs @@ -495,5 +495,41 @@ namespace ICSharpCode.AvalonEdit.Document "x", "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)); + } } } diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Document/TextDocument.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Document/TextDocument.cs index 1f63816335..5913667065 100644 --- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Document/TextDocument.cs +++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Document/TextDocument.cs @@ -664,7 +664,7 @@ namespace ICSharpCode.AvalonEdit.Document public int GetOffset(int line, int column) { DocumentLine docLine = GetLineByNumber(line); - if (column < 0) + if (column <= 0) return docLine.Offset; if (column > docLine.Length) return docLine.EndOffset;