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 static org.junit.Assert.assertEquals; 20 21 import androidx.test.filters.SmallTest; 22 import androidx.test.runner.AndroidJUnit4; 23 24 import com.android.inputmethod.latin.common.Constants; 25 26 import org.junit.Test; 27 import org.junit.runner.RunWith; 28 29 import java.util.Locale; 30 31 @SmallTest 32 @RunWith(AndroidJUnit4.class) 33 public class RecapitalizeStatusTests { 34 private static final int[] SPACE = { Constants.CODE_SPACE }; 35 36 @Test testTrim()37 public void testTrim() { 38 final RecapitalizeStatus status = new RecapitalizeStatus(); 39 status.start(30, 40, "abcdefghij", Locale.ENGLISH, SPACE); 40 status.trim(); 41 assertEquals("abcdefghij", status.getRecapitalizedString()); 42 assertEquals(30, status.getNewCursorStart()); 43 assertEquals(40, status.getNewCursorEnd()); 44 45 status.start(30, 44, " abcdefghij", Locale.ENGLISH, SPACE); 46 status.trim(); 47 assertEquals("abcdefghij", status.getRecapitalizedString()); 48 assertEquals(34, status.getNewCursorStart()); 49 assertEquals(44, status.getNewCursorEnd()); 50 51 status.start(30, 40, "abcdefgh ", Locale.ENGLISH, SPACE); 52 status.trim(); 53 assertEquals("abcdefgh", status.getRecapitalizedString()); 54 assertEquals(30, status.getNewCursorStart()); 55 assertEquals(38, status.getNewCursorEnd()); 56 57 status.start(30, 45, " abcdefghij ", Locale.ENGLISH, SPACE); 58 status.trim(); 59 assertEquals("abcdefghij", status.getRecapitalizedString()); 60 assertEquals(33, status.getNewCursorStart()); 61 assertEquals(43, status.getNewCursorEnd()); 62 } 63 64 @Test testRotate()65 public void testRotate() { 66 final RecapitalizeStatus status = new RecapitalizeStatus(); 67 status.start(29, 40, "abcd efghij", Locale.ENGLISH, SPACE); 68 status.rotate(); 69 assertEquals("Abcd Efghij", status.getRecapitalizedString()); 70 assertEquals(29, status.getNewCursorStart()); 71 assertEquals(40, status.getNewCursorEnd()); 72 status.rotate(); 73 assertEquals("ABCD EFGHIJ", status.getRecapitalizedString()); 74 status.rotate(); 75 assertEquals("abcd efghij", status.getRecapitalizedString()); 76 status.rotate(); 77 assertEquals("Abcd Efghij", status.getRecapitalizedString()); 78 79 status.start(29, 40, "Abcd Efghij", Locale.ENGLISH, SPACE); 80 status.rotate(); 81 assertEquals("ABCD EFGHIJ", status.getRecapitalizedString()); 82 assertEquals(29, status.getNewCursorStart()); 83 assertEquals(40, status.getNewCursorEnd()); 84 status.rotate(); 85 assertEquals("abcd efghij", status.getRecapitalizedString()); 86 status.rotate(); 87 assertEquals("Abcd Efghij", status.getRecapitalizedString()); 88 status.rotate(); 89 assertEquals("ABCD EFGHIJ", status.getRecapitalizedString()); 90 91 status.start(29, 40, "ABCD EFGHIJ", Locale.ENGLISH, SPACE); 92 status.rotate(); 93 assertEquals("abcd efghij", status.getRecapitalizedString()); 94 assertEquals(29, status.getNewCursorStart()); 95 assertEquals(40, status.getNewCursorEnd()); 96 status.rotate(); 97 assertEquals("Abcd Efghij", status.getRecapitalizedString()); 98 status.rotate(); 99 assertEquals("ABCD EFGHIJ", status.getRecapitalizedString()); 100 status.rotate(); 101 assertEquals("abcd efghij", status.getRecapitalizedString()); 102 103 status.start(29, 39, "AbCDefghij", Locale.ENGLISH, SPACE); 104 status.rotate(); 105 assertEquals("abcdefghij", status.getRecapitalizedString()); 106 assertEquals(29, status.getNewCursorStart()); 107 assertEquals(39, status.getNewCursorEnd()); 108 status.rotate(); 109 assertEquals("Abcdefghij", status.getRecapitalizedString()); 110 status.rotate(); 111 assertEquals("ABCDEFGHIJ", status.getRecapitalizedString()); 112 status.rotate(); 113 assertEquals("AbCDefghij", status.getRecapitalizedString()); 114 status.rotate(); 115 assertEquals("abcdefghij", status.getRecapitalizedString()); 116 117 status.start(29, 40, "Abcd efghij", Locale.ENGLISH, SPACE); 118 status.rotate(); 119 assertEquals("abcd efghij", status.getRecapitalizedString()); 120 assertEquals(29, status.getNewCursorStart()); 121 assertEquals(40, status.getNewCursorEnd()); 122 status.rotate(); 123 assertEquals("Abcd Efghij", status.getRecapitalizedString()); 124 status.rotate(); 125 assertEquals("ABCD EFGHIJ", status.getRecapitalizedString()); 126 status.rotate(); 127 assertEquals("Abcd efghij", status.getRecapitalizedString()); 128 status.rotate(); 129 assertEquals("abcd efghij", status.getRecapitalizedString()); 130 131 status.start(30, 34, "grüß", Locale.GERMAN, SPACE); 132 status.rotate(); 133 assertEquals("Grüß", status.getRecapitalizedString()); 134 assertEquals(30, status.getNewCursorStart()); 135 assertEquals(34, status.getNewCursorEnd()); 136 status.rotate(); 137 assertEquals("GRÜSS", status.getRecapitalizedString()); 138 assertEquals(30, status.getNewCursorStart()); 139 assertEquals(35, status.getNewCursorEnd()); 140 status.rotate(); 141 assertEquals("grüß", status.getRecapitalizedString()); 142 assertEquals(30, status.getNewCursorStart()); 143 assertEquals(34, status.getNewCursorEnd()); 144 status.rotate(); 145 assertEquals("Grüß", status.getRecapitalizedString()); 146 assertEquals(30, status.getNewCursorStart()); 147 assertEquals(34, status.getNewCursorEnd()); 148 149 status.start(30, 33, "œuf", Locale.FRENCH, SPACE); 150 status.rotate(); 151 assertEquals("Œuf", status.getRecapitalizedString()); 152 assertEquals(30, status.getNewCursorStart()); 153 assertEquals(33, status.getNewCursorEnd()); 154 status.rotate(); 155 assertEquals("ŒUF", status.getRecapitalizedString()); 156 assertEquals(30, status.getNewCursorStart()); 157 assertEquals(33, status.getNewCursorEnd()); 158 status.rotate(); 159 assertEquals("œuf", status.getRecapitalizedString()); 160 assertEquals(30, status.getNewCursorStart()); 161 assertEquals(33, status.getNewCursorEnd()); 162 status.rotate(); 163 assertEquals("Œuf", status.getRecapitalizedString()); 164 assertEquals(30, status.getNewCursorStart()); 165 assertEquals(33, status.getNewCursorEnd()); 166 167 status.start(30, 33, "œUf", Locale.FRENCH, SPACE); 168 status.rotate(); 169 assertEquals("œuf", status.getRecapitalizedString()); 170 assertEquals(30, status.getNewCursorStart()); 171 assertEquals(33, status.getNewCursorEnd()); 172 status.rotate(); 173 assertEquals("Œuf", status.getRecapitalizedString()); 174 assertEquals(30, status.getNewCursorStart()); 175 assertEquals(33, status.getNewCursorEnd()); 176 status.rotate(); 177 assertEquals("ŒUF", status.getRecapitalizedString()); 178 assertEquals(30, status.getNewCursorStart()); 179 assertEquals(33, status.getNewCursorEnd()); 180 status.rotate(); 181 assertEquals("œUf", status.getRecapitalizedString()); 182 assertEquals(30, status.getNewCursorStart()); 183 assertEquals(33, status.getNewCursorEnd()); 184 status.rotate(); 185 assertEquals("œuf", status.getRecapitalizedString()); 186 assertEquals(30, status.getNewCursorStart()); 187 assertEquals(33, status.getNewCursorEnd()); 188 189 status.start(30, 35, "école", Locale.FRENCH, SPACE); 190 status.rotate(); 191 assertEquals("École", status.getRecapitalizedString()); 192 assertEquals(30, status.getNewCursorStart()); 193 assertEquals(35, status.getNewCursorEnd()); 194 status.rotate(); 195 assertEquals("ÉCOLE", status.getRecapitalizedString()); 196 assertEquals(30, status.getNewCursorStart()); 197 assertEquals(35, status.getNewCursorEnd()); 198 status.rotate(); 199 assertEquals("école", status.getRecapitalizedString()); 200 assertEquals(30, status.getNewCursorStart()); 201 assertEquals(35, status.getNewCursorEnd()); 202 status.rotate(); 203 assertEquals("École", status.getRecapitalizedString()); 204 assertEquals(30, status.getNewCursorStart()); 205 assertEquals(35, status.getNewCursorEnd()); 206 } 207 } 208