/* * Copyright (C) 2012 The Android Open Source Project * * 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.android.contacts.common.util; import android.test.suitebuilder.annotation.SmallTest; import junit.framework.TestCase; /** * Unit tests for {@link SearchUtil}. */ @SmallTest public class SearchUtilTest extends TestCase { public void testFindMatchingLine() { final String actual = "this is a long test string.\nWith potentially many lines.\n" + "test@google.com\nhello\nblah\n'leading punc"; SearchUtil.MatchedLine matched = SearchUtil.findMatchingLine(actual, "poten"); assertEquals("With potentially many lines.", matched.line); assertEquals(5, matched.startIndex); // Full line match. matched = SearchUtil.findMatchingLine(actual, "hello"); assertEquals("hello", matched.line); assertEquals(0, matched.startIndex); // First line match matched = SearchUtil.findMatchingLine(actual, "this"); assertEquals("this is a long test string.", matched.line); assertEquals(0, matched.startIndex); // Last line match matched = SearchUtil.findMatchingLine(actual, "punc"); assertEquals("'leading punc", matched.line); assertEquals(9, matched.startIndex); } public void testContains() { final String actual = "this is a long test string.\nWith potentially many lines.\n" + "test@google.com\nhello\nblah\n'leading punc"; assertEquals(0, SearchUtil.contains(actual, "this")); assertEquals(10, SearchUtil.contains(actual, "lon")); assertEquals(1, SearchUtil.contains("'leading punc", "lead")); assertEquals(9, SearchUtil.contains("'leading punc", "punc")); } public void testContainsNotFound() { final String actual = "this is a long test string.\nWith potentially many lines.\n" + "test@google.com\nhello\nblah\n'leading punc"; // Non-prefix assertEquals(-1, SearchUtil.contains(actual, "ith")); assertEquals(-1, SearchUtil.contains(actual, "ing")); // Complete misses assertEquals(-1, SearchUtil.contains(actual, "thisx")); assertEquals(-1, SearchUtil.contains(actual, "manyx")); assertEquals(-1, SearchUtil.contains(actual, "hellox")); // Test for partial match of start of query to end of line assertEquals(-1, SearchUtil.contains(actual, "punctual")); } public void testFindNextTokenStart() { final String actual = "....hello.kitty"; // 012345678901234 // Find first token. assertEquals(4, SearchUtil.findNextTokenStart(actual, 0)); assertEquals(4, SearchUtil.findNextTokenStart(actual, 1)); assertEquals(4, SearchUtil.findNextTokenStart(actual, 2)); assertEquals(4, SearchUtil.findNextTokenStart(actual, 3)); // Find second token. assertEquals(10, SearchUtil.findNextTokenStart(actual, 4)); assertEquals(10, SearchUtil.findNextTokenStart(actual, 5)); assertEquals(10, SearchUtil.findNextTokenStart(actual, 6)); assertEquals(10, SearchUtil.findNextTokenStart(actual, 7)); assertEquals(10, SearchUtil.findNextTokenStart(actual, 8)); assertEquals(10, SearchUtil.findNextTokenStart(actual, 9)); // No token. assertEquals(actual.length(), SearchUtil.findNextTokenStart(actual, 10)); assertEquals(actual.length(), SearchUtil.findNextTokenStart(actual, 11)); assertEquals(actual.length(), SearchUtil.findNextTokenStart(actual, 12)); assertEquals(actual.length(), SearchUtil.findNextTokenStart(actual, 13)); assertEquals(actual.length(), SearchUtil.findNextTokenStart(actual, 14)); } public void testCleanStartAndEndOfSearchQuery() { assertEquals("test", SearchUtil.cleanStartAndEndOfSearchQuery("...test...")); assertEquals("test", SearchUtil.cleanStartAndEndOfSearchQuery(" test ")); assertEquals("test", SearchUtil.cleanStartAndEndOfSearchQuery(" ||test")); assertEquals("test", SearchUtil.cleanStartAndEndOfSearchQuery("test..")); } }