1f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project/* 2f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 3f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * 4f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * you may not use this file except in compliance with the License. 6f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * You may obtain a copy of the License at 7f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * 8f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * 10f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * See the License for the specific language governing permissions and 14f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * limitations under the License. 15f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project */ 16f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 17f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectpackage android.text.method.cts; 18f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 198ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach 20f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectimport android.test.AndroidTestCase; 21f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectimport android.text.Editable; 22f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectimport android.text.Selection; 23f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectimport android.text.Spannable; 24f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectimport android.text.Spanned; 25f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectimport android.text.method.DateKeyListener; 26f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectimport android.text.method.MetaKeyKeyListener; 27082804b2ef53e533e965f39e68175ed6ad1b4593Brian Muramatsuimport android.view.KeyCharacterMap; 28f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectimport android.view.KeyEvent; 29f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectimport android.view.View; 30f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectimport android.widget.ImageView; 31f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 32f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project/** 33f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * Test {@link MetaKeyKeyListener}. 34f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project */ 35f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectpublic class MetaKeyKeyListenerTest extends AndroidTestCase { 36f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public void testPressKey() { 37f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project final CharSequence str = "123456"; 38f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project final MetaKeyKeyListener numberKeyListener = new DateKeyListener(); 39f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project final View view = new ImageView(getContext()); 40f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project final Editable content = Editable.Factory.getInstance().newEditable(str); 41f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 42f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project content.setSpan(Selection.SELECTION_START, 0, 0, Spanned.SPAN_POINT_POINT); 43f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project content.setSpan(Selection.SELECTION_END, 0, 0, Spanned.SPAN_POINT_POINT); 448ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach numberKeyListener.onKeyDown(view, content, KeyEvent.KEYCODE_0, 458ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_0)); 46f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals('0', content.charAt(0)); 47f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 48f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project content.setSpan(Selection.SELECTION_START, 1, 1, Spanned.SPAN_POINT_POINT); 49f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project content.setSpan(Selection.SELECTION_END, 1, 1, Spanned.SPAN_POINT_POINT); 508ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach numberKeyListener.onKeyDown(view, content, KeyEvent.KEYCODE_2, 518ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_2)); 52f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals('2', content.charAt(1)); 53f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 54f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project content.setSpan(Selection.SELECTION_START, 3, 3, Spanned.SPAN_POINT_POINT); 55f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project content.setSpan(Selection.SELECTION_END, 3, 3, Spanned.SPAN_POINT_POINT); 568ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach numberKeyListener.onKeyDown(view, content, KeyEvent.KEYCODE_3, 578ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_3)); 58f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals('3', content.charAt(3)); 59f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 60f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 61f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public void testReleaseKey() { 62f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project final CharSequence str = "123456"; 63f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project final MetaKeyKeyListener numberKeyListener = new DateKeyListener(); 64f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project final View view = new ImageView(getContext()); 65f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project final Editable content = Editable.Factory.getInstance().newEditable(str); 66f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 67f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project content.setSpan(Selection.SELECTION_START, 0, 0, Spanned.SPAN_POINT_POINT); 68f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project content.setSpan(Selection.SELECTION_END, 0, 0, Spanned.SPAN_POINT_POINT); 698ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach numberKeyListener.onKeyUp(view, content, KeyEvent.KEYCODE_0, 708ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_0)); 71f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(str.charAt(0), content.charAt(0)); 72f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 73f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project content.setSpan(Selection.SELECTION_START, 1, 1, Spanned.SPAN_POINT_POINT); 74f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project content.setSpan(Selection.SELECTION_END, 1, 1, Spanned.SPAN_POINT_POINT); 758ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach numberKeyListener.onKeyUp(view, content, KeyEvent.KEYCODE_2, 768ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_2)); 77f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(str.charAt(1), content.charAt(1)); 78f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 79f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project content.setSpan(Selection.SELECTION_START, 3, 3, Spanned.SPAN_POINT_POINT); 80f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project content.setSpan(Selection.SELECTION_END, 3, 3, Spanned.SPAN_POINT_POINT); 818ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach numberKeyListener.onKeyUp(view, content, KeyEvent.KEYCODE_3, 828ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_3)); 83f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(str.charAt(3), content.charAt(3)); 84f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 85f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 86f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public void testAdjustMetaAfterKeypress() { 87f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project CharSequence str = "123456"; 88f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project Spannable content = Editable.Factory.getInstance().newEditable(str); 89f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project content.setSpan(Selection.SELECTION_START, 0, 0, Spanned.SPAN_POINT_POINT); 90f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project int len = str.length(); // for one line less than 100 91f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project content.setSpan( Selection.SELECTION_END, len, len, Spanned.SPAN_POINT_POINT); 92f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project MetaKeyKeyListener.adjustMetaAfterKeypress(content); 93f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(Spanned.SPAN_POINT_POINT, content.getSpanFlags(Selection.SELECTION_START)); 94f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(Spanned.SPAN_POINT_POINT, content.getSpanFlags(Selection.SELECTION_END)); 95f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 96f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project str = "abc"; 97f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project content = Editable.Factory.getInstance().newEditable(str); 98f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project content.setSpan(Selection.SELECTION_START, 0, 0, Spanned.SPAN_POINT_POINT); 99f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project len = str.length(); // for one line less than 100 100f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project content.setSpan( Selection.SELECTION_END, len, len, Spanned.SPAN_POINT_POINT); 101f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project MetaKeyKeyListener.adjustMetaAfterKeypress(content); 102f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(Spanned.SPAN_POINT_POINT, content.getSpanFlags(Selection.SELECTION_START)); 103f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(Spanned.SPAN_POINT_POINT, content.getSpanFlags(Selection.SELECTION_END)); 104f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 105f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project str = "#@%#$^%^"; 106f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project content = Editable.Factory.getInstance().newEditable(str); 107f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project content.setSpan(Selection.SELECTION_START, 0, 0, Spanned.SPAN_POINT_POINT); 108f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project len = str.length(); // for one line less than 100 109f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project content.setSpan( Selection.SELECTION_END, len, len, Spanned.SPAN_POINT_POINT); 110f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project MetaKeyKeyListener.adjustMetaAfterKeypress(content); 111f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(Spanned.SPAN_POINT_POINT, content.getSpanFlags(Selection.SELECTION_START)); 112f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(Spanned.SPAN_POINT_POINT, content.getSpanFlags(Selection.SELECTION_END)); 113f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 114f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 1158ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach public void testAdjustMetaAfterKeypress2() { 1168ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach long state = MetaKeyKeyListener.adjustMetaAfterKeypress(MetaKeyKeyListener.META_SHIFT_ON); 1178ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(MetaKeyKeyListener.META_SHIFT_ON, state); 1188ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach 1198ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach state = MetaKeyKeyListener.adjustMetaAfterKeypress(MetaKeyKeyListener.META_ALT_ON); 1208ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(MetaKeyKeyListener.META_ALT_ON, state); 1218ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach 1228ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach state = MetaKeyKeyListener.adjustMetaAfterKeypress(MetaKeyKeyListener.META_SYM_ON); 1238ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(MetaKeyKeyListener.META_SYM_ON, state); 1248ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach 1258ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach state = MetaKeyKeyListener.adjustMetaAfterKeypress(0); 1268ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(0, state); 1278ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach } 1288ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach 129f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public void testResetMetaState() { 130f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project CharSequence str = "123456"; 131f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project Spannable text = Editable.Factory.getInstance().newEditable(str); 132f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project text.setSpan(Selection.SELECTION_START, 0, 0, Spanned.SPAN_POINT_POINT); 133f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project text.setSpan(Selection.SELECTION_END, str.length(), str.length(), Spanned.SPAN_POINT_POINT); 134f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project MetaKeyKeyListener.resetMetaState(text); 135f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(Spanned.SPAN_POINT_POINT, text.getSpanFlags(Selection.SELECTION_START)); 136f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(Spanned.SPAN_POINT_POINT, text.getSpanFlags(Selection.SELECTION_END)); 137f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 138f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project str = "abc"; 139f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project text = Editable.Factory.getInstance().newEditable(str); 140f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project text.setSpan(Selection.SELECTION_START, 0, 0, Spanned.SPAN_POINT_POINT); 141f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project text.setSpan(Selection.SELECTION_END, str.length(), str.length(), Spanned.SPAN_POINT_POINT); 142f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project MetaKeyKeyListener.resetMetaState(text); 143f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(Spanned.SPAN_POINT_POINT, text.getSpanFlags(Selection.SELECTION_START)); 144f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(Spanned.SPAN_POINT_POINT, text.getSpanFlags(Selection.SELECTION_END)); 145f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 146f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project str = "#@%#$^%^"; 147f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project text = Editable.Factory.getInstance().newEditable(str); 148f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project text.setSpan(Selection.SELECTION_START, 0, 0, Spanned.SPAN_POINT_POINT); 149f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project text.setSpan(Selection.SELECTION_END, str.length(), str.length(), Spanned.SPAN_POINT_POINT); 150f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project MetaKeyKeyListener.resetMetaState(text); 151f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(Spanned.SPAN_POINT_POINT, text.getSpanFlags(Selection.SELECTION_START)); 152f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(Spanned.SPAN_POINT_POINT, text.getSpanFlags(Selection.SELECTION_END)); 153f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 154f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 155f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public void testGetMetaState() { 156f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(0, MetaKeyKeyListener.getMetaState("123456")); 157f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(0, MetaKeyKeyListener.getMetaState("abc")); 158f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(0, MetaKeyKeyListener.getMetaState("@#$$#^$^")); 159f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 1608ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(0, 1618ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach MetaKeyKeyListener.getMetaState("123456"), 1628ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach MetaKeyKeyListener.META_SHIFT_ON); 1638ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(0, 1648ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach MetaKeyKeyListener.getMetaState("abc"), 1658ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach MetaKeyKeyListener.META_ALT_ON); 1668ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(0, 1678ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach MetaKeyKeyListener.getMetaState("@#$$#^$^"), 1688ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach MetaKeyKeyListener.META_SYM_ON); 169f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 170f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(0, MetaKeyKeyListener.getMetaState("123456", 0)); 171f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(0, MetaKeyKeyListener.getMetaState("abc", -1)); 172f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(0, MetaKeyKeyListener.getMetaState("@#$$#^$^", Integer.MAX_VALUE)); 173f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 174f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(0, 175f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project MetaKeyKeyListener.getMetaState("123456", MetaKeyKeyListener.META_SHIFT_ON)); 176f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(0, MetaKeyKeyListener.getMetaState("abc", MetaKeyKeyListener.META_ALT_ON)); 177f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(0, 178f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project MetaKeyKeyListener.getMetaState("@#$$#^$^", MetaKeyKeyListener.META_SYM_ON)); 179f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 180f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 1818ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach public void testGetMetaState2() { 1828ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(0, MetaKeyKeyListener.getMetaState(0)); 1838ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(MetaKeyKeyListener.META_SHIFT_ON, 1848ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach MetaKeyKeyListener.getMetaState(MetaKeyKeyListener.META_SHIFT_ON)); 1858ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(MetaKeyKeyListener.META_CAP_LOCKED, 1868ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach MetaKeyKeyListener.getMetaState(MetaKeyKeyListener.META_CAP_LOCKED)); 1878ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach 1888ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(0, MetaKeyKeyListener.getMetaState(0, MetaKeyKeyListener.META_SYM_ON)); 1898ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(1, MetaKeyKeyListener.getMetaState(MetaKeyKeyListener.META_SYM_ON, 1908ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach MetaKeyKeyListener.META_SYM_ON)); 1918ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(2, MetaKeyKeyListener.getMetaState(MetaKeyKeyListener.META_SYM_LOCKED, 1928ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach MetaKeyKeyListener.META_SYM_ON)); 1938ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach } 1948ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach 195f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public void testIsMetaTracker() { 196f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertFalse(MetaKeyKeyListener.isMetaTracker("123456", new Object())); 197f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertFalse(MetaKeyKeyListener.isMetaTracker("abc", new Object())); 198f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertFalse(MetaKeyKeyListener.isMetaTracker("@#$$#^$^", new Object())); 199f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 200f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 2018ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach public void testIsSelectingMetaTracker() { 2028ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertFalse(MetaKeyKeyListener.isSelectingMetaTracker("123456", new Object())); 2038ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertFalse(MetaKeyKeyListener.isSelectingMetaTracker("abc", new Object())); 2048ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertFalse(MetaKeyKeyListener.isSelectingMetaTracker("@#$$#^$^", new Object())); 2058ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach } 2068ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach 207f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public void testResetLockedMeta() { 208f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project MockMetaKeyKeyListener mockMetaKeyKeyListener = new MockMetaKeyKeyListener(); 209f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 2108ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach MockSpannable str = new MockSpannable(); 2118ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach str.setSpan(new Object(), 0, 0, Spannable.SPAN_MARK_MARK 2128ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach | (4 << Spannable.SPAN_USER_SHIFT)); 2138ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertFalse(str.hasCalledRemoveSpan()); 2148ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach mockMetaKeyKeyListener.callResetLockedMeta(str); 2158ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertTrue(str.hasCalledRemoveSpan()); 2168ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach 2178ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach str = new MockSpannable(); 2188ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach str.setSpan(new Object(), 0, 0, Spannable.SPAN_MARK_POINT); 2198ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertFalse(str.hasCalledRemoveSpan()); 2208ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach mockMetaKeyKeyListener.callResetLockedMeta(str); 2218ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertFalse(str.hasCalledRemoveSpan()); 222f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 223f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project try { 224f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mockMetaKeyKeyListener.callResetLockedMeta(null); 225f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project fail("should throw NullPointerException."); 226f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } catch (NullPointerException e) { 227f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 228f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 229f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 2308ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach public void testResetLockedMeta2() { 2318ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach long state = MetaKeyKeyListener.resetLockedMeta(MetaKeyKeyListener.META_CAP_LOCKED); 2328ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(0, state); 2338ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach 2348ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach state = MetaKeyKeyListener.resetLockedMeta(MetaKeyKeyListener.META_SHIFT_ON); 2358ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(MetaKeyKeyListener.META_SHIFT_ON, state); 2368ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach 2378ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach state = MetaKeyKeyListener.resetLockedMeta(MetaKeyKeyListener.META_ALT_LOCKED); 2388ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(0, state); 2398ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach 2408ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach state = MetaKeyKeyListener.resetLockedMeta(MetaKeyKeyListener.META_ALT_ON); 2418ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(MetaKeyKeyListener.META_ALT_ON, state); 2428ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach 2438ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach state = MetaKeyKeyListener.resetLockedMeta(MetaKeyKeyListener.META_SYM_LOCKED); 2448ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(0, state); 2458ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach 2468ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach state = MetaKeyKeyListener.resetLockedMeta(MetaKeyKeyListener.META_SYM_ON); 2478ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(MetaKeyKeyListener.META_SYM_ON, state); 2488ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach } 2498ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach 250f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public void testClearMetaKeyState() { 251f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project final MetaKeyKeyListener numberKeyListener = new DateKeyListener(); 252f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project CharSequence str = "123456"; 253f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project Editable text = Editable.Factory.getInstance().newEditable(str); 254f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project text.setSpan(Selection.SELECTION_START, 0, 0, Spanned.SPAN_POINT_POINT); 255f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project text.setSpan(Selection.SELECTION_END, str.length(), str.length(), Spanned.SPAN_POINT_POINT); 256f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project numberKeyListener.clearMetaKeyState(null, text, MetaKeyKeyListener.META_SHIFT_ON); 257f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(Spanned.SPAN_POINT_POINT, text.getSpanFlags(Selection.SELECTION_START)); 258f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(Spanned.SPAN_POINT_POINT, text.getSpanFlags(Selection.SELECTION_END)); 259f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 260f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project str = "abc"; 261f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project text = Editable.Factory.getInstance().newEditable(str); 262f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project text.setSpan(Selection.SELECTION_START, 0, 0, Spanned.SPAN_POINT_POINT); 263f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project text.setSpan(Selection.SELECTION_END, str.length(), str.length(), Spanned.SPAN_POINT_POINT); 264f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project numberKeyListener.clearMetaKeyState(null, text, MetaKeyKeyListener.META_ALT_ON); 265f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(Spanned.SPAN_POINT_POINT, text.getSpanFlags(Selection.SELECTION_START)); 266f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(Spanned.SPAN_POINT_POINT, text.getSpanFlags(Selection.SELECTION_END)); 267f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 268f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project str = "#@%#$^%^"; 269f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project text = Editable.Factory.getInstance().newEditable(str); 270f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project text.setSpan(Selection.SELECTION_START, 0, 0, Spanned.SPAN_POINT_POINT); 271f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project text.setSpan(Selection.SELECTION_END, str.length(), str.length(), Spanned.SPAN_POINT_POINT); 272f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project numberKeyListener.clearMetaKeyState(null, text, MetaKeyKeyListener.META_SYM_ON); 273f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(Spanned.SPAN_POINT_POINT, text.getSpanFlags(Selection.SELECTION_START)); 274f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(Spanned.SPAN_POINT_POINT, text.getSpanFlags(Selection.SELECTION_END)); 275f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 276f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 2778ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach public void testClearMetaKeyState2() { 2788ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach CharSequence str = "123456"; 2798ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach Editable text = Editable.Factory.getInstance().newEditable(str); 2808ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach text.setSpan(Selection.SELECTION_START, 0, 0, Spanned.SPAN_POINT_POINT); 2818ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach text.setSpan(Selection.SELECTION_END, str.length(), str.length(), Spanned.SPAN_POINT_POINT); 2828ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach MetaKeyKeyListener.clearMetaKeyState(text, MetaKeyKeyListener.META_SHIFT_ON); 2838ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(Spanned.SPAN_POINT_POINT, text.getSpanFlags(Selection.SELECTION_START)); 2848ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(Spanned.SPAN_POINT_POINT, text.getSpanFlags(Selection.SELECTION_END)); 2858ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach 2868ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach str = "abc"; 2878ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach text = Editable.Factory.getInstance().newEditable(str); 2888ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach text.setSpan(Selection.SELECTION_START, 0, 0, Spanned.SPAN_POINT_POINT); 2898ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach text.setSpan(Selection.SELECTION_END, str.length(), str.length(), Spanned.SPAN_POINT_POINT); 2908ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach MetaKeyKeyListener.clearMetaKeyState(text, MetaKeyKeyListener.META_ALT_ON); 2918ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(Spanned.SPAN_POINT_POINT, text.getSpanFlags(Selection.SELECTION_START)); 2928ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(Spanned.SPAN_POINT_POINT, text.getSpanFlags(Selection.SELECTION_END)); 2938ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach 2948ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach str = "#@%#$^%^"; 2958ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach text = Editable.Factory.getInstance().newEditable(str); 2968ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach text.setSpan(Selection.SELECTION_START, 0, 0, Spanned.SPAN_POINT_POINT); 2978ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach text.setSpan(Selection.SELECTION_END, str.length(), str.length(), Spanned.SPAN_POINT_POINT); 2988ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach MetaKeyKeyListener.clearMetaKeyState(text, MetaKeyKeyListener.META_SYM_ON); 2998ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(Spanned.SPAN_POINT_POINT, text.getSpanFlags(Selection.SELECTION_START)); 3008ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(Spanned.SPAN_POINT_POINT, text.getSpanFlags(Selection.SELECTION_END)); 3018ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach } 3028ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach 3038ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach public void testClearMetaKeyState3() { 3048ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach final MetaKeyKeyListener metaKeyKeyListener = new MetaKeyKeyListener() {}; 3058ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach long state = metaKeyKeyListener.clearMetaKeyState(MetaKeyKeyListener.META_CAP_LOCKED, 3068ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach MetaKeyKeyListener.META_SHIFT_ON); 3078ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(0, state); 3088ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach 3098ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach state = metaKeyKeyListener.clearMetaKeyState(MetaKeyKeyListener.META_SHIFT_ON, 3108ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach MetaKeyKeyListener.META_SHIFT_ON); 3118ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(MetaKeyKeyListener.META_SHIFT_ON, state); 3128ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach 3138ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach state = metaKeyKeyListener.clearMetaKeyState(MetaKeyKeyListener.META_ALT_LOCKED, 3148ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach MetaKeyKeyListener.META_ALT_ON); 3158ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(0, state); 3168ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach 3178ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach state = metaKeyKeyListener.clearMetaKeyState(MetaKeyKeyListener.META_ALT_ON, 3188ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach MetaKeyKeyListener.META_ALT_ON); 3198ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(MetaKeyKeyListener.META_ALT_ON, state); 3208ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach 3218ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach state = metaKeyKeyListener.clearMetaKeyState(MetaKeyKeyListener.META_SYM_LOCKED, 3228ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach MetaKeyKeyListener.META_SYM_ON); 3238ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(0, state); 3248ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach 3258ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach state = metaKeyKeyListener.clearMetaKeyState(MetaKeyKeyListener.META_SYM_ON, 3268ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach MetaKeyKeyListener.META_SYM_ON); 3278ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(MetaKeyKeyListener.META_SYM_ON, state); 3288ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach } 3298ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach 3308ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach public void testHandleKeyDown() { 331082804b2ef53e533e965f39e68175ed6ad1b4593Brian Muramatsu KeyEvent fullEvent = new KeyEvent(0, 0, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_SHIFT_LEFT, 332082804b2ef53e533e965f39e68175ed6ad1b4593Brian Muramatsu 0, 0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0); 3338ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach long state = MetaKeyKeyListener.handleKeyDown(MetaKeyKeyListener.META_CAP_LOCKED, 334082804b2ef53e533e965f39e68175ed6ad1b4593Brian Muramatsu KeyEvent.KEYCODE_SHIFT_LEFT, fullEvent); 3358ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach assertEquals(0, state); 3368ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach } 3378ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach 3388ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach public void testHandleKeyUp() { 339082804b2ef53e533e965f39e68175ed6ad1b4593Brian Muramatsu KeyEvent fullEvent = new KeyEvent(0, 0, KeyEvent.ACTION_UP, KeyEvent.KEYCODE_SHIFT_LEFT, 340082804b2ef53e533e965f39e68175ed6ad1b4593Brian Muramatsu 0, 0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0); 3418ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach long state = MetaKeyKeyListener.handleKeyUp(MetaKeyKeyListener.META_CAP_LOCKED, 342082804b2ef53e533e965f39e68175ed6ad1b4593Brian Muramatsu KeyEvent.KEYCODE_SHIFT_LEFT, fullEvent); 343082804b2ef53e533e965f39e68175ed6ad1b4593Brian Muramatsu assertEquals(0, state); 3448ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach } 3458ce9f296cac94572c4cf16b5693a54c41258018fPhil Dubach 346f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project private class MockMetaKeyKeyListener extends MetaKeyKeyListener { 347f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public void callResetLockedMeta(Spannable content) { 348f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project MetaKeyKeyListener.resetLockedMeta(content); 349f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 350f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 351f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 352f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project private class MockSpannable implements Spannable { 353f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project private int mFlags; 354f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project private boolean mCalledRemoveSpan = false; 355f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 356f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public boolean hasCalledRemoveSpan() { 357f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project return mCalledRemoveSpan; 358f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 359f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 360f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public void setSpan(Object what, int start, int end, int flags) { 361f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mFlags = flags; 362f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 363f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 364f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public void removeSpan(Object what) { 365f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mCalledRemoveSpan = true; 366f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 367f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 368f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public <T> T[] getSpans(int start, int end, Class<T> type) { 369f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project return null; 370f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 371f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 372f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public int getSpanStart(Object tag) { 373f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project return 0; 374f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 375f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 376f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public int getSpanEnd(Object tag) { 377f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project return 0; 378f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 379f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 380f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public int getSpanFlags(Object tag) { 381f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project return mFlags; 382f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 383f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 384f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project @SuppressWarnings("unchecked") 385f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public int nextSpanTransition(int start, int limit, Class type) { 386f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project return 0; 387f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 388f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 389f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public char charAt(int index) { 390f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project return 0; 391f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 392f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 393f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public int length() { 394f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project return 0; 395f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 396f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 397f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public CharSequence subSequence(int start, int end) { 398f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project return null; 399f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 400f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 401f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project} 402