diff --git a/src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj b/src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj
index 843b496e67..53d802f358 100644
--- a/src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj
+++ b/src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj
@@ -75,6 +75,7 @@
+
diff --git a/src/Main/Base/Test/ReadOnlyDocumentTests.cs b/src/Main/Base/Test/ReadOnlyDocumentTests.cs
new file mode 100644
index 0000000000..810b8d9f1e
--- /dev/null
+++ b/src/Main/Base/Test/ReadOnlyDocumentTests.cs
@@ -0,0 +1,66 @@
+//
+//
+//
+//
+// $Revision$
+//
+
+using System;
+using ICSharpCode.NRefactory;
+using ICSharpCode.SharpDevelop.Editor;
+using NUnit.Framework;
+
+namespace ICSharpCode.SharpDevelop.Tests
+{
+ [TestFixture]
+ public class ReadOnlyDocumentTests
+ {
+ [Test]
+ public void EmptyReadOnlyDocument()
+ {
+ IDocument document = DocumentUtilitites.LoadReadOnlyDocumentFromBuffer(new StringTextBuffer(string.Empty));
+ Assert.AreEqual(string.Empty, document.Text);
+ Assert.AreEqual(0, document.TextLength);
+ Assert.AreEqual(1, document.TotalNumberOfLines);
+ Assert.AreEqual(0, document.PositionToOffset(1, 1));
+ Assert.AreEqual(new Location(1, 1), document.OffsetToPosition(0));
+
+ Assert.AreEqual(0, document.GetLine(1).Offset);
+ Assert.AreEqual(0, document.GetLine(1).EndOffset);
+ Assert.AreEqual(0, document.GetLine(1).Length);
+ Assert.AreEqual(0, document.GetLine(1).TotalLength);
+ Assert.AreEqual(0, document.GetLine(1).DelimiterLength);
+ Assert.AreEqual(1, document.GetLine(1).LineNumber);
+ }
+
+ [Test]
+ public void SimpleDocument()
+ {
+ string text = "Hello\nWorld!\r\n";
+ IDocument document = DocumentUtilitites.LoadReadOnlyDocumentFromBuffer(new StringTextBuffer(text));
+ Assert.AreEqual(text, document.Text);
+ Assert.AreEqual(3, document.TotalNumberOfLines);
+
+ Assert.AreEqual(0, document.GetLine(1).Offset);
+ Assert.AreEqual(5, document.GetLine(1).EndOffset);
+ Assert.AreEqual(5, document.GetLine(1).Length);
+ Assert.AreEqual(6, document.GetLine(1).TotalLength);
+ Assert.AreEqual(1, document.GetLine(1).DelimiterLength);
+ Assert.AreEqual(1, document.GetLine(1).LineNumber);
+
+ Assert.AreEqual(6, document.GetLine(2).Offset);
+ Assert.AreEqual(12, document.GetLine(2).EndOffset);
+ Assert.AreEqual(6, document.GetLine(2).Length);
+ Assert.AreEqual(8, document.GetLine(2).TotalLength);
+ Assert.AreEqual(2, document.GetLine(2).DelimiterLength);
+ Assert.AreEqual(2, document.GetLine(2).LineNumber);
+
+ Assert.AreEqual(14, document.GetLine(3).Offset);
+ Assert.AreEqual(14, document.GetLine(3).EndOffset);
+ Assert.AreEqual(0, document.GetLine(3).Length);
+ Assert.AreEqual(0, document.GetLine(3).TotalLength);
+ Assert.AreEqual(0, document.GetLine(3).DelimiterLength);
+ Assert.AreEqual(3, document.GetLine(3).LineNumber);
+ }
+ }
+}