public void Text()
{
string str = "first line\nsecond line\nthird line";
editableText.SetTextContents (str);
Assert.AreEqual (str, text.GetText (), "GetText #1");
Assert.AreEqual (str.Length, text.CharacterCount, "CharacterCount");
Assert.AreEqual ("first", text.GetText (0, 5), "GetText #2");
Assert.IsTrue (text.SetCaretOffset (2), "SetCaretOffset");
Assert.AreEqual (2, text.CaretOffset, "CaretOffset");
int startOffset, endOffset;
Assert.AreEqual ("r", text.GetTextBeforeOffset (3, BoundaryType.Char, out startOffset, out endOffset), "GetTextBeforeOffset (char)");
Assert.AreEqual (2, startOffset, "startOffset (char)");
Assert.AreEqual (3, endOffset, "EndOffset (char)");
Assert.AreEqual ("second ", text.GetTextBeforeOffset (18, BoundaryType.WordStart, out startOffset, out endOffset), "GetTextBeforeOffset (WordStart)");
Assert.AreEqual (11, startOffset, "StartOffset (WordStart)");
Assert.AreEqual (18, endOffset, "EndOffset (WordStart)");
Assert.AreEqual ("\nsecond", text.GetTextBeforeOffset (17, BoundaryType.WordEnd, out startOffset, out endOffset), "GetTextBeforeOffset (WordEnd)");
Assert.AreEqual (10, startOffset, "StartOffset");
Assert.AreEqual (17, endOffset, "EndOffset");
Assert.AreEqual ("second line\n", text.GetTextBeforeOffset (23, BoundaryType.SentenceStart, out startOffset, out endOffset), "GetTextBoreOffset (SentenceStart)");
Assert.AreEqual (11, startOffset, "StartOffset (SentenceStart)");
Assert.AreEqual (23, endOffset, "EndOffset (SentenceStart)");
Assert.AreEqual ("\nsecond line", text.GetTextBeforeOffset (22, BoundaryType.SentenceEnd, out startOffset, out endOffset), "GetTextBoreOffset (SentenceEnd)");
Assert.AreEqual (10, startOffset, "EndOffset (SentenceEnd)");
Assert.AreEqual (22, endOffset, "EndOffset (SentenceEnd)");
Assert.AreEqual ("\n", text.GetTextBeforeOffset (23, BoundaryType.LineStart, out startOffset, out endOffset), "GetTextBoreOffset (LineStart)");
Assert.AreEqual (22, startOffset, "StartOffset (LineStart)");
Assert.AreEqual (23, endOffset, "EndOffset (LineStart)");
Assert.AreEqual ("\nsecond line", text.GetTextBeforeOffset (23, BoundaryType.LineEnd, out startOffset, out endOffset), "GetTextBoreOffset (LineEnd)");
Assert.AreEqual (10, startOffset, "EndOffset (LineEnd)");
Assert.AreEqual (22, endOffset, "EndOffset (LineEnd)");
Assert.AreEqual ("s", text.GetTextAtOffset (3, BoundaryType.Char, out startOffset, out endOffset), "GetTextAtOffset (char)");
Assert.AreEqual (3, startOffset, "startOffset (char)");
Assert.AreEqual (4, endOffset, "EndOffset (char)");
Assert.AreEqual ("t", text.GetTextAfterOffset (3, BoundaryType.Char, out startOffset, out endOffset), "GetTextAfterOffset (char)");
Assert.AreEqual (4, startOffset, "startOffset (char)");
Assert.AreEqual (5, endOffset, "EndOffset (char)");
Assert.AreEqual (str [6], text.GetCharacterAtOffset (6), "GetCharacterAtOffset");
}