diff options
author | Mike Krüger <mkrueger@xamarin.com> | 2013-04-29 20:58:44 +0400 |
---|---|---|
committer | Mike Krüger <mkrueger@xamarin.com> | 2013-04-29 20:58:44 +0400 |
commit | 942a4122cfa55c935a495ae48c9ae15ab87cb8da (patch) | |
tree | 3ac6691a514967b7faf26bf9463ce0c918e23072 /main/src/core/MonoDevelop.TextEditor.Tests/Mono.TextEditor.Tests/LineSplitterTests.cs | |
parent | b27a8d55b69b36482b119757f26efad4cbd44964 (diff) |
[Tests] Splitted text editor tests.
Diffstat (limited to 'main/src/core/MonoDevelop.TextEditor.Tests/Mono.TextEditor.Tests/LineSplitterTests.cs')
-rw-r--r-- | main/src/core/MonoDevelop.TextEditor.Tests/Mono.TextEditor.Tests/LineSplitterTests.cs | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/main/src/core/MonoDevelop.TextEditor.Tests/Mono.TextEditor.Tests/LineSplitterTests.cs b/main/src/core/MonoDevelop.TextEditor.Tests/Mono.TextEditor.Tests/LineSplitterTests.cs new file mode 100644 index 0000000000..0bfcf65a86 --- /dev/null +++ b/main/src/core/MonoDevelop.TextEditor.Tests/Mono.TextEditor.Tests/LineSplitterTests.cs @@ -0,0 +1,77 @@ +// +// LineSplitterTests.cs +// +// Author: +// Mike Krüger <mkrueger@novell.com> +// +// Copyright (C) 2008 Novell, Inc (http://www.novell.com) +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// + +using System; +using System.Text; +using NUnit.Framework; + +namespace Mono.TextEditor.Tests +{ + [TestFixture()] + public class LineSplitterTests + { + [Test()] + public void TestLastLineCreation () + { + IBuffer buffer = new Mono.TextEditor.GapBuffer (); + LineSplitter splitter = new Mono.TextEditor.LineSplitter (); + buffer.Text = "1\n2\n3\n"; + splitter.TextReplaced (null, new DocumentChangeEventArgs (0, "", buffer.Text)); + Assert.AreEqual (4, splitter.Count); + for (int i = 0; i < 3; i++) { + Assert.AreEqual (i * 2, splitter.Get (i + 1).Offset); + Assert.AreEqual (1, splitter.Get (i + 1).Length); + Assert.AreEqual (1, splitter.Get (i + 1).DelimiterLength); + Assert.AreEqual (2, splitter.Get (i + 1).LengthIncludingDelimiter); + } + Assert.AreEqual (3 * 2, splitter.Get (4).Offset); + Assert.AreEqual (0, splitter.Get (4).Length); + Assert.AreEqual (0, splitter.Get (4).DelimiterLength); + Assert.AreEqual (0, splitter.Get (4).LengthIncludingDelimiter); + } + + [Test()] + public void TestLastLineRemove () + { + IBuffer buffer = new Mono.TextEditor.GapBuffer (); + LineSplitter splitter = new Mono.TextEditor.LineSplitter (); + buffer.Text = "1\n2\n3\n"; + splitter.TextReplaced (null, new DocumentChangeEventArgs (0, "", buffer.Text)); + + DocumentLine lastLine = splitter.Get (2); + splitter.TextReplaced (null, new DocumentChangeEventArgs (lastLine.Offset, buffer.GetTextAt (lastLine.Offset, lastLine.LengthIncludingDelimiter), "")); + + Assert.AreEqual (3, splitter.Count); + + Assert.AreEqual (2 * 2, splitter.Get (3).Offset); + Assert.AreEqual (0, splitter.Get (3).Length); + Assert.AreEqual (0, splitter.Get (3).DelimiterLength); + Assert.AreEqual (0, splitter.Get (3).LengthIncludingDelimiter); + } + } +} |