// Copyright 2012 Google Inc. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package com.google.collide.shared.util; import junit.framework.TestCase; /** * Unit Tests for TextUtility functions. */ public class TextUtilsTest extends TestCase { public void testFindNextCharacterInclusive() { String text = "à\n"; assertEquals(0, TextUtils.findNextCharacterInclusive(text, 0)); assertEquals(2, TextUtils.findNextCharacterInclusive(text, 1)); assertEquals(2, TextUtils.findNextCharacterInclusive(text, 2)); assertEquals(1, TextUtils.findNextCharacterInclusive(text.substring(0, 1), 1)); } public void testBasicTextFindCharacter() { String text = "alex"; assertEquals(1, TextUtils.findNonMarkNorOtherCharacter(text, 0)); assertEquals(2, TextUtils.findNonMarkNorOtherCharacter(text, 1)); assertEquals(3, TextUtils.findNonMarkNorOtherCharacter(text, 2)); assertEquals(5, TextUtils.findNonMarkNorOtherCharacter(text, 3)); assertEquals(3, TextUtils.findPreviousNonMarkNorOtherCharacter(text, 4)); assertEquals(2, TextUtils.findPreviousNonMarkNorOtherCharacter(text, 3)); assertEquals(1, TextUtils.findPreviousNonMarkNorOtherCharacter(text, 2)); assertEquals(0, TextUtils.findPreviousNonMarkNorOtherCharacter(text, 1)); assertEquals(-1, TextUtils.findPreviousNonMarkNorOtherCharacter(text, 0)); } public void testCombiningMarkFindCharacter() { // Note: First a is a a + ` combining mark String text = "\tà=à\r\n"; assertEquals(1, TextUtils.findNonMarkNorOtherCharacter(text, 0)); // skip over combining mark assertEquals(3, TextUtils.findNonMarkNorOtherCharacter(text, 1)); // skip over \r assertEquals(6, TextUtils.findNonMarkNorOtherCharacter(text, 4)); assertEquals(8, TextUtils.findNonMarkNorOtherCharacter(text, 6)); // skip over \r assertEquals(4, TextUtils.findPreviousNonMarkNorOtherCharacter(text, 6)); // go from = to before a assertEquals(1, TextUtils.findPreviousNonMarkNorOtherCharacter(text, 3)); } public void testControlCharactersFindCharacter() { String text = "\t\t\t\r\n"; assertEquals(1, TextUtils.findNonMarkNorOtherCharacter(text, 0)); assertEquals(2, TextUtils.findNonMarkNorOtherCharacter(text, 1)); // skip over \r assertEquals(4, TextUtils.findNonMarkNorOtherCharacter(text, 2)); assertEquals(6, TextUtils.findNonMarkNorOtherCharacter(text, 4)); } public void testBasicTextFindNextWord() { String text = "alex lusco was here"; assertEquals(5, TextUtils.findNextWord(text, 0, true)); assertEquals(11, TextUtils.findNextWord(text, 5, true)); assertEquals(15, TextUtils.findNextWord(text, 11, true)); assertEquals(19, TextUtils.findNextWord(text, 15, true)); assertEquals(20, TextUtils.findNextWord(text, 19, true)); assertEquals(4, TextUtils.findNextWord(text, 0, false)); assertEquals(10, TextUtils.findNextWord(text, 4, false)); assertEquals(14, TextUtils.findNextWord(text, 10, false)); assertEquals(19, TextUtils.findNextWord(text, 14, false)); assertEquals(20, TextUtils.findNextWord(text, 19, false)); } public void testBasicTextFindPreviousWord() { String text = "alex lusco was here"; assertEquals(14, TextUtils.findPreviousWord(text, 19, true)); assertEquals(10, TextUtils.findPreviousWord(text, 14, true)); assertEquals(4, TextUtils.findPreviousWord(text, 10, true)); assertEquals(0, TextUtils.findPreviousWord(text, 4, true)); assertEquals(-1, TextUtils.findPreviousWord(text, 0, true)); assertEquals(15, TextUtils.findPreviousWord(text, 19, false)); assertEquals(11, TextUtils.findPreviousWord(text, 15, false)); assertEquals(5, TextUtils.findPreviousWord(text, 11, false)); assertEquals(0, TextUtils.findPreviousWord(text, 5, false)); assertEquals(-1, TextUtils.findPreviousWord(text, 0, false)); } public void testStopAtNewLineWhenFindNextWord() { String text = "alex\nalex\n"; assertEquals(5, TextUtils.findNextWord(text, 0, true)); assertEquals(4, TextUtils.findNextWord(text, 0, false)); assertEquals(10, TextUtils.findNextWord(text, 5, true)); assertEquals(9, TextUtils.findNextWord(text, 4, false)); } public void testIdentifierFindWord() { String text = "$(test.alex, 3)"; assertEquals(1, TextUtils.findNextWord(text, 0, true)); assertEquals(2, TextUtils.findNextWord(text, 1, true)); assertEquals(6, TextUtils.findNextWord(text, 2, true)); assertEquals(7, TextUtils.findNextWord(text, 6, true)); assertEquals(11, TextUtils.findNextWord(text, 7, true)); assertEquals(13, TextUtils.findNextWord(text, 11, true)); assertEquals(14, TextUtils.findNextWord(text, 13, true)); assertEquals(16, TextUtils.findNextWord(text, 14, true)); assertEquals(11, TextUtils.findNextWord(text, 7, false)); assertEquals(12, TextUtils.findNextWord(text, 11, false)); assertEquals(13, TextUtils.findPreviousWord(text, 14, false)); assertEquals(11, TextUtils.findPreviousWord(text, 13, false)); assertEquals(7, TextUtils.findPreviousWord(text, 11, false)); assertEquals(6, TextUtils.findPreviousWord(text, 7, false)); assertEquals(2, TextUtils.findPreviousWord(text, 6, false)); assertEquals(1, TextUtils.findPreviousWord(text, 2, false)); assertEquals(0, TextUtils.findPreviousWord(text, 1, false)); assertEquals(11, TextUtils.findPreviousWord(text, 13, true)); assertEquals(7, TextUtils.findPreviousWord(text, 11, true)); } public void testCombiningMarkFindWord() { String text = "\tà=à\r"; assertEquals(1, TextUtils.findNextWord(text, 0, true)); assertEquals(3, TextUtils.findNextWord(text, 1, true)); assertEquals(4, TextUtils.findNextWord(text, 3, true)); assertEquals(6, TextUtils.findNextWord(text, 4, true)); assertEquals(5, TextUtils.findPreviousWord(text, 6, true)); assertEquals(4, TextUtils.findPreviousWord(text, 5, true)); assertEquals(0, TextUtils.findPreviousWord(text, 3, true)); assertEquals(1, TextUtils.findPreviousWord(text, 3, false)); } public void testCountWhitespaceAtBegginingOfLine() { assertEquals(4, TextUtils.countWhitespacesAtTheBeginningOfLine("\t\t A")); assertEquals(4, TextUtils.countWhitespacesAtTheBeginningOfLine("\t\t ")); assertEquals(4, TextUtils.countWhitespacesAtTheBeginningOfLine("\t\t \n")); } }