1 /* 2 * Copyright (C) 2013 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.inputmethod.latin.utils; 18 19 import com.android.inputmethod.latin.settings.SettingsValues; 20 21 import android.test.AndroidTestCase; 22 import android.test.suitebuilder.annotation.SmallTest; 23 import android.text.TextUtils; 24 25 import java.util.Locale; 26 27 @SmallTest 28 public class CapsModeUtilsTests extends AndroidTestCase { 29 private static void onePathForCaps(final CharSequence cs, final int expectedResult, 30 final int mask, final SettingsValues sv, final boolean hasSpaceBefore) { 31 int oneTimeResult = expectedResult & mask; 32 assertEquals("After >" + cs + "<", oneTimeResult, 33 CapsModeUtils.getCapsMode(cs, mask, sv, hasSpaceBefore)); 34 } 35 36 private static void allPathsForCaps(final CharSequence cs, final int expectedResult, 37 final SettingsValues sv, final boolean hasSpaceBefore) { 38 final int c = TextUtils.CAP_MODE_CHARACTERS; 39 final int w = TextUtils.CAP_MODE_WORDS; 40 final int s = TextUtils.CAP_MODE_SENTENCES; 41 onePathForCaps(cs, expectedResult, c | w | s, sv, hasSpaceBefore); 42 onePathForCaps(cs, expectedResult, w | s, sv, hasSpaceBefore); 43 onePathForCaps(cs, expectedResult, c | s, sv, hasSpaceBefore); 44 onePathForCaps(cs, expectedResult, c | w, sv, hasSpaceBefore); 45 onePathForCaps(cs, expectedResult, c, sv, hasSpaceBefore); 46 onePathForCaps(cs, expectedResult, w, sv, hasSpaceBefore); 47 onePathForCaps(cs, expectedResult, s, sv, hasSpaceBefore); 48 } 49 50 public void testGetCapsMode() { 51 final int c = TextUtils.CAP_MODE_CHARACTERS; 52 final int w = TextUtils.CAP_MODE_WORDS; 53 final int s = TextUtils.CAP_MODE_SENTENCES; 54 SettingsValues sv = SettingsValues.makeDummySettingsValuesForTest(Locale.ENGLISH); 55 allPathsForCaps("", c | w | s, sv, false); 56 allPathsForCaps("Word", c, sv, false); 57 allPathsForCaps("Word.", c, sv, false); 58 allPathsForCaps("Word ", c | w, sv, false); 59 allPathsForCaps("Word. ", c | w | s, sv, false); 60 allPathsForCaps("Word..", c, sv, false); 61 allPathsForCaps("Word.. ", c | w | s, sv, false); 62 allPathsForCaps("Word... ", c | w | s, sv, false); 63 allPathsForCaps("Word ... ", c | w | s, sv, false); 64 allPathsForCaps("Word . ", c | w, sv, false); 65 allPathsForCaps("In the U.S ", c | w, sv, false); 66 allPathsForCaps("In the U.S. ", c | w, sv, false); 67 allPathsForCaps("Some stuff (e.g. ", c | w, sv, false); 68 allPathsForCaps("In the U.S.. ", c | w | s, sv, false); 69 allPathsForCaps("\"Word.\" ", c | w | s, sv, false); 70 allPathsForCaps("\"Word\". ", c | w | s, sv, false); 71 allPathsForCaps("\"Word\" ", c | w, sv, false); 72 73 // Test for phantom space 74 allPathsForCaps("Word", c | w, sv, true); 75 allPathsForCaps("Word.", c | w | s, sv, true); 76 77 // Tests after some whitespace 78 allPathsForCaps("Word\n", c | w | s, sv, false); 79 allPathsForCaps("Word\n", c | w | s, sv, true); 80 allPathsForCaps("Word\n ", c | w | s, sv, true); 81 allPathsForCaps("Word.\n", c | w | s, sv, false); 82 allPathsForCaps("Word.\n", c | w | s, sv, true); 83 allPathsForCaps("Word.\n ", c | w | s, sv, true); 84 85 sv = SettingsValues.makeDummySettingsValuesForTest(Locale.FRENCH); 86 allPathsForCaps("\"Word.\" ", c | w, sv, false); 87 allPathsForCaps("\"Word\". ", c | w | s, sv, false); 88 allPathsForCaps("\"Word\" ", c | w, sv, false); 89 } 90 } 91