TextViewTest.java revision 013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1
1fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su/* 2fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * Copyright (C) 2008 The Android Open Source Project 3fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * 4fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * Licensed under the Apache License, Version 2.0 (the "License"); 5fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * you may not use this file except in compliance with the License. 6fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * You may obtain a copy of the License at 7fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * 8fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * http://www.apache.org/licenses/LICENSE-2.0 9fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * 10fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * Unless required by applicable law or agreed to in writing, software 11fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * distributed under the License is distributed on an "AS IS" BASIS, 12fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * See the License for the specific language governing permissions and 14fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * limitations under the License. 15fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su */ 16fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 17fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Supackage android.widget.cts; 18fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 19fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport com.android.cts.stub.R; 20fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport com.android.internal.util.FastMath; 21fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 22fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport dalvik.annotation.TestLevel; 23fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport dalvik.annotation.TestTargetClass; 24fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport dalvik.annotation.TestTargetNew; 25fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport dalvik.annotation.TestTargets; 26fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport dalvik.annotation.ToBeFixed; 27fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 28fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport org.xmlpull.v1.XmlPullParserException; 29fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 30fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.app.Activity; 31fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.app.Instrumentation; 32fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.app.Instrumentation.ActivityMonitor; 33fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.content.Context; 34fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.content.Intent; 35fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.content.res.ColorStateList; 36fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.content.res.Resources.NotFoundException; 37fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.graphics.Bitmap; 38fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.graphics.Canvas; 39fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.graphics.Color; 40fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.graphics.Paint; 41fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.graphics.Rect; 42fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.graphics.Typeface; 43fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.graphics.drawable.BitmapDrawable; 44fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.graphics.drawable.Drawable; 45fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.net.Uri; 46fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.os.Bundle; 47fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.test.ActivityInstrumentationTestCase2; 4872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubachimport android.test.TouchUtils; 49fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.test.UiThreadTest; 50fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.text.Editable; 51fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.text.InputFilter; 52fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.text.InputType; 53fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.text.Layout; 54fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.text.Selection; 55fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.text.Spannable; 56fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.text.SpannableString; 57fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.text.TextPaint; 58fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.text.TextUtils; 59fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.text.TextWatcher; 60fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.text.TextUtils.TruncateAt; 61fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.text.method.ArrowKeyMovementMethod; 62fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.text.method.DateKeyListener; 63fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.text.method.DateTimeKeyListener; 64fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.text.method.DialerKeyListener; 65fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.text.method.DigitsKeyListener; 66fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.text.method.KeyListener; 67fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.text.method.LinkMovementMethod; 68fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.text.method.MovementMethod; 69fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.text.method.PasswordTransformationMethod; 70fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.text.method.QwertyKeyListener; 71fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.text.method.SingleLineTransformationMethod; 72fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.text.method.TextKeyListener; 73fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.text.method.TimeKeyListener; 74fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.text.method.TransformationMethod; 75fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.text.method.TextKeyListener.Capitalize; 76fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.text.style.URLSpan; 77fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.text.style.cts.MockURLSpanTestActivity; 78fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.text.util.Linkify; 79fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.util.DisplayMetrics; 80fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.util.TypedValue; 81fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.view.ContextMenu; 82fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.view.Gravity; 83dc4fcb2f0b734c9e5ca03a97429bf3bd9b189abaBrian Muramatsuimport android.view.KeyCharacterMap; 84fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.view.KeyEvent; 85fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.view.View; 86bed9d222439713a766c3d5c91fae1526b5bc35dcBrian Muramatsuimport android.view.ViewGroup; 87fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.view.WindowManager; 88fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.view.ContextMenu.ContextMenuInfo; 89fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.view.View.OnCreateContextMenuListener; 90fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.view.View.OnLongClickListener; 91fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.view.animation.cts.DelayedCheck; 9272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubachimport android.view.inputmethod.BaseInputConnection; 9372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubachimport android.view.inputmethod.EditorInfo; 9472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubachimport android.view.inputmethod.ExtractedText; 9572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubachimport android.view.inputmethod.ExtractedTextRequest; 96bed9d222439713a766c3d5c91fae1526b5bc35dcBrian Muramatsuimport android.widget.AbsoluteLayout; 97bed9d222439713a766c3d5c91fae1526b5bc35dcBrian Muramatsuimport android.widget.FrameLayout; 98fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.widget.Scroller; 99fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.widget.TextView; 100fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport android.widget.TextView.BufferType; 10172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubachimport android.widget.TextView.OnEditorActionListener; 102fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 103fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Suimport java.io.IOException; 104fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 105fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su/** 106fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * Test {@link TextView}. 107fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su */ 108fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su@TestTargetClass(TextView.class) 109fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Supublic class TextViewTest extends ActivityInstrumentationTestCase2<TextViewStubActivity> { 110fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private TextView mTextView; 111fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private Activity mActivity; 112fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private Instrumentation mInstrumentation; 113fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private static final String LONG_TEXT = "This is a really long string which exceeds " 114fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "the width of the view."; 115fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private static final long TIMEOUT = 5000; 11622d40a1fcc078329a7e5a34ff5eeadeca9c70d49Kenny Root private CharSequence mTransformedText; 117fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 118fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public TextViewTest() { 119fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su super("com.android.cts.stub", TextViewStubActivity.class); 120fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 121fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 122fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @Override 123fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su protected void setUp() throws Exception { 124fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su super.setUp(); 125fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity = getActivity(); 126fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation = getInstrumentation(); 127fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 128fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 129fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 130fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 131fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 132fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "TextView", 133fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {android.content.Context.class} 134fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 135fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 136fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 137fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "TextView", 138fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {android.content.Context.class, android.util.AttributeSet.class} 139fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 140fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 141fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 142fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "TextView", 143fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {android.content.Context.class, android.util.AttributeSet.class, int.class} 144fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 145fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 146fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testConstructor() { 147fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su new TextView(mActivity); 148fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 149fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su new TextView(mActivity, null); 150fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 151fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su new TextView(mActivity, null, 0); 152fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 153fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 154fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 155fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 156fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 157fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getText", 158fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 159fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 160fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 161fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 162fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setText", 163fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {java.lang.CharSequence.class} 164fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 165fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 166fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @UiThreadTest 167fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testAccessText() { 168fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su TextView tv = findTextView(R.id.textview_text); 169fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 170fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su String expected = mActivity.getResources().getString(R.string.text_view_hello); 171fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su tv.setText(expected); 172fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(expected, tv.getText().toString()); 173fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 174fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su tv.setText(null); 175fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals("", tv.getText().toString()); 176fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 177fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 178fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 179fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 180fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getLineHeight", 181fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 182fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 183fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testGetLineHeight() { 184fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = new TextView(mActivity); 185fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.getLineHeight() > 0); 186fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 187fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setLineSpacing(1.2f, 1.5f); 188fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.getLineHeight() > 0); 189fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 190fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 191fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 192fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 193fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getLayout", 194fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 195fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 196fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testGetLayout() { 197fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 198fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 199fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_text); 200fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setGravity(Gravity.CENTER); 201fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 202fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 203fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 204fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNotNull(mTextView.getLayout()); 205fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 206fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su TestLayoutRunnable runnable = new TestLayoutRunnable(mTextView) { 207fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 208fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // change the text of TextView. 209fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText("Hello, Android!"); 210fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su saveLayout(); 211fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 212fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }; 213fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(runnable); 214fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 215fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(runnable.getLayout()); 216fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNotNull(mTextView.getLayout()); 217fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 218fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 219fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 220fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 221fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 222fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getKeyListener", 223fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 224fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 225fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 226fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 227fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setKeyListener", 228fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {android.text.method.KeyListener.class} 229fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 230fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 231fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testAccessKeyListener() { 232fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 233fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 234fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_text); 235fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(""); 236fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 237fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 238fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 239fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 240fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(mTextView.getKeyListener()); 241fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 242fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su final KeyListener digitsKeyListener = DigitsKeyListener.getInstance(); 243fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 244fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 245fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 246fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setKeyListener(digitsKeyListener); 247fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.requestFocus(); 248fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 249fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 250fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 251fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(digitsKeyListener, mTextView.getKeyListener()); 252fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals("", mTextView.getText().toString()); 253fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 254fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // press '-' key. 255dc4fcb2f0b734c9e5ca03a97429bf3bd9b189abaBrian Muramatsu mInstrumentation.sendStringSync("-"); 256fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals("", mTextView.getText().toString()); 257fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 258fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // press '1' key. 259dc4fcb2f0b734c9e5ca03a97429bf3bd9b189abaBrian Muramatsu mInstrumentation.sendStringSync("1"); 260fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals("1", mTextView.getText().toString()); 261fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 262fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // press '.' key. 263dc4fcb2f0b734c9e5ca03a97429bf3bd9b189abaBrian Muramatsu mInstrumentation.sendStringSync("."); 264fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals("1", mTextView.getText().toString()); 265fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 266fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // press 'a' key. 267dc4fcb2f0b734c9e5ca03a97429bf3bd9b189abaBrian Muramatsu mInstrumentation.sendStringSync("a"); 268fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals("1", mTextView.getText().toString()); 269fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 270fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su final QwertyKeyListener qwertyKeyListener 271fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su = QwertyKeyListener.getInstance(false, Capitalize.NONE); 272fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 273fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 274fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setKeyListener(qwertyKeyListener); 275fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.requestFocus(); 276fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 277fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 278fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 279fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(qwertyKeyListener, mTextView.getKeyListener()); 280fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals("1", mTextView.getText().toString()); 281fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 282fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // press 'a' key. 283dc4fcb2f0b734c9e5ca03a97429bf3bd9b189abaBrian Muramatsu mInstrumentation.sendStringSync("a"); 284dc4fcb2f0b734c9e5ca03a97429bf3bd9b189abaBrian Muramatsu 285fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals("1a", mTextView.getText().toString()); 286fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 287fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 288fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 289fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 290fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 291fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setMovementMethod", 292fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {android.text.method.MovementMethod.class} 293fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 294fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 295fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 296fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getMovementMethod", 297fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 298fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 299fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 300fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testAccessMovementMethod() { 301fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su final CharSequence LONG_TEXT = "Scrolls the specified widget to the specified " 302fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "coordinates, except constrains the X scrolling position to the horizontal " 303fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "regions of the text that will be visible after scrolling to " 304fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "the specified Y position."; 305fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su final int selectionStart = 10; 306fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su final int selectionEnd = LONG_TEXT.length(); 307fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su final MovementMethod movementMethod = ArrowKeyMovementMethod.getInstance(); 308fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 309fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 310fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_text); 311fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setMovementMethod(movementMethod); 312fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(LONG_TEXT, BufferType.EDITABLE); 313fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Selection.setSelection((Editable) mTextView.getText(), 314fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su selectionStart, selectionEnd); 315fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.requestFocus(); 316fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 317fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 318fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 319fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 320fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(movementMethod, mTextView.getMovementMethod()); 321fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(selectionStart, Selection.getSelectionStart(mTextView.getText())); 322fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(selectionEnd, Selection.getSelectionEnd(mTextView.getText())); 323fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su sendKeys(KeyEvent.KEYCODE_SHIFT_LEFT, KeyEvent.KEYCODE_ALT_LEFT, 324fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su KeyEvent.KEYCODE_DPAD_UP); 325fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // the selection has been removed. 326fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(selectionStart, Selection.getSelectionStart(mTextView.getText())); 327fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(selectionStart, Selection.getSelectionEnd(mTextView.getText())); 328fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 329fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 330fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 331fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setMovementMethod(null); 332fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Selection.setSelection((Editable) mTextView.getText(), 333fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su selectionStart, selectionEnd); 334fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.requestFocus(); 335fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 336fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 337fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 338fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 339fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(mTextView.getMovementMethod()); 340fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(selectionStart, Selection.getSelectionStart(mTextView.getText())); 341fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(selectionEnd, Selection.getSelectionEnd(mTextView.getText())); 342fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su sendKeys(KeyEvent.KEYCODE_SHIFT_LEFT, KeyEvent.KEYCODE_ALT_LEFT, 343fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su KeyEvent.KEYCODE_DPAD_UP); 344fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // the selection will not be changed. 345fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(selectionStart, Selection.getSelectionStart(mTextView.getText())); 346fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(selectionEnd, Selection.getSelectionEnd(mTextView.getText())); 347fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 348fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 349fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 350fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 351fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "length", 352fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 353fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 354fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @UiThreadTest 355fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testLength() { 356fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_text); 357fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 358fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su String content = "This is content"; 359fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(content); 360fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(content.length(), mTextView.length()); 361fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 362fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(""); 363fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, mTextView.length()); 364fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 365fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(null); 366fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, mTextView.length()); 367fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 368fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 369fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 370fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 371fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 372fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setGravity", 373fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class} 374fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 375fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 376fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 377fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getGravity", 378fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 379fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 380fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 381fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @UiThreadTest 382fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testAccessGravity() { 383fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.setContentView(R.layout.textview_gravity); 384fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 385fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.gravity_default); 386fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Gravity.TOP | Gravity.LEFT, mTextView.getGravity()); 387fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 388fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.gravity_bottom); 389fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Gravity.BOTTOM | Gravity.LEFT, mTextView.getGravity()); 390fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 391fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.gravity_right); 392fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Gravity.TOP | Gravity.RIGHT, mTextView.getGravity()); 393fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 394fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.gravity_center); 395fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Gravity.CENTER, mTextView.getGravity()); 396fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 397fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.gravity_fill); 398fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Gravity.FILL, mTextView.getGravity()); 399fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 400fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.gravity_center_vertical_right); 401fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Gravity.CENTER_VERTICAL | Gravity.RIGHT, mTextView.getGravity()); 402fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 403fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL); 404fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, mTextView.getGravity()); 405fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setGravity(Gravity.FILL); 406fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Gravity.FILL, mTextView.getGravity()); 407fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setGravity(Gravity.CENTER); 408fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Gravity.CENTER, mTextView.getGravity()); 409fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 410fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setGravity(Gravity.NO_GRAVITY); 411fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Gravity.TOP | Gravity.LEFT, mTextView.getGravity()); 412fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 413fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setGravity(Gravity.RIGHT); 414fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Gravity.TOP | Gravity.RIGHT, mTextView.getGravity()); 415fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 416fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setGravity(Gravity.FILL_VERTICAL); 417fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Gravity.FILL_VERTICAL | Gravity.LEFT, mTextView.getGravity()); 418fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 419fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su //test negative input value. 420fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setGravity(-1); 421fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(-1, mTextView.getGravity()); 422fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 423fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 424fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 425fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 426fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 427fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setAutoLinkMask", 428fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class} 429fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 430fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 431fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 432fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getAutoLinkMask", 433fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 434fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 435fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 436fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testAccessAutoLinkMask() { 437fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_text); 438fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su final CharSequence text1 = 439fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su new SpannableString("URL: http://www.google.com. mailto: account@gmail.com"); 440fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 441fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 442fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setAutoLinkMask(Linkify.ALL); 443fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(text1, BufferType.EDITABLE); 444fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 445fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 446fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 447fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Linkify.ALL, mTextView.getAutoLinkMask()); 448fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 449fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Spannable spanString = (Spannable) mTextView.getText(); 450fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su URLSpan[] spans = spanString.getSpans(0, spanString.length(), URLSpan.class); 451fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNotNull(spans); 452fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(2, spans.length); 453fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals("http://www.google.com", spans[0].getURL()); 454fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals("mailto:account@gmail.com", spans[1].getURL()); 455fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 456fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su final CharSequence text2 = 457fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su new SpannableString("name: Jack. tel: +41 44 800 8999"); 458fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 459fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 460fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setAutoLinkMask(Linkify.PHONE_NUMBERS); 461fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(text2, BufferType.EDITABLE); 462fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 463fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 464fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 465fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Linkify.PHONE_NUMBERS, mTextView.getAutoLinkMask()); 466fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 467fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su spanString = (Spannable) mTextView.getText(); 468fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su spans = spanString.getSpans(0, spanString.length(), URLSpan.class); 469fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNotNull(spans); 470fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(1, spans.length); 471fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals("tel:+41448008999", spans[0].getURL()); 472fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 473fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su layout(R.layout.textview_autolink); 474fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // 1 for web, 2 for email, 4 for phone, 7 for all(web|email|phone) 475fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, getAutoLinkMask(R.id.autolink_default)); 476fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Linkify.WEB_URLS, getAutoLinkMask(R.id.autolink_web)); 477fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Linkify.EMAIL_ADDRESSES, getAutoLinkMask(R.id.autolink_email)); 478fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Linkify.PHONE_NUMBERS, getAutoLinkMask(R.id.autolink_phone)); 479fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Linkify.ALL, getAutoLinkMask(R.id.autolink_all)); 480fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Linkify.WEB_URLS | Linkify.EMAIL_ADDRESSES, 481fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su getAutoLinkMask(R.id.autolink_compound1)); 482fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Linkify.WEB_URLS | Linkify.PHONE_NUMBERS, 483fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su getAutoLinkMask(R.id.autolink_compound2)); 484fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Linkify.EMAIL_ADDRESSES | Linkify.PHONE_NUMBERS, 485fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su getAutoLinkMask(R.id.autolink_compound3)); 486fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Linkify.PHONE_NUMBERS | Linkify.ALL, 487fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su getAutoLinkMask(R.id.autolink_compound4)); 488fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 489fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 490fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 491fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 492fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 493fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setTextSize", 494fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {float.class} 495fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 496fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 497fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 498fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getTextSize", 499fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 500fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 501fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 502fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 503fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setTextSize", 504fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class, float.class} 505fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 506fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 507fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testAccessTextSize() { 508fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su DisplayMetrics metrics = mActivity.getResources().getDisplayMetrics(); 509fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 510fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = new TextView(mActivity); 511fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX, 20f); 512fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, 20f, metrics), 513fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getTextSize(), 0.01f); 514fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 515fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20f); 516fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20f, metrics), 517fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getTextSize(), 0.01f); 518fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 519fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20f); 520fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 20f, metrics), 521fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getTextSize(), 0.01f); 522fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 523fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // setTextSize by default unit "sp" 524fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTextSize(20f); 525fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 20f, metrics), 526fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getTextSize(), 0.01f); 527fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 528fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTextSize(200f); 529fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 200f, metrics), 530fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getTextSize(), 0.01f); 531fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 532fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 533fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 534fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 535fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 536fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setTextColor", 537fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class} 538fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 539fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 540fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 541fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getCurrentTextColor", 542fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 543fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 544fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 545fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 546fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getTextColors", 547fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 548fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 549fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 550fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 551fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setTextColor", 552fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {android.content.res.ColorStateList.class} 553fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 554fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 555fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @ToBeFixed(bug = "1695243", explanation = "Android API javadocs are incomplete, " 556fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "should add @throws clause into javadoc of " 557fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "TextView#setTextColor(ColorStateList) when param colors is null") 558fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testAccessTextColor() { 559fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = new TextView(mActivity); 560fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 561fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTextColor(Color.GREEN); 562fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Color.GREEN, mTextView.getCurrentTextColor()); 563fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(ColorStateList.valueOf(Color.GREEN), mTextView.getTextColors()); 564fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 565fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTextColor(Color.BLACK); 566fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Color.BLACK, mTextView.getCurrentTextColor()); 567fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(ColorStateList.valueOf(Color.BLACK), mTextView.getTextColors()); 568fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 569fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTextColor(Color.RED); 570fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Color.RED, mTextView.getCurrentTextColor()); 571fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(ColorStateList.valueOf(Color.RED), mTextView.getTextColors()); 572fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 573fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // using ColorStateList 574fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // normal 575fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ColorStateList colors = new ColorStateList(new int[][] { 576fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su new int[] { android.R.attr.state_focused}, new int[0] }, 577fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su new int[] { Color.rgb(0, 255, 0), Color.BLACK }); 578fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTextColor(colors); 579fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(colors, mTextView.getTextColors()); 580fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Color.BLACK, mTextView.getCurrentTextColor()); 581fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 582fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // exceptional 583fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su try { 584fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTextColor(null); 585fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su fail("Should thrown exception if the colors is null"); 586fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } catch (NullPointerException e){ 587fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 588fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 589fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 590fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 591fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.SUFFICIENT, 592fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getTextColor", 593fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {android.content.Context.class, android.content.res.TypedArray.class, int.class} 594fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 595fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @ToBeFixed(bug = "1695243", explanation = "Android API javadocs are incomplete, " 596fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "should add @throws clause into javadoc of " 597fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "TextView#getTextColor(Context, TypedArray, int) when param attrs is null") 598fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testGetTextColor() { 599fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // TODO: How to get a suitable TypedArray to test this method. 600fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 601fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su try { 602fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su TextView.getTextColor(mActivity, null, -1); 603fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su fail("There should be a NullPointerException thrown out."); 604fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } catch (NullPointerException e) { 605fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 606fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 607fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 608fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 609fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 610fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setHighlightColor", 611fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class} 612fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 613fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @ToBeFixed(bug = "1386429", explanation = "No getter to check the value.") 614fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testSetHighlightColor() { 615fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = new TextView(mActivity); 616fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 617fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setHighlightColor(0x00ff00ff); 618fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 619fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 620fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 621fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 622fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 623fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setShadowLayer", 624fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {float.class, float.class, float.class, int.class} 625fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 626fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 627fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 628fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "isPaddingOffsetRequired", 629fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 630fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 631fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 632fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 633fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getLeftPaddingOffset", 634fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 635fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 636fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 637fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 638fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getTopPaddingOffset", 639fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 640fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 641fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 642fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 643fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getRightPaddingOffset", 644fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 645fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 646fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 647fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 648fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getBottomPaddingOffset", 649fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 650fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 651fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 652fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @ToBeFixed(bug = "1386429", explanation = "No getter to check the shaow color value.") 653fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testSetShadowLayer() { 654fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su MockTextView textView = new MockTextView(mActivity); 655fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 656fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // shadow is placed to the left and below the text 657fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setShadowLayer(1.0f, 0.3f, 0.3f, Color.CYAN); 658fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(textView.isPaddingOffsetRequired()); 659fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, textView.getLeftPaddingOffset()); 660fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, textView.getTopPaddingOffset()); 661fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(1, textView.getRightPaddingOffset()); 662fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(1, textView.getBottomPaddingOffset()); 663fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 664fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // shadow is placed to the right and above the text 665fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setShadowLayer(1.0f, -0.8f, -0.8f, Color.CYAN); 666fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(textView.isPaddingOffsetRequired()); 667fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(-1, textView.getLeftPaddingOffset()); 668fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(-1, textView.getTopPaddingOffset()); 669fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, textView.getRightPaddingOffset()); 670fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, textView.getBottomPaddingOffset()); 671fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 672fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // no shadow 673fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setShadowLayer(0.0f, 0.0f, 0.0f, Color.CYAN); 674fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(textView.isPaddingOffsetRequired()); 675fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, textView.getLeftPaddingOffset()); 676fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, textView.getTopPaddingOffset()); 677fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, textView.getRightPaddingOffset()); 678fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, textView.getBottomPaddingOffset()); 679fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 680fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 681fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 682fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 683fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setSelectAllOnFocus", 684fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {boolean.class} 685fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 686fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @UiThreadTest 687fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testSetSelectAllOnFocus() { 688fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.setContentView(R.layout.textview_selectallonfocus); 689fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su String content = "This is the content"; 690fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su String blank = ""; 691fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.selectAllOnFocus_default); 692fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(blank, BufferType.SPANNABLE); 693fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // change the focus 694fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su findTextView(R.id.selectAllOnFocus_dummy).requestFocus(); 695fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(mTextView.isFocused()); 696fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.requestFocus(); 697fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.isFocused()); 698fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 699fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(-1, mTextView.getSelectionStart()); 700fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(-1, mTextView.getSelectionEnd()); 701fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 702fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(content, BufferType.SPANNABLE); 703fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setSelectAllOnFocus(true); 704fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // change the focus 705fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su findTextView(R.id.selectAllOnFocus_dummy).requestFocus(); 706fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(mTextView.isFocused()); 707fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.requestFocus(); 708fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.isFocused()); 709fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 710fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, mTextView.getSelectionStart()); 711fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(content.length(), mTextView.getSelectionEnd()); 712fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 713fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Selection.setSelection((Spannable) mTextView.getText(), 0); 714fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setSelectAllOnFocus(false); 715fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // change the focus 716fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su findTextView(R.id.selectAllOnFocus_dummy).requestFocus(); 717fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(mTextView.isFocused()); 718fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.requestFocus(); 719fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.isFocused()); 720fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 721fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, mTextView.getSelectionStart()); 722fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, mTextView.getSelectionEnd()); 723fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 724fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(blank, BufferType.SPANNABLE); 725fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setSelectAllOnFocus(true); 726fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // change the focus 727fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su findTextView(R.id.selectAllOnFocus_dummy).requestFocus(); 728fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(mTextView.isFocused()); 729fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.requestFocus(); 730fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.isFocused()); 731fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 732fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, mTextView.getSelectionStart()); 733fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(blank.length(), mTextView.getSelectionEnd()); 734fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 735fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Selection.setSelection((Spannable) mTextView.getText(), 0); 736fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setSelectAllOnFocus(false); 737fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // change the focus 738fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su findTextView(R.id.selectAllOnFocus_dummy).requestFocus(); 739fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(mTextView.isFocused()); 740fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.requestFocus(); 741fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.isFocused()); 742fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 743fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, mTextView.getSelectionStart()); 744fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, mTextView.getSelectionEnd()); 745fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 746fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 747fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 748fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 749fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getPaint", 750fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 751fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 752fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testGetPaint() { 753fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = new TextView(mActivity); 754fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su TextPaint tp = mTextView.getPaint(); 755fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNotNull(tp); 756fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 757fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getPaintFlags(), tp.getFlags()); 758fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 759fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 760fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 761fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 762fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 763fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setLinksClickable", 764fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {boolean.class} 765fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 766fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 767fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 768fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getLinksClickable", 769fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 770fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 771fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 772fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @UiThreadTest 773fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testAccessLinksClickable() { 774fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.setContentView(R.layout.textview_hint_linksclickable_freezestext); 775fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 776fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.hint_linksClickable_freezesText_default); 777fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.getLinksClickable()); 778fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 779fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.linksClickable_true); 780fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.getLinksClickable()); 781fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 782fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.linksClickable_false); 783fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(mTextView.getLinksClickable()); 784fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 785fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setLinksClickable(false); 786fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(mTextView.getLinksClickable()); 787fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 788fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setLinksClickable(true); 789fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.getLinksClickable()); 790fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 791fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(mTextView.getMovementMethod()); 792fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 793fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su final CharSequence text = new SpannableString("name: Jack. tel: +41 44 800 8999"); 794fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 795fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setAutoLinkMask(Linkify.PHONE_NUMBERS); 796fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(text, BufferType.EDITABLE); 797fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 798fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Movement method will be automatically set to LinkMovementMethod 799fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.getMovementMethod() instanceof LinkMovementMethod); 800fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 801fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 802fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 803fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 804fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 805fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setHintTextColor", 806fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class} 807fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 808fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 809fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 810fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getHintTextColors", 811fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 812fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 813fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 814fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 815fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getCurrentHintTextColor", 816fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 817fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 818fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 819fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 820fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setHintTextColor", 821fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {android.content.res.ColorStateList.class} 822fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 823fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 824fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testAccessHintTextColor() { 825fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = new TextView(mActivity); 826fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // using int values 827fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // normal 828fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setHintTextColor(Color.GREEN); 829fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Color.GREEN, mTextView.getCurrentHintTextColor()); 830fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(ColorStateList.valueOf(Color.GREEN), mTextView.getHintTextColors()); 831fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 832fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setHintTextColor(Color.BLUE); 833fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(ColorStateList.valueOf(Color.BLUE), mTextView.getHintTextColors()); 834fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Color.BLUE, mTextView.getCurrentHintTextColor()); 835fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 836fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setHintTextColor(Color.RED); 837fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(ColorStateList.valueOf(Color.RED), mTextView.getHintTextColors()); 838fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Color.RED, mTextView.getCurrentHintTextColor()); 839fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 840fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // using ColorStateList 841fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // normal 842fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ColorStateList colors = new ColorStateList(new int[][] { 843fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su new int[] { android.R.attr.state_focused}, new int[0] }, 844fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su new int[] { Color.rgb(0, 255, 0), Color.BLACK }); 845fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setHintTextColor(colors); 846fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(colors, mTextView.getHintTextColors()); 847fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Color.BLACK, mTextView.getCurrentHintTextColor()); 848fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 849fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // exceptional 850fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setHintTextColor(null); 851fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(mTextView.getHintTextColors()); 852fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getCurrentTextColor(), mTextView.getCurrentHintTextColor()); 853fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 854fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 855fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 856fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 857fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 858fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setLinkTextColor", 859fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class} 860fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 861fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 862fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 863fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getLinkTextColors", 864fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 865fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 866fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 867fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 868fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setLinkTextColor", 869fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {android.content.res.ColorStateList.class} 870fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 871fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 872fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testAccessLinkTextColor() { 873fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = new TextView(mActivity); 874fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // normal 875fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setLinkTextColor(Color.GRAY); 876fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(ColorStateList.valueOf(Color.GRAY), mTextView.getLinkTextColors()); 877fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Color.GRAY, mTextView.getPaint().linkColor); 878fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 879fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setLinkTextColor(Color.YELLOW); 880fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(ColorStateList.valueOf(Color.YELLOW), mTextView.getLinkTextColors()); 881fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Color.YELLOW, mTextView.getPaint().linkColor); 882fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 883fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setLinkTextColor(Color.WHITE); 884fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(ColorStateList.valueOf(Color.WHITE), mTextView.getLinkTextColors()); 885fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Color.WHITE, mTextView.getPaint().linkColor); 886fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 887fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ColorStateList colors = new ColorStateList(new int[][] { 888fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su new int[] { android.R.attr.state_expanded}, new int[0] }, 889fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su new int[] { Color.rgb(0, 255, 0), Color.BLACK }); 890fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setLinkTextColor(colors); 891fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(colors, mTextView.getLinkTextColors()); 892fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Color.BLACK, mTextView.getPaint().linkColor); 893fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 894fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setLinkTextColor(null); 895fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(mTextView.getLinkTextColors()); 896fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Color.BLACK, mTextView.getPaint().linkColor); 897fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 898fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 899fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 900fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 901fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 902fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setPaintFlags", 903fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class} 904fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 905fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 906fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 907fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getPaintFlags", 908fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 909fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 910fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 911fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testAccessPaintFlags() { 912fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = new TextView(mActivity); 913fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Paint.DEV_KERN_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG, mTextView.getPaintFlags()); 914fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 915fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setPaintFlags(Paint.UNDERLINE_TEXT_FLAG | Paint.FAKE_BOLD_TEXT_FLAG); 916fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Paint.UNDERLINE_TEXT_FLAG | Paint.FAKE_BOLD_TEXT_FLAG, 917fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getPaintFlags()); 918fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 919fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG | Paint.LINEAR_TEXT_FLAG); 920fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Paint.STRIKE_THRU_TEXT_FLAG | Paint.LINEAR_TEXT_FLAG, 921fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getPaintFlags()); 922fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 923fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 924fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 925fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 926fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 927fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setMinHeight", 928fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class} 929fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 930fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 931fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 932fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setMaxHeight", 933fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class} 934fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 935fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 936fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 937fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setHeight", 938fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class} 939fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 940fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 941fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 942fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setMaxWidth", 943fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class} 944fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 945fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 946fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 947fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setMinWidth", 948fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class} 949fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 950fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 951fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 952fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setWidth", 953fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class} 954fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 955fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 956fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testHeightAndWidth() { 957fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_text); 958fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su int originalWidth = mTextView.getWidth(); 959fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setWidth(mTextView.getWidth() >> 3); 960fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su int originalHeight = mTextView.getHeight(); 961fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 962fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setMaxHeight(originalHeight + 1); 963fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(originalHeight, mTextView.getHeight()); 964fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 965fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setMaxHeight(originalHeight - 1); 966fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(originalHeight - 1, mTextView.getHeight()); 967fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 968fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setMaxHeight(-1); 969fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, mTextView.getHeight()); 970fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 971fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setMaxHeight(Integer.MAX_VALUE); 972fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(originalHeight, mTextView.getHeight()); 973fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 974fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setMinHeight(originalHeight + 1); 975fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(originalHeight + 1, mTextView.getHeight()); 976fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 977fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setMinHeight(originalHeight - 1); 978fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(originalHeight, mTextView.getHeight()); 979fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 980fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setMinHeight(-1); 981fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(originalHeight, mTextView.getHeight()); 982fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 983fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setMinHeight(0); 984fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setMaxHeight(Integer.MAX_VALUE); 985fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 986fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setHeight(originalHeight + 1); 987fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(originalHeight + 1, mTextView.getHeight()); 988fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 989fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setHeight(originalHeight - 1); 990fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(originalHeight - 1, mTextView.getHeight()); 991fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 992fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setHeight(-1); 993fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, mTextView.getHeight()); 994fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 995fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setHeight(originalHeight); 996fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(originalHeight, mTextView.getHeight()); 997fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 998fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(originalWidth >> 3, mTextView.getWidth()); 999fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1000fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Min Width 1001fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setMinWidth(originalWidth + 1); 1002fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(1, mTextView.getLineCount()); 1003fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(originalWidth + 1, mTextView.getWidth()); 1004fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1005fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setMinWidth(originalWidth - 1); 10069c3b459233e30a88d24e7178cc7514731fa56f55Brian Muramatsu assertEquals(2, mTextView.getLineCount()); 10079c3b459233e30a88d24e7178cc7514731fa56f55Brian Muramatsu assertEquals(originalWidth - 1, mTextView.getWidth()); 1008fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1009fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Width 1010fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setWidth(originalWidth + 1); 1011fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(1, mTextView.getLineCount()); 1012fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(originalWidth + 1, mTextView.getWidth()); 1013fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1014fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setWidth(originalWidth - 1); 10159c3b459233e30a88d24e7178cc7514731fa56f55Brian Muramatsu assertEquals(2, mTextView.getLineCount()); 1016fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(originalWidth - 1, mTextView.getWidth()); 1017fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1018fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1019fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 1020fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 1021fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setMinEms", 1022fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class} 1023fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 1024fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testSetMinEms() { 1025fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_text); 1026fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(1, mTextView.getLineCount()); 10279c3b459233e30a88d24e7178cc7514731fa56f55Brian Muramatsu 1028fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su int originalWidth = mTextView.getWidth(); 1029fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su int originalEms = originalWidth / mTextView.getLineHeight(); 1030fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1031fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setMinEms(originalEms + 1); 1032fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals((originalEms + 1) * mTextView.getLineHeight(), mTextView.getWidth()); 1033fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1034fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setMinEms(originalEms - 1); 1035fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(originalWidth, mTextView.getWidth()); 1036fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1037fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1038fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 1039fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 1040fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setMaxEms", 1041fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class} 1042fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 1043fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testSetMaxEms() { 1044fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_text); 1045fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(1, mTextView.getLineCount()); 1046fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su int originalWidth = mTextView.getWidth(); 1047fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su int originalEms = originalWidth / mTextView.getLineHeight(); 1048fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1049fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setMaxEms(originalEms + 1); 1050fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(1, mTextView.getLineCount()); 1051fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(originalWidth, mTextView.getWidth()); 1052fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1053fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setMaxEms(originalEms - 1); 1054fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(1 < mTextView.getLineCount()); 1055fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals((originalEms - 1) * mTextView.getLineHeight(), 1056fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getWidth()); 1057fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1058fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1059fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 1060fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 1061fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setEms", 1062fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class} 1063fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 1064fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testSetEms() { 1065fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_text); 1066fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals("check height", 1, mTextView.getLineCount()); 1067fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su int originalWidth = mTextView.getWidth(); 1068fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su int originalEms = originalWidth / mTextView.getLineHeight(); 1069fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1070fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setEms(originalEms + 1); 1071fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(1, mTextView.getLineCount()); 1072fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals((originalEms + 1) * mTextView.getLineHeight(), 1073fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getWidth()); 1074fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1075fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setEms(originalEms - 1); 1076fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue((1 < mTextView.getLineCount())); 1077fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals((originalEms - 1) * mTextView.getLineHeight(), 1078fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getWidth()); 1079fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1080fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1081fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 1082fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 1083fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setLineSpacing", 1084fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {float.class, float.class} 1085fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 1086fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testSetLineSpacing() { 1087fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = new TextView(mActivity); 1088fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su int originalLineHeight = mTextView.getLineHeight(); 1089fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1090fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // normal 1091fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su float add = 1.2f; 1092fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su float mult = 1.4f; 1093fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setLineSpacing(add, mult); 1094fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(FastMath.round(originalLineHeight * mult + add), mTextView.getLineHeight()); 1095fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su add = 0.0f; 1096fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mult = 1.4f; 1097fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setLineSpacing(add, mult); 1098fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(FastMath.round(originalLineHeight * mult + add), mTextView.getLineHeight()); 1099fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1100fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // abnormal 1101fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su add = -1.2f; 1102fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mult = 1.4f; 1103fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setLineSpacing(add, mult); 1104fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(FastMath.round(originalLineHeight * mult + add), mTextView.getLineHeight()); 1105fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su add = -1.2f; 1106fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mult = -1.4f; 1107fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setLineSpacing(add, mult); 1108fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(FastMath.round(originalLineHeight * mult + add), mTextView.getLineHeight()); 1109fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su add = 1.2f; 1110fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mult = 0.0f; 1111fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setLineSpacing(add, mult); 1112fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(FastMath.round(originalLineHeight * mult + add), mTextView.getLineHeight()); 1113fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1114fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // edge 1115fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su add = Float.MIN_VALUE; 1116fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mult = Float.MIN_VALUE; 1117fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setLineSpacing(add, mult); 1118fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su float expected = originalLineHeight * mult + add; 1119fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(FastMath.round(expected), mTextView.getLineHeight()); 1120fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su add = Float.MAX_VALUE; 1121fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mult = Float.MAX_VALUE; 1122fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setLineSpacing(add, mult); 1123fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su expected = originalLineHeight * mult + add; 1124fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(FastMath.round(expected), mTextView.getLineHeight()); 1125fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1126fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1127fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 1128fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 1129fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.NOT_NECESSARY, 1130fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "onSaveInstanceState", 1131fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 1132fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 1133fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 1134fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.NOT_NECESSARY, 1135fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "onRestoreInstanceState", 1136fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {android.os.Parcelable.class} 1137fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 1138fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 1139fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testInstanceState() { 1140fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Do not test. Implementation details. 1141fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1142fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1143fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 1144fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 114572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.PARTIAL_COMPLETE, 1146fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setFreezesText", 1147fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {boolean.class} 1148fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 1149fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 115072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.PARTIAL_COMPLETE, 1151fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getFreezesText", 1152fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 1153fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 1154fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 1155fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testAccessFreezesText() throws Throwable { 1156fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su layout(R.layout.textview_hint_linksclickable_freezestext); 1157fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1158fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.hint_linksClickable_freezesText_default); 1159fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(mTextView.getFreezesText()); 1160fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1161fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.freezesText_true); 1162fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.getFreezesText()); 1163fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1164fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.freezesText_false); 1165fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(mTextView.getFreezesText()); 1166fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1167fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setFreezesText(false); 1168fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(mTextView.getFreezesText()); 1169fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1170fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su final CharSequence text = "Hello, TextView."; 1171fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 1172fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 1173fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(text); 1174fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1175fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 1176fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 1177fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1178fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su final URLSpan urlSpan = new URLSpan("ctstest://TextView/test"); 117972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach // TODO: How to simulate the TextView in frozen icicles. 1180fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Instrumentation instrumentation = getInstrumentation(); 1181fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ActivityMonitor am = instrumentation.addMonitor(MockURLSpanTestActivity.class.getName(), 1182fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su null, false); 1183fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1184fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 1185fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 1186fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Uri uri = Uri.parse(urlSpan.getURL()); 1187fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Intent intent = new Intent(Intent.ACTION_VIEW, uri); 1188fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.startActivity(intent); 1189fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1190fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 1191fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1192fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Activity newActivity = am.waitForActivityWithTimeout(TIMEOUT); 1193fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNotNull(newActivity); 1194fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su newActivity.finish(); 119572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach instrumentation.removeMonitor(am); 1196fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // the text of TextView is removed. 1197fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.freezesText_false); 119872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 119972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertEquals(text.toString(), mTextView.getText().toString()); 1200fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1201fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setFreezesText(true); 1202fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.getFreezesText()); 1203fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1204fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 1205fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 1206fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(text); 1207fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1208fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 1209fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 121072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach // TODO: How to simulate the TextView in frozen icicles. 1211fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su am = instrumentation.addMonitor(MockURLSpanTestActivity.class.getName(), 1212fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su null, false); 1213fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1214fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 1215fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 1216fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Uri uri = Uri.parse(urlSpan.getURL()); 1217fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Intent intent = new Intent(Intent.ACTION_VIEW, uri); 1218fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.startActivity(intent); 1219fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1220fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 1221fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1222fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su newActivity = am.waitForActivityWithTimeout(TIMEOUT); 1223fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNotNull(newActivity); 1224fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su newActivity.finish(); 122572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach instrumentation.removeMonitor(am); 1226fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // the text of TextView is still there. 1227fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.freezesText_false); 1228fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(text.toString(), mTextView.getText().toString()); 1229fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1230fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1231fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 1232fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 1233fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setEditableFactory", 1234fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {android.text.Editable.Factory.class} 1235fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 1236fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @ToBeFixed(bug = "1695243", explanation = "Android API javadocs are incomplete, " 1237fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "should add @throws clause into javadoc of " 1238fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "TextView#setEditableFactory(android.text.Editable.Factory) " 1239fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "when param factory is null") 1240fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testSetEditableFactory() { 1241fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = new TextView(mActivity); 1242fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su String text = "sample"; 1243fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su MockEditableFactory factory = new MockEditableFactory(); 1244fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setEditableFactory(factory); 1245fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1246fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su factory.reset(); 1247fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(text); 1248fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(factory.hasCalledNewEditable()); 1249fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1250fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su factory.reset(); 1251fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(text, BufferType.SPANNABLE); 1252fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(factory.hasCalledNewEditable()); 1253fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1254fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su factory.reset(); 1255fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(text, BufferType.NORMAL); 1256fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(factory.hasCalledNewEditable()); 1257fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1258fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su factory.reset(); 1259fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(text, BufferType.EDITABLE); 1260fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(factory.hasCalledNewEditable()); 1261fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(text, factory.getSource()); 1262fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1263fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setKeyListener(DigitsKeyListener.getInstance()); 1264fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su factory.reset(); 1265fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(text, BufferType.EDITABLE); 1266fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(factory.hasCalledNewEditable()); 1267fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(text, factory.getSource()); 1268fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1269fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su try { 1270fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setEditableFactory(null); 1271fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su fail("The factory can not set to null!"); 1272fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } catch (NullPointerException e) { 1273fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1274fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1275fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1276fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 1277fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 1278fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setSpannableFactory", 1279fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {android.text.Spannable.Factory.class} 1280fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 1281fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @ToBeFixed(bug = "1695243", explanation = "Android API javadocs are incomplete, " 1282fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "should add @throws clause into javadoc of " 1283fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "TextView#setSpannableFactory(android.text.Spannable.Factory) " 1284fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "when param factory is null") 1285fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testSetSpannableFactory() { 1286fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = new TextView(mActivity); 1287fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su String text = "sample"; 1288fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su MockSpannableFactory factory = new MockSpannableFactory(); 1289fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setSpannableFactory(factory); 1290fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1291fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su factory.reset(); 1292fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(text); 1293fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(factory.getNewSpannableCalledCount()); 1294fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1295fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su factory.reset(); 1296fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(text, BufferType.EDITABLE); 1297fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(factory.getNewSpannableCalledCount()); 1298fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1299fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su factory.reset(); 1300fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(text, BufferType.NORMAL); 1301fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(factory.getNewSpannableCalledCount()); 1302fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1303fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su factory.reset(); 1304fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(text, BufferType.SPANNABLE); 1305fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(factory.getNewSpannableCalledCount()); 1306fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(text, factory.getSource()); 1307fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1308fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setMovementMethod(LinkMovementMethod.getInstance()); 1309fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su factory.reset(); 1310fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(text, BufferType.NORMAL); 1311fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(factory.getNewSpannableCalledCount()); 1312fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(text, factory.getSource()); 1313fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1314fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su try { 1315fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setSpannableFactory(null); 1316fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su fail("The factory can not set to null!"); 1317fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } catch (NullPointerException e) { 1318fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1319fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1320fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1321fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 1322fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 1323fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 1324fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "addTextChangedListener", 1325fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {android.text.TextWatcher.class} 1326fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 1327fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 1328fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 1329fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "removeTextChangedListener", 1330fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {android.text.TextWatcher.class} 1331fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 1332fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 1333fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testTextChangedListener() { 1334fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = new TextView(mActivity); 1335fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su MockTextWatcher watcher0 = new MockTextWatcher(); 1336fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su MockTextWatcher watcher1 = new MockTextWatcher(); 1337fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1338fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.addTextChangedListener(watcher0); 1339fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.addTextChangedListener(watcher1); 1340fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1341fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su watcher0.reset(); 1342fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su watcher1.reset(); 1343fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText("Changed"); 1344fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(watcher0.hasCalledBeforeTextChanged()); 1345fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(watcher0.hasCalledOnTextChanged()); 1346fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(watcher0.hasCalledAfterTextChanged()); 1347fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(watcher1.hasCalledBeforeTextChanged()); 1348fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(watcher1.hasCalledOnTextChanged()); 1349fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(watcher1.hasCalledAfterTextChanged()); 1350fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1351fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su watcher0.reset(); 1352fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su watcher1.reset(); 1353fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // BeforeTextChanged and OnTextChanged are called though the strings are same 1354fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText("Changed"); 1355fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(watcher0.hasCalledBeforeTextChanged()); 1356fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(watcher0.hasCalledOnTextChanged()); 1357fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(watcher0.hasCalledAfterTextChanged()); 1358fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(watcher1.hasCalledBeforeTextChanged()); 1359fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(watcher1.hasCalledOnTextChanged()); 1360fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(watcher1.hasCalledAfterTextChanged()); 1361fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1362fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su watcher0.reset(); 1363fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su watcher1.reset(); 1364fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // BeforeTextChanged and OnTextChanged are called twice (The text is not 1365fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Editable, so in Append() it calls setText() first) 1366fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.append("and appended"); 1367fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(watcher0.hasCalledBeforeTextChanged()); 1368fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(watcher0.hasCalledOnTextChanged()); 1369fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(watcher0.hasCalledAfterTextChanged()); 1370fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(watcher1.hasCalledBeforeTextChanged()); 1371fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(watcher1.hasCalledOnTextChanged()); 1372fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(watcher1.hasCalledAfterTextChanged()); 1373fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1374fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su watcher0.reset(); 1375fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su watcher1.reset(); 1376fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Methods are not called if the string does not change 1377fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.append(""); 1378fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(watcher0.hasCalledBeforeTextChanged()); 1379fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(watcher0.hasCalledOnTextChanged()); 1380fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(watcher0.hasCalledAfterTextChanged()); 1381fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(watcher1.hasCalledBeforeTextChanged()); 1382fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(watcher1.hasCalledOnTextChanged()); 1383fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(watcher1.hasCalledAfterTextChanged()); 1384fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1385fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su watcher0.reset(); 1386fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su watcher1.reset(); 1387fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.removeTextChangedListener(watcher1); 1388fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(null); 1389fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(watcher0.hasCalledBeforeTextChanged()); 1390fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(watcher0.hasCalledOnTextChanged()); 1391fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(watcher0.hasCalledAfterTextChanged()); 1392fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(watcher1.hasCalledBeforeTextChanged()); 1393fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(watcher1.hasCalledOnTextChanged()); 1394fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(watcher1.hasCalledAfterTextChanged()); 1395fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1396fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1397fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 1398fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 1399fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setTextKeepState", 1400fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {java.lang.CharSequence.class} 1401fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 1402fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testSetTextKeepState1() { 1403fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = new TextView(mActivity); 1404fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1405fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su String longString = "very long content"; 1406fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su String shortString = "short"; 1407fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1408fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // selection is at the exact place which is inside the short string 1409fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(longString, BufferType.SPANNABLE); 1410fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Selection.setSelection((Spannable) mTextView.getText(), 3); 1411fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTextKeepState(shortString); 1412fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString, mTextView.getText().toString()); 1413fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(3, mTextView.getSelectionStart()); 1414fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(3, mTextView.getSelectionEnd()); 1415fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1416fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // selection is at the exact place which is outside the short string 1417fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(longString); 1418fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Selection.setSelection((Spannable) mTextView.getText(), shortString.length() + 1); 1419fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTextKeepState(shortString); 1420fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString, mTextView.getText().toString()); 1421fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString.length(), mTextView.getSelectionStart()); 1422fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString.length(), mTextView.getSelectionEnd()); 1423fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1424fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // select the sub string which is inside the short string 1425fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(longString); 1426fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Selection.setSelection((Spannable) mTextView.getText(), 1, 4); 1427fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTextKeepState(shortString); 1428fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString, mTextView.getText().toString()); 1429fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(1, mTextView.getSelectionStart()); 1430fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(4, mTextView.getSelectionEnd()); 1431fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1432fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // select the sub string which ends outside the short string 1433fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(longString); 1434fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Selection.setSelection((Spannable) mTextView.getText(), 2, shortString.length() + 1); 1435fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTextKeepState(shortString); 1436fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString, mTextView.getText().toString()); 1437fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(2, mTextView.getSelectionStart()); 1438fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString.length(), mTextView.getSelectionEnd()); 1439fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1440fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // select the sub string which is outside the short string 1441fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(longString); 1442fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Selection.setSelection((Spannable) mTextView.getText(), 1443fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su shortString.length() + 1, shortString.length() + 3); 1444fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTextKeepState(shortString); 1445fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString, mTextView.getText().toString()); 1446fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString.length(), mTextView.getSelectionStart()); 1447fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString.length(), mTextView.getSelectionEnd()); 1448fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1449fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1450fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 1451fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 1452fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getEditableText", 1453fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 1454fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 1455fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @UiThreadTest 1456fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testGetEditableText() { 1457fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su TextView tv = findTextView(R.id.textview_text); 1458fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1459fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su String text = "Hello"; 1460fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su tv.setText(text, BufferType.EDITABLE); 1461fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(text, tv.getText().toString()); 1462fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(tv.getText() instanceof Editable); 1463fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(text, tv.getEditableText().toString()); 1464fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1465fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su tv.setText(text, BufferType.SPANNABLE); 1466fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(text, tv.getText().toString()); 1467fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(tv.getText() instanceof Spannable); 1468fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(tv.getEditableText()); 1469fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1470fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su tv.setText(null, BufferType.EDITABLE); 1471fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals("", tv.getText().toString()); 1472fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(tv.getText() instanceof Editable); 1473fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals("", tv.getEditableText().toString()); 1474fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1475fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su tv.setText(null, BufferType.SPANNABLE); 1476fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals("", tv.getText().toString()); 1477fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(tv.getText() instanceof Spannable); 1478fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(tv.getEditableText()); 1479fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1480fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1481fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 1482fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 1483fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setText", 1484fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {char[].class, int.class, int.class} 1485fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 1486fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @UiThreadTest 1487fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @ToBeFixed(bug = "1695243", explanation = "Android API javadocs are incomplete, " 1488fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "should add @throws clause into javadoc of " 1489fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "TextView#setText(char[], int, int) when param start or len makes " 1490fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "the index out of bounds") 1491fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testSetText2() { 1492fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su String string = "This is a test for setting text content by char array"; 1493fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su char[] input = string.toCharArray(); 1494fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su TextView tv = findTextView(R.id.textview_text); 1495fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1496fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su tv.setText(input, 0, input.length); 1497fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(string, tv.getText().toString()); 1498fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1499fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su tv.setText(input, 0, 5); 1500fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(string.substring(0, 5), tv.getText().toString()); 1501fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1502fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su try { 1503fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su tv.setText(input, -1, input.length); 1504fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su fail("Should throw exception if the start position is negative!"); 1505fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } catch (IndexOutOfBoundsException exception) { 1506fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1507fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1508fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su try { 1509fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su tv.setText(input, 0, -1); 1510fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su fail("Should throw exception if the length is negative!"); 1511fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } catch (IndexOutOfBoundsException exception) { 1512fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1513fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1514fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su try { 1515fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su tv.setText(input, 1, input.length); 1516fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su fail("Should throw exception if the end position is out of index!"); 1517fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } catch (IndexOutOfBoundsException exception) { 1518fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1519fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1520fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su tv.setText(input, 1, 0); 1521fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals("", tv.getText().toString()); 1522fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1523fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1524fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 1525fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 1526fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 1527fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setText", 1528fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {java.lang.CharSequence.class, android.widget.TextView.BufferType.class} 1529fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 1530fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 1531fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 1532fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setTextKeepState", 1533fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {java.lang.CharSequence.class, android.widget.TextView.BufferType.class} 1534fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 1535fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 1536fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @UiThreadTest 1537fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testSetText1() { 1538fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_text); 1539fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1540fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su String longString = "very long content"; 1541fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su String shortString = "short"; 1542fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1543fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // selection is at the exact place which is inside the short string 1544fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(longString, BufferType.SPANNABLE); 1545fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Selection.setSelection((Spannable) mTextView.getText(), 3); 1546fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTextKeepState(shortString, BufferType.EDITABLE); 1547fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.getText() instanceof Editable); 1548fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString, mTextView.getText().toString()); 1549fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString, mTextView.getEditableText().toString()); 1550fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(3, mTextView.getSelectionStart()); 1551fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(3, mTextView.getSelectionEnd()); 1552fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1553fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(shortString, BufferType.EDITABLE); 1554fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.getText() instanceof Editable); 1555fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString, mTextView.getText().toString()); 1556fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString, mTextView.getEditableText().toString()); 1557fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // there is no selection. 1558fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(-1, mTextView.getSelectionStart()); 1559fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(-1, mTextView.getSelectionEnd()); 1560fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1561fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // selection is at the exact place which is outside the short string 1562fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(longString); 1563fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Selection.setSelection((Spannable) mTextView.getText(), longString.length()); 1564fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTextKeepState(shortString, BufferType.EDITABLE); 1565fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.getText() instanceof Editable); 1566fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString, mTextView.getText().toString()); 1567fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString, mTextView.getEditableText().toString()); 1568fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString.length(), mTextView.getSelectionStart()); 1569fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString.length(), mTextView.getSelectionEnd()); 1570fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1571fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(shortString, BufferType.EDITABLE); 1572fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.getText() instanceof Editable); 1573fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString, mTextView.getText().toString()); 1574fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString, mTextView.getEditableText().toString()); 1575fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // there is no selection. 1576fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(-1, mTextView.getSelectionStart()); 1577fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(-1, mTextView.getSelectionEnd()); 1578fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1579fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // select the sub string which is inside the short string 1580fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(longString); 1581fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Selection.setSelection((Spannable) mTextView.getText(), 1, shortString.length() - 1); 1582fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTextKeepState(shortString, BufferType.EDITABLE); 1583fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.getText() instanceof Editable); 1584fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString, mTextView.getText().toString()); 1585fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString, mTextView.getEditableText().toString()); 1586fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(1, mTextView.getSelectionStart()); 1587fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString.length() - 1, mTextView.getSelectionEnd()); 1588fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1589fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(shortString, BufferType.EDITABLE); 1590fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.getText() instanceof Editable); 1591fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString, mTextView.getText().toString()); 1592fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString, mTextView.getEditableText().toString()); 1593fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // there is no selection. 1594fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(-1, mTextView.getSelectionStart()); 1595fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(-1, mTextView.getSelectionEnd()); 1596fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1597fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // select the sub string which ends outside the short string 1598fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(longString); 1599fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Selection.setSelection((Spannable) mTextView.getText(), 2, longString.length()); 1600fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTextKeepState(shortString, BufferType.EDITABLE); 1601fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.getText() instanceof Editable); 1602fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString, mTextView.getText().toString()); 1603fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString, mTextView.getEditableText().toString()); 1604fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(2, mTextView.getSelectionStart()); 1605fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString.length(), mTextView.getSelectionEnd()); 1606fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1607fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(shortString, BufferType.EDITABLE); 1608fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.getText() instanceof Editable); 1609fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString, mTextView.getText().toString()); 1610fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString, mTextView.getEditableText().toString()); 1611fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // there is no selection. 1612fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(-1, mTextView.getSelectionStart()); 1613fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(-1, mTextView.getSelectionEnd()); 1614fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1615fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // select the sub string which is outside the short string 1616fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(longString); 1617fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Selection.setSelection((Spannable) mTextView.getText(), 1618fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su shortString.length() + 1, shortString.length() + 3); 1619fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTextKeepState(shortString, BufferType.EDITABLE); 1620fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.getText() instanceof Editable); 1621fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString, mTextView.getText().toString()); 1622fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString, mTextView.getEditableText().toString()); 1623fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString.length(), mTextView.getSelectionStart()); 1624fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString.length(), mTextView.getSelectionEnd()); 1625fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1626fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(shortString, BufferType.EDITABLE); 1627fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.getText() instanceof Editable); 1628fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString, mTextView.getText().toString()); 1629fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(shortString, mTextView.getEditableText().toString()); 1630fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // there is no selection. 1631fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(-1, mTextView.getSelectionStart()); 1632fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(-1, mTextView.getSelectionEnd()); 1633fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1634fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1635fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 1636fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 1637fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setText", 1638fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class} 1639fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 1640fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @UiThreadTest 1641fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @ToBeFixed(bug = "1695243", explanation = "Android API javadocs are incomplete, " 1642fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "should add @throws clause into javadoc of " 1643fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "TextView#setText(int) when param resid is illegal") 1644fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testSetText3() { 1645fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su TextView tv = findTextView(R.id.textview_text); 1646fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1647fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su int resId = R.string.text_view_hint; 1648fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su String result = mActivity.getResources().getString(resId); 1649fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1650fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su tv.setText(resId); 1651fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(result, tv.getText().toString()); 1652fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1653fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su try { 1654fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su tv.setText(-1); 1655fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su fail("Should throw exception with illegal id"); 1656fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } catch (NotFoundException e) { 1657fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1658fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1659fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1660fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 1661fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 1662fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setText", 1663fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class, android.widget.TextView.BufferType.class} 1664fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 1665fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @UiThreadTest 1666fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @ToBeFixed(bug = "1695243", explanation = "Android API javadocs are incomplete, " 1667fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "should add @throws clause into javadoc of " 1668fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "TextView#setText(int, BufferType) when param resid is illegal") 1669fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testSetText() { 1670fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su TextView tv = findTextView(R.id.textview_text); 1671fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1672fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su int resId = R.string.text_view_hint; 1673fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su String result = mActivity.getResources().getString(resId); 1674fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1675fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su tv.setText(resId, BufferType.EDITABLE); 1676fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(result, tv.getText().toString()); 1677fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(tv.getText() instanceof Editable); 1678fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1679fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su tv.setText(resId, BufferType.SPANNABLE); 1680fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(result, tv.getText().toString()); 1681fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(tv.getText() instanceof Spannable); 1682fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1683fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su try { 1684fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su tv.setText(-1, BufferType.EDITABLE); 1685fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su fail("Should throw exception with illegal id"); 1686fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } catch (NotFoundException e) { 1687fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1688fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1689fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1690fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 1691fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 1692fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 1693fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setHint", 1694fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {java.lang.CharSequence.class} 1695fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 1696fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 1697fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 1698fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setHint", 1699fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class} 1700fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 1701fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 1702fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 1703fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getHint", 1704fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 1705fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 1706fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 1707fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @UiThreadTest 1708fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testAccessHint() { 1709fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.setContentView(R.layout.textview_hint_linksclickable_freezestext); 1710fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1711fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.hint_linksClickable_freezesText_default); 1712fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(mTextView.getHint()); 1713fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1714fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.hint_blank); 1715fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals("", mTextView.getHint()); 1716fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1717fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.hint_string); 1718fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mActivity.getResources().getString(R.string.text_view_simple_hint), 1719fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getHint()); 1720fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1721fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.hint_resid); 1722fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mActivity.getResources().getString(R.string.text_view_hint), 1723fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getHint()); 1724fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1725fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setHint("This is hint"); 1726fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals("This is hint", mTextView.getHint().toString()); 1727fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1728fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setHint(R.string.text_view_hello); 1729fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mActivity.getResources().getString(R.string.text_view_hello), 1730fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getHint().toString()); 1731fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1732fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Non-exist resid 1733fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su try { 1734fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setHint(-1); 1735fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su fail("Should throw exception if id is illegal"); 1736fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } catch (NotFoundException e) { 1737fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1738fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1739fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1740fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 1741fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 1742fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 1743fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getError", 1744fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 1745fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 1746fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 1747fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 1748fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setError", 1749fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {java.lang.CharSequence.class} 1750fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 1751fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 1752fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 1753fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setError", 1754fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {java.lang.CharSequence.class, android.graphics.drawable.Drawable.class} 1755fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 1756fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 1757fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testAccessError() { 1758fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_text); 1759fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(mTextView.getError()); 1760fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1761fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su final String errorText = "Opps! There is an error"; 1762fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1763fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 1764fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 1765fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setError(null); 1766fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1767fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 1768fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 1769fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(mTextView.getError()); 1770fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1771fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su final Drawable icon = mActivity.getResources().getDrawable(R.drawable.failed); 1772fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 1773fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 1774fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setError(errorText, icon); 1775fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1776fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 1777fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 1778fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(errorText, mTextView.getError().toString()); 1779fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // can not check whether the drawable is set correctly 1780fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1781fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 1782fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 1783fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setError(null, null); 1784fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1785fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 1786fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 1787fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(mTextView.getError()); 1788fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1789fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su final DigitsKeyListener digitsKeyListener = DigitsKeyListener.getInstance(); 1790fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 1791fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 1792fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setKeyListener(digitsKeyListener); 1793fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText("", BufferType.EDITABLE); 1794fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setError(errorText); 1795fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.requestFocus(); 1796fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1797fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 1798fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 1799fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1800fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(errorText, mTextView.getError().toString()); 1801fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1802dc4fcb2f0b734c9e5ca03a97429bf3bd9b189abaBrian Muramatsu mInstrumentation.sendStringSync("a"); 1803fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // a key event that will not change the TextView's text 1804fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals("", mTextView.getText().toString()); 1805fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // The icon and error message will not be reset to null 1806fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNotNull(mTextView.getError()); 1807fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1808dc4fcb2f0b734c9e5ca03a97429bf3bd9b189abaBrian Muramatsu mInstrumentation.sendStringSync("1"); 1809fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // a key event cause changes to the TextView's text 1810fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals("1", mTextView.getText().toString()); 1811fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // the error message and icon will be cleared. 1812fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(mTextView.getError()); 1813fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1814fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1815fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 1816fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 1817fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 1818fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setFilters", 1819fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {android.text.InputFilter[].class} 1820fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 1821fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 1822fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 1823fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getFilters", 1824fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 1825fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 1826fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 1827fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @ToBeFixed(bug = "1695243", explanation = "Android API javadocs are incomplete, " 1828fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "should add @throws clause into javadoc of " 1829fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "TextView#setFilters(InputFilter[]) when param filters is null") 1830fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testAccessFilters() { 1831fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su final InputFilter[] expected = { new InputFilter.AllCaps(), 1832fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su new InputFilter.LengthFilter(2) }; 1833fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1834fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su final QwertyKeyListener qwertyKeyListener 1835fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su = QwertyKeyListener.getInstance(false, Capitalize.NONE); 1836fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 1837fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 1838fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_text); 1839fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setKeyListener(qwertyKeyListener); 1840fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText("", BufferType.EDITABLE); 1841fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setFilters(expected); 1842fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.requestFocus(); 1843fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1844fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 1845fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 1846fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1847fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(expected, mTextView.getFilters()); 1848fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1849dc4fcb2f0b734c9e5ca03a97429bf3bd9b189abaBrian Muramatsu mInstrumentation.sendStringSync("a"); 1850fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // the text is capitalized by InputFilter.AllCaps 1851fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals("A", mTextView.getText().toString()); 1852dc4fcb2f0b734c9e5ca03a97429bf3bd9b189abaBrian Muramatsu mInstrumentation.sendStringSync("b"); 1853fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // the text is capitalized by InputFilter.AllCaps 1854fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals("AB", mTextView.getText().toString()); 1855dc4fcb2f0b734c9e5ca03a97429bf3bd9b189abaBrian Muramatsu mInstrumentation.sendStringSync("c"); 1856fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // 'C' could not be accepted, because there is a length filter. 1857fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals("AB", mTextView.getText().toString()); 1858fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1859fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su try { 1860fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setFilters(null); 1861fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su fail("Should throw IllegalArgumentException!"); 1862fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } catch (IllegalArgumentException e) { 1863fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1864fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1865fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1866fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 1867fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 1868fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getFocusedRect", 1869fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {android.graphics.Rect.class} 1870fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 1871fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @ToBeFixed(bug = "1695243", explanation = "Android API javadocs are incomplete," 1872fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "should add @throws clause into javadoc of " 1873fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "TextView#getFocusedRect(Rect) when param rect is null") 1874fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testGetFocusedRect() { 1875fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Rect rc = new Rect(); 1876fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1877fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = new TextView(mActivity); 1878fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getFocusedRect(rc); 1879fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getScrollX(), rc.left); 1880fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getScrollX() + mTextView.getWidth(), rc.right); 1881fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getScrollY(), rc.top); 1882fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getScrollY() + mTextView.getHeight(), rc.bottom); 1883fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1884fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_text); 1885fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getFocusedRect(rc); 1886fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getScrollX(), rc.left); 1887fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getScrollX() + mTextView.getWidth(), rc.right); 1888fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getScrollY(), rc.top); 1889fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getScrollY() + mTextView.getHeight(), rc.bottom); 1890fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1891fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 1892fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 1893fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setSelected(true); 1894fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su SpannableString text = new SpannableString(mTextView.getText()); 1895fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Selection.setSelection(text, 3, 13); 1896fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(text); 1897fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1898fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 1899fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 1900fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getFocusedRect(rc); 1901fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNotNull(mTextView.getLayout()); 1902fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getLayout().getPrimaryHorizontal(13), 1903fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su (float) rc.left, 0.01f); 1904fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // 'right' is one pixel larger than 'left' 1905fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getLayout().getPrimaryHorizontal(13) + 1, 1906fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su (float) rc.right, 0.01f); 1907fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getLayout().getLineTop(0), rc.top); 1908fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getLayout().getLineBottom(0), rc.bottom); 1909fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1910fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Exception 1911fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su try { 1912fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getFocusedRect(null); 1913fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su fail("Should throw NullPointerException!"); 1914fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } catch (NullPointerException e) { 1915fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1916fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1917fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1918fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 1919fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 1920fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getLineCount", 1921fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 1922fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 1923fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testGetLineCount() { 1924fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_text); 1925fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // this is an one line text with default setting. 1926fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(1, mTextView.getLineCount()); 1927fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1928fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // make it multi-lines 1929fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setMaxWidth(mTextView.getWidth() / 3); 1930fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(1 < mTextView.getLineCount()); 1931fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1932fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // make it to an one line 1933fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setMaxWidth(Integer.MAX_VALUE); 1934fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(1, mTextView.getLineCount()); 1935fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1936fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // set min lines don't effect the lines count for actual text. 1937fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setMinLines(12); 1938fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(1, mTextView.getLineCount()); 1939fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1940fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = new TextView(mActivity); 1941fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // the internal Layout has not been built. 1942fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(mTextView.getLayout()); 1943fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, mTextView.getLineCount()); 1944fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1945fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1946fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 1947fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 1948fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getLineBounds", 1949fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class, android.graphics.Rect.class} 1950fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 1951fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testGetLineBounds() { 1952fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Rect rc = new Rect(); 1953fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = new TextView(mActivity); 1954fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, mTextView.getLineBounds(0, null)); 1955fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1956fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, mTextView.getLineBounds(0, rc)); 1957fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, rc.left); 1958fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, rc.right); 1959fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, rc.top); 1960fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, rc.bottom); 1961fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1962fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_text); 1963fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getBaseline(), mTextView.getLineBounds(0, null)); 1964fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1965fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getBaseline(), mTextView.getLineBounds(0, rc)); 1966fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, rc.left); 1967fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getWidth(), rc.right); 1968fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, rc.top); 1969fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getHeight(), rc.bottom); 1970fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1971fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 1972fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 1973fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setPadding(1, 2, 3, 4); 1974fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setGravity(Gravity.BOTTOM); 1975fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1976fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 1977fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 1978fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getBaseline(), mTextView.getLineBounds(0, rc)); 1979fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getTotalPaddingLeft(), rc.left); 1980fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getWidth() - mTextView.getTotalPaddingRight(), rc.right); 1981fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getTotalPaddingTop(), rc.top); 1982fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getHeight() - mTextView.getTotalPaddingBottom(), rc.bottom); 1983fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 1984fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1985fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 1986fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 1987fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getBaseline", 1988fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 1989fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 1990fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testGetBaseLine() { 1991fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = new TextView(mActivity); 1992fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(-1, mTextView.getBaseline()); 1993fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1994fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_text); 1995fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getLayout().getLineBaseline(0), mTextView.getBaseline()); 1996fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 1997fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 1998fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 1999fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setPadding(1, 2, 3, 4); 2000fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setGravity(Gravity.BOTTOM); 2001fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2002fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 2003fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 2004fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su int expected = mTextView.getTotalPaddingTop() + mTextView.getLayout().getLineBaseline(0); 2005fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(expected, mTextView.getBaseline()); 2006fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2007fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2008fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 2009fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2010fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2011fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "onKeyDown", 2012fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class, android.view.KeyEvent.class} 2013fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 2014fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2015fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2016fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "onKeyUp", 2017fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class, android.view.KeyEvent.class} 2018fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 2019fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 2020fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testPressKey() { 2021fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su final QwertyKeyListener qwertyKeyListener 2022fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su = QwertyKeyListener.getInstance(false, Capitalize.NONE); 2023fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 2024fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 2025fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_text); 2026fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setKeyListener(qwertyKeyListener); 2027fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText("", BufferType.EDITABLE); 2028fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.requestFocus(); 2029fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2030fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 2031fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 2032fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2033dc4fcb2f0b734c9e5ca03a97429bf3bd9b189abaBrian Muramatsu mInstrumentation.sendStringSync("a"); 2034fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals("a", mTextView.getText().toString()); 2035dc4fcb2f0b734c9e5ca03a97429bf3bd9b189abaBrian Muramatsu mInstrumentation.sendStringSync("b"); 2036fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals("ab", mTextView.getText().toString()); 2037fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su sendKeys(KeyEvent.KEYCODE_DEL); 2038fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals("a", mTextView.getText().toString()); 2039fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2040fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2041fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2042fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2043fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setIncludeFontPadding", 2044fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {boolean.class} 2045fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 2046fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testSetIncludeFontPadding() { 2047fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_text); 2048fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 2049fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 2050fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setWidth(mTextView.getWidth() / 3); 2051fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setPadding(1, 2, 3, 4); 2052fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setGravity(Gravity.BOTTOM); 2053fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2054fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 2055fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 2056fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2057fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su int oldHeight = mTextView.getHeight(); 2058fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 2059fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 2060fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setIncludeFontPadding(false); 2061fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2062fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 2063fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 2064fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2065fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.getHeight() < oldHeight); 2066fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2067fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2068fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 2069fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2070fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2071fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "computeScroll", 2072fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 2073fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 2074fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2075fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2076fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setScroller", 2077fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {android.widget.Scroller.class} 2078fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 2079fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 2080fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testScroll() { 2081fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = new TextView(mActivity); 2082fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2083fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, mTextView.getScrollX()); 2084fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, mTextView.getScrollY()); 2085fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2086fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su //don't set the Scroller, nothing changed. 2087fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.computeScroll(); 2088fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, mTextView.getScrollX()); 2089fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, mTextView.getScrollY()); 2090fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2091fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su //set the Scroller 2092fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Scroller s = new Scroller(mActivity); 2093fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNotNull(s); 2094fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su s.startScroll(0, 0, 320, 480, 0); 2095fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su s.abortAnimation(); 2096fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su s.forceFinished(false); 2097fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setScroller(s); 2098fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2099fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.computeScroll(); 2100fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(320, mTextView.getScrollX()); 2101fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(480, mTextView.getScrollY()); 2102fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2103fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2104fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2105fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2106fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "debug", 2107fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class} 2108fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 2109fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testDebug() { 2110fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = new TextView(mActivity); 2111fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.debug(0); 2112fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2113fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText("Hello!"); 2114fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su layout(mTextView); 2115fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.debug(1); 2116fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2117fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2118fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 2119fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2120fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2121fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getSelectionStart", 2122fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 2123fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 2124fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2125fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2126fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getSelectionEnd", 2127fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 2128fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 2129fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2130fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2131fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "hasSelection", 2132fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 2133fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 2134fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 2135fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testSelection() { 2136fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = new TextView(mActivity); 2137fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su String text = "This is the content"; 2138fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(text, BufferType.SPANNABLE); 2139fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(mTextView.hasSelection()); 2140fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2141fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Selection.selectAll((Spannable) mTextView.getText()); 2142fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, mTextView.getSelectionStart()); 2143fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(text.length(), mTextView.getSelectionEnd()); 2144fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.hasSelection()); 2145fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2146fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su int selectionStart = 5; 2147fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su int selectionEnd = 7; 2148fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Selection.setSelection((Spannable) mTextView.getText(), selectionStart); 2149fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(selectionStart, mTextView.getSelectionStart()); 2150fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(selectionStart, mTextView.getSelectionEnd()); 2151fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(mTextView.hasSelection()); 2152fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2153fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Selection.setSelection((Spannable) mTextView.getText(), selectionStart, selectionEnd); 2154fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(selectionStart, mTextView.getSelectionStart()); 2155fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(selectionEnd, mTextView.getSelectionEnd()); 2156fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.hasSelection()); 2157fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2158fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2159fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 2160fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2161fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2162fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setEllipsize", 2163fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {android.text.TextUtils.TruncateAt.class} 2164fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 2165fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2166fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2167fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getEllipsize", 2168fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 2169fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 2170fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 2171fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @UiThreadTest 2172fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testAccessEllipsize() { 2173fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.setContentView(R.layout.textview_ellipsize); 2174fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2175fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.ellipsize_default); 2176fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(mTextView.getEllipsize()); 2177fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2178fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.ellipsize_none); 2179fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(mTextView.getEllipsize()); 2180fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2181fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.ellipsize_start); 2182fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(TruncateAt.START, mTextView.getEllipsize()); 2183fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2184fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.ellipsize_middle); 2185fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(TruncateAt.MIDDLE, mTextView.getEllipsize()); 2186fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2187fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.ellipsize_end); 2188fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(TruncateAt.END, mTextView.getEllipsize()); 2189fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2190fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setEllipsize(TextUtils.TruncateAt.START); 2191fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(TextUtils.TruncateAt.START, mTextView.getEllipsize()); 2192fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2193fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setEllipsize(TextUtils.TruncateAt.MIDDLE); 2194fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(TextUtils.TruncateAt.MIDDLE, mTextView.getEllipsize()); 2195fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2196fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setEllipsize(TextUtils.TruncateAt.END); 2197fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(TextUtils.TruncateAt.END, mTextView.getEllipsize()); 2198fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2199fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setEllipsize(null); 2200fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(mTextView.getEllipsize()); 2201fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2202fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setWidth(10); 2203fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setEllipsize(TextUtils.TruncateAt.START); 2204fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText("ThisIsAVeryLongVeryLongVeryLongVeryLongVeryLongWord"); 2205fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.invalidate(); 2206fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2207fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(TextUtils.TruncateAt.START, mTextView.getEllipsize()); 2208fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // there is no method to check if '...yLongVeryLongWord' is painted in the screen. 2209fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2210fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2211fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2212fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2213fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setCursorVisible", 2214fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {boolean.class} 2215fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 2216fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @ToBeFixed(bug = "1386429", explanation="No getter to check the value.") 2217fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testSetCursorVisible() { 2218fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = new TextView(mActivity); 2219fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2220fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setCursorVisible(true); 2221fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setCursorVisible(false); 2222fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2223fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2224fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2225fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.NOT_NECESSARY, 2226fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "onWindowFocusChanged", 2227fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {boolean.class} 2228fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 2229fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testOnWindowFocusChanged() { 2230fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Do not test. Implementation details. 2231fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2232fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2233fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2234fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.NOT_NECESSARY, 2235fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "onTouchEvent", 2236fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {android.view.MotionEvent.class} 2237fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 2238fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testOnTouchEvent() { 2239fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Do not test. Implementation details. 2240fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2241fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2242fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2243fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.NOT_NECESSARY, 2244fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "onTrackballEvent", 2245fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {android.view.MotionEvent.class} 2246fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 2247fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testOnTrackballEvent() { 2248fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Do not test. Implementation details. 2249fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2250fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2251fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2252fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.SUFFICIENT, 2253fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getTextColors", 2254fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {android.content.Context.class, android.content.res.TypedArray.class} 2255fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 2256fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testGetTextColors() { 2257fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // TODO: How to get a suitable TypedArray to test this method. 2258fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2259fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2260fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2261fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.NOT_NECESSARY, 2262fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "onKeyShortcut", 2263fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class, android.view.KeyEvent.class} 2264fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 2265fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testOnKeyShortcut() { 2266fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Do not test. Implementation details. 2267fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2268fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2269fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2270fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2271fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "performLongClick", 2272fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 2273fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 2274fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @UiThreadTest 2275fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testPerformLongClick() { 2276fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_text); 2277fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText("This is content"); 2278fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su MockOnLongClickListener onLongClickListener = new MockOnLongClickListener(true); 2279fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su MockOnCreateContextMenuListener onCreateContextMenuListener 2280fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su = new MockOnCreateContextMenuListener(false); 2281fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setOnLongClickListener(onLongClickListener); 2282fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setOnCreateContextMenuListener(onCreateContextMenuListener); 2283fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.performLongClick()); 2284fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(onLongClickListener.hasLongClicked()); 2285fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(onCreateContextMenuListener.hasCreatedContextMenu()); 2286fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2287fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su onLongClickListener = new MockOnLongClickListener(false); 2288fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setOnLongClickListener(onLongClickListener); 2289fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setOnCreateContextMenuListener(onCreateContextMenuListener); 2290fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.performLongClick()); 2291fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(onLongClickListener.hasLongClicked()); 2292fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(onCreateContextMenuListener.hasCreatedContextMenu()); 2293fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2294fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setOnLongClickListener(null); 2295fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su onCreateContextMenuListener = new MockOnCreateContextMenuListener(true); 2296fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setOnCreateContextMenuListener(onCreateContextMenuListener); 2297fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(mTextView.performLongClick()); 2298fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(onCreateContextMenuListener.hasCreatedContextMenu()); 2299fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2300fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2301fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 2302fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2303fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2304fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getText", 2305fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 2306fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 2307fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2308fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2309fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getCurrentHintTextColor", 2310fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 2311fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 2312fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2313fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2314fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getCurrentTextColor", 2315fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 2316fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 2317fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2318fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2319fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getLinkTextColors", 2320fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 2321fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 2322fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2323fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2324fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getTextScaleX", 2325fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 2326fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 2327fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2328fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2329fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getTextSize", 2330fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 2331fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 2332fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2333fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2334fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getTypeface", 2335fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 2336fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 2337fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2338fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2339fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getHintTextColors", 2340fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 2341fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 2342fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2343fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2344fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setTextScaleX", 2345fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {float.class} 2346fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 2347fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2348fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2349fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setTypeface", 2350fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {android.graphics.Typeface.class} 2351fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 2352fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2353fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2354fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setTypeface", 2355fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {android.graphics.Typeface.class, int.class} 2356fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 2357fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 2358fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @UiThreadTest 2359fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @ToBeFixed(bug = "1386429", explanation = "mTextView.getTypeface() will be null " 2360fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "if typeface didn't be set or set to normal " 2361fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "and style didn't set or set to normal in xml." 2362fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "And there is no getter to check the highlight colour.") 2363fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testTextAttr() { 2364fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_textAttr); 2365fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // getText 2366fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mActivity.getString(R.string.text_view_hello), mTextView.getText().toString()); 2367fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2368fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // getCurrentTextColor 2369fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mActivity.getResources().getColor(R.drawable.black), 2370fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getCurrentTextColor()); 2371fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mActivity.getResources().getColor(R.drawable.red), 2372fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getCurrentHintTextColor()); 2373fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mActivity.getResources().getColor(R.drawable.red), 2374fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getHintTextColors().getDefaultColor()); 2375fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mActivity.getResources().getColor(R.drawable.blue), 2376fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getLinkTextColors().getDefaultColor()); 2377fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2378fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // getTextScaleX 2379fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(1.2f, mTextView.getTextScaleX(), 0.01f); 2380fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2381fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // setTextScaleX 2382fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTextScaleX(2.4f); 2383fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(2.4f, mTextView.getTextScaleX(), 0.01f); 2384fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2385fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTextScaleX(0f); 2386fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0f, mTextView.getTextScaleX(), 0.01f); 2387fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2388fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTextScaleX(- 2.4f); 2389fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(- 2.4f, mTextView.getTextScaleX(), 0.01f); 2390fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2391fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // getTextSize 2392fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(20f, mTextView.getTextSize(), 0.01f); 2393fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2394fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // getTypeface 2395fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // getTypeface will be null if android:typeface is not set or is set to normal, 2396fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // and android:style is not set or is set to normal 2397fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(mTextView.getTypeface()); 2398fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2399fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTypeface(Typeface.DEFAULT); 2400fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(Typeface.DEFAULT, mTextView.getTypeface()); 2401fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // null type face 2402fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTypeface(null); 2403fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(mTextView.getTypeface()); 2404fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2405fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // default type face, bold style, note: the type face will be changed 2406fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // after call set method 2407fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTypeface(Typeface.DEFAULT, Typeface.BOLD); 2408fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(Typeface.BOLD, mTextView.getTypeface().getStyle()); 2409fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2410fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // null type face, BOLD style 2411fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTypeface(null, Typeface.BOLD); 2412fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(Typeface.BOLD, mTextView.getTypeface().getStyle()); 2413fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2414fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // old type face, null style 2415fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTypeface(Typeface.DEFAULT, 0); 2416fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Typeface.NORMAL, mTextView.getTypeface().getStyle()); 2417fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2418fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2419fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 2420fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2421fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2422fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "append", 2423fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {java.lang.CharSequence.class} 2424fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 2425fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2426fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2427fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "append", 2428fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {java.lang.CharSequence.class, int.class, int.class} 2429fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 2430fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 2431fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @UiThreadTest 2432fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @ToBeFixed(bug = "1695243", explanation = "Android API javadocs are incomplete, " 2433fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "should add @throws clause into javadoc of " 2434fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "TextView#append(CharSequence) when param text is null and should " 2435fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "add @throws clause into javadoc of TextView#append(CharSequence, int, int) " 2436fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "when param start or end is out of bounds") 2437fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testAppend() { 2438fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = new TextView(mActivity); 2439fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2440fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // 1: check the original length, should be blank as initialised. 2441fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, mTextView.getText().length()); 2442fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2443fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // 2: append a string use append(CharSquence) into the original blank 2444fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // buffer, check the content. And upgrading it to BufferType.EDITABLE if it was 2445fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // not already editable. 2446fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(mTextView.getText() instanceof Editable); 2447fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.append("Append."); 2448fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals("Append.", mTextView.getText().toString()); 2449fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.getText() instanceof Editable); 2450fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2451fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // 3: append a string from 0~3. 2452fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.append("Append", 0, 3); 2453fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals("Append.App", mTextView.getText().toString()); 2454fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.getText() instanceof Editable); 2455fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2456fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // 4: append a string from 0~0, nothing will be append as expected. 2457fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.append("Append", 0, 0); 2458fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals("Append.App", mTextView.getText().toString()); 2459fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.getText() instanceof Editable); 2460fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2461fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // 5: append a string from -3~3. check the wrong left edge. 2462fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su try { 2463fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.append("Append", -3, 3); 2464fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su fail("Should throw StringIndexOutOfBoundsException"); 2465fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } catch (StringIndexOutOfBoundsException e) { 2466fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2467fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2468fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // 6: append a string from 3~10. check the wrong right edge. 2469fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su try { 2470fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.append("Append", 3, 10); 2471fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su fail("Should throw StringIndexOutOfBoundsException"); 2472fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } catch (StringIndexOutOfBoundsException e) { 2473fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2474fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2475fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // 7: append a null string. 2476fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su try { 2477fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.append(null); 2478fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su fail("Should throw NullPointerException"); 2479fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } catch (NullPointerException e) { 2480fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2481fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2482fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2483fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 2484fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2485fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2486fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getTransformationMethod", 2487fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 2488fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 2489fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2490fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2491fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setTransformationMethod", 2492fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {android.text.method.TransformationMethod.class} 2493fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 2494fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 2495fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testAccessTransformationMethod() { 2496fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // check the password attribute in xml 2497fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_password); 2498fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNotNull(mTextView); 2499fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(PasswordTransformationMethod.getInstance(), 2500fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getTransformationMethod()); 2501fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2502fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // check the singleLine attribute in xml 2503fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_singleLine); 2504fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNotNull(mTextView); 2505fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(SingleLineTransformationMethod.getInstance(), 2506fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getTransformationMethod()); 2507fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2508fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su final QwertyKeyListener qwertyKeyListener = QwertyKeyListener.getInstance(false, 2509fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Capitalize.NONE); 2510fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su final TransformationMethod method = PasswordTransformationMethod.getInstance(); 2511fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // change transformation method by function 2512fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 2513fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 2514fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setKeyListener(qwertyKeyListener); 2515fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTransformationMethod(method); 251622d40a1fcc078329a7e5a34ff5eeadeca9c70d49Kenny Root mTransformedText = method.getTransformation(mTextView.getText(), mTextView); 2517fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2518fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.requestFocus(); 2519fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2520fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 2521fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 2522fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(PasswordTransformationMethod.getInstance(), 2523fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getTransformationMethod()); 2524fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2525fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su sendKeys("H E 2*L O"); 2526fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 2527fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 2528fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.append(" "); 2529fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2530fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 2531fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 2532fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2533fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // it will get transformed after a while 2534fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su new DelayedCheck(TIMEOUT) { 2535fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @Override 2536fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su protected boolean check() { 2537fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // "******" 253822d40a1fcc078329a7e5a34ff5eeadeca9c70d49Kenny Root return mTransformedText.toString() 253922d40a1fcc078329a7e5a34ff5eeadeca9c70d49Kenny Root .equals("\u2022\u2022\u2022\u2022\u2022\u2022"); 2540fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2541fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }.run(); 2542fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2543fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // set null 2544fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 2545fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 2546fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTransformationMethod(null); 2547fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2548fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 2549fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 2550fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(mTextView.getTransformationMethod()); 2551fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2552fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2553fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 2554fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2555fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2556fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setCompoundDrawablePadding", 2557fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class} 2558fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 2559fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2560fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2561fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setCompoundDrawables", 2562fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {Drawable.class, Drawable.class, Drawable.class, Drawable.class} 2563fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 2564fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2565fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2566fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setCompoundDrawablesWithIntrinsicBounds", 2567fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {Drawable.class, Drawable.class, Drawable.class, Drawable.class} 2568fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 2569fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2570fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2571fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setCompoundDrawablesWithIntrinsicBounds", 2572fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class, int.class, int.class, int.class} 2573fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 2574fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2575fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2576fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getCompoundDrawablePadding", 2577fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 2578fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 2579fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2580fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2581fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getCompoundDrawables", 2582fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 2583fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 2584fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2585fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2586fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getCompoundPaddingBottom", 2587fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 2588fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 2589fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2590fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2591fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getCompoundPaddingLeft", 2592fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 2593fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 2594fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2595fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2596fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getCompoundPaddingRight", 2597fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 2598fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 2599fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2600fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2601fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getCompoundPaddingTop", 2602fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 2603fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 2604fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 2605fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @UiThreadTest 2606fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testCompound() { 2607fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = new TextView(mActivity); 2608fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su int padding = 3; 2609fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Drawable[] drawables = mTextView.getCompoundDrawables(); 2610fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(drawables[0]); 2611fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(drawables[1]); 2612fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(drawables[2]); 2613fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(drawables[3]); 2614fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2615fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // test setCompoundDrawablePadding and getCompoundDrawablePadding 2616fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setCompoundDrawablePadding(padding); 2617fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(padding, mTextView.getCompoundDrawablePadding()); 2618fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2619fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // using resid, 0 represents null 2620fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setCompoundDrawablesWithIntrinsicBounds(R.drawable.start, R.drawable.pass, 2621fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su R.drawable.failed, 0); 2622fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su drawables = mTextView.getCompoundDrawables(); 2623fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2624fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // drawableLeft 2625fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su WidgetTestUtils.assertEquals(getBitmap(R.drawable.start), 2626fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ((BitmapDrawable) drawables[0]).getBitmap()); 2627fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // drawableTop 2628fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su WidgetTestUtils.assertEquals(getBitmap(R.drawable.pass), 2629fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ((BitmapDrawable) drawables[1]).getBitmap()); 2630fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // drawableRight 2631fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su WidgetTestUtils.assertEquals(getBitmap(R.drawable.failed), 2632fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ((BitmapDrawable) drawables[2]).getBitmap()); 2633fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // drawableBottom 2634fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(drawables[3]); 2635fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2636fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Drawable left = mActivity.getResources().getDrawable(R.drawable.blue); 2637fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Drawable right = mActivity.getResources().getDrawable(R.drawable.yellow); 2638fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Drawable top = mActivity.getResources().getDrawable(R.drawable.red); 2639fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2640fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // using drawables directly 2641fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setCompoundDrawablesWithIntrinsicBounds(left, top, right, null); 2642fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su drawables = mTextView.getCompoundDrawables(); 2643fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2644fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // drawableLeft 2645fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(left, drawables[0]); 2646fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // drawableTop 2647fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(top, drawables[1]); 2648fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // drawableRight 2649fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(right, drawables[2]); 2650fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // drawableBottom 2651fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(drawables[3]); 2652fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2653fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // check compound padding 2654fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getPaddingLeft() + padding + left.getIntrinsicWidth(), 2655fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getCompoundPaddingLeft()); 2656fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getPaddingTop() + padding + top.getIntrinsicHeight(), 2657fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getCompoundPaddingTop()); 2658fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getPaddingRight() + padding + right.getIntrinsicWidth(), 2659fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getCompoundPaddingRight()); 2660fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getPaddingBottom(), mTextView.getCompoundPaddingBottom()); 2661fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2662fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // set bounds to drawables and set them again. 2663fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su left.setBounds(0, 0, 1, 2); 2664fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su right.setBounds(0, 0, 3, 4); 2665fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su top.setBounds(0, 0, 5, 6); 2666fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // usinf drawables 2667fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setCompoundDrawables(left, top, right, null); 2668fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su drawables = mTextView.getCompoundDrawables(); 2669fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2670fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // drawableLeft 2671fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(left, drawables[0]); 2672fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // drawableTop 2673fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(top, drawables[1]); 2674fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // drawableRight 2675fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(right, drawables[2]); 2676fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // drawableBottom 2677fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(drawables[3]); 2678fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2679fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // check compound padding 2680fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getPaddingLeft() + padding + left.getBounds().width(), 2681fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getCompoundPaddingLeft()); 2682fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getPaddingTop() + padding + top.getBounds().height(), 2683fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getCompoundPaddingTop()); 2684fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getPaddingRight() + padding + right.getBounds().width(), 2685fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getCompoundPaddingRight()); 2686fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getPaddingBottom(), mTextView.getCompoundPaddingBottom()); 2687fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2688fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2689fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 2690fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2691fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2692fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setSingleLine", 2693fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 2694fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 2695fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2696fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2697fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setSingleLine", 2698fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {boolean.class} 2699fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 2700fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 2701fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testSingleLine() { 2702013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1Brian Muramatsu final TextView textView = new TextView(mActivity); 2703013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1Brian Muramatsu setSpannableText(textView, "This is a really long sentence" 2704013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1Brian Muramatsu + " which can not be placed in one line on the screen."); 2705013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1Brian Muramatsu 2706013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1Brian Muramatsu // Narrow layout assures that the text will get wrapped. 2707013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1Brian Muramatsu FrameLayout innerLayout = new FrameLayout(mActivity); 2708013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1Brian Muramatsu innerLayout.setLayoutParams(new ViewGroup.LayoutParams(100, 100)); 2709013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1Brian Muramatsu innerLayout.addView(textView); 2710013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1Brian Muramatsu 2711013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1Brian Muramatsu final FrameLayout layout = new FrameLayout(mActivity); 2712013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1Brian Muramatsu layout.addView(innerLayout); 2713013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1Brian Muramatsu 2714013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1Brian Muramatsu mActivity.runOnUiThread(new Runnable() { 2715013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1Brian Muramatsu public void run() { 2716013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1Brian Muramatsu mActivity.setContentView(layout); 2717013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1Brian Muramatsu textView.setSingleLine(true); 2718013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1Brian Muramatsu } 2719013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1Brian Muramatsu }); 2720013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1Brian Muramatsu mInstrumentation.waitForIdleSync(); 2721fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2722fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(SingleLineTransformationMethod.getInstance(), 2723013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1Brian Muramatsu textView.getTransformationMethod()); 2724013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1Brian Muramatsu int singleLineWidth = textView.getLayout().getWidth(); 2725013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1Brian Muramatsu int singleLineHeight = textView.getLayout().getHeight(); 2726fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2727fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 2728fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 2729013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1Brian Muramatsu textView.setSingleLine(false); 2730fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2731fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 2732fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 2733013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1Brian Muramatsu assertEquals(null, textView.getTransformationMethod()); 2734013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1Brian Muramatsu assertTrue(textView.getLayout().getHeight() > singleLineHeight); 2735013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1Brian Muramatsu assertTrue(textView.getLayout().getWidth() < singleLineWidth); 2736fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2737fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // same behaviours as setSingLine(true) 2738fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 2739fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 2740013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1Brian Muramatsu textView.setSingleLine(); 2741fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2742fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 2743fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 2744fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(SingleLineTransformationMethod.getInstance(), 2745013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1Brian Muramatsu textView.getTransformationMethod()); 2746013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1Brian Muramatsu assertEquals(singleLineHeight, textView.getLayout().getHeight()); 2747013d5ee5428a0fde1cbe1befa4587b0d7a5e39c1Brian Muramatsu assertEquals(singleLineWidth, textView.getLayout().getWidth()); 2748fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2749fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2750fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2751fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2752fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setMaxLines", 2753fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class} 2754fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 2755fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @UiThreadTest 2756fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testSetMaxLines() { 2757fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_text); 2758fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2759fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su float[] widths = new float[LONG_TEXT.length()]; 2760fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getPaint().getTextWidths(LONG_TEXT, widths); 2761fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su float totalWidth = 0.0f; 2762fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su for (float f : widths) { 2763fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su totalWidth += f; 2764fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2765fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su final int stringWidth = (int) totalWidth; 2766fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setWidth(stringWidth >> 2); 2767fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(LONG_TEXT); 2768fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2769fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su final int maxLines = 2; 2770fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.getLineCount() > maxLines); 2771fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2772fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setMaxLines(maxLines); 2773fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.requestLayout(); 2774fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2775fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.getHeight() <= maxLines * mTextView.getLineHeight()); 2776fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2777fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2778fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2779fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2780fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setMaxLines", 2781fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class} 2782fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 2783fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @UiThreadTest 2784fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @ToBeFixed(bug = "1695243", explanation = "Android API javadocs are incomplete, " 278572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach + "this method should not accept neagtive values as maximum line count") 2786fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testSetMaxLinesException() { 278772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView = new TextView(mActivity); 278872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mActivity.setContentView(mTextView); 2789fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setWidth(mTextView.getWidth() >> 3); 279072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView.setMaxLines(-1); 2791fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2792fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2793fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2794fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2795fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setMinLines", 2796fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class} 2797fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 2798fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testSetMinLines() { 2799fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_text); 2800fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setWidth(mTextView.getWidth() >> 3); 2801fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su int originalHeight = mTextView.getHeight(); 2802fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su int originalLines = mTextView.getLineCount(); 2803fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2804fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setMinLines(originalLines - 1); 2805fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue((originalLines - 1) * mTextView.getLineHeight() <= mTextView.getHeight()); 2806fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2807fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setMinLines(originalLines + 1); 2808fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue((originalLines + 1) * mTextView.getLineHeight() <= mTextView.getHeight()); 2809fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2810fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2811fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2812fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2813fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setLines", 2814fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class} 2815fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 2816fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testSetLines() { 2817fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_text); 2818fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // make it multiple lines 2819fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setWidth(mTextView.getWidth() >> 3); 2820fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su int originalLines = mTextView.getLineCount(); 2821fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2822fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setLines(originalLines - 1); 2823fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue((originalLines - 1) * mTextView.getLineHeight() <= mTextView.getHeight()); 2824fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2825fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setLines(originalLines + 1); 2826fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue((originalLines + 1) * mTextView.getLineHeight() <= mTextView.getHeight()); 2827fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2828fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2829fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2830fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2831fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setLines", 2832fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class} 2833fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 2834fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @UiThreadTest 2835fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @ToBeFixed(bug = "1695243", explanation = "Android API javadocs are incomplete, " 283672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach + "this method should not accept neagtive values as maximum line count") 2837fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testSetLinesException() { 283872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView = new TextView(mActivity); 283972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mActivity.setContentView(mTextView); 284072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView.setWidth(mTextView.getWidth() >> 3); 284172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView.setLines(-1); 2842fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2843fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2844fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2845fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2846fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getExtendedPaddingTop", 2847fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 2848fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 2849fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @UiThreadTest 2850fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testGetExtendedPaddingTop() { 2851fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_text); 2852fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Initialized value 2853fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, mTextView.getExtendedPaddingTop()); 2854fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2855fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // After Set a Drawable 2856fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su final Drawable top = mActivity.getResources().getDrawable(R.drawable.red); 2857fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su top.setBounds(0, 0, 100, 10); 2858fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setCompoundDrawables(null, top, null, null); 2859fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getCompoundPaddingTop(), mTextView.getExtendedPaddingTop()); 2860fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2861fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Change line count 2862fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setLines(mTextView.getLineCount() - 1); 2863fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setGravity(Gravity.BOTTOM); 2864fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2865fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.getExtendedPaddingTop() > 0); 2866fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2867fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2868fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2869fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2870fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getExtendedPaddingBottom", 2871fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 2872fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 2873fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @UiThreadTest 2874fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testGetExtendedPaddingBottom() { 2875fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_text); 2876fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Initialized value 2877fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, mTextView.getExtendedPaddingBottom()); 2878fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2879fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // After Set a Drawable 2880fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su final Drawable bottom = mActivity.getResources().getDrawable(R.drawable.red); 2881fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su bottom.setBounds(0, 0, 100, 10); 2882fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setCompoundDrawables(null, null, null, bottom); 2883fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getCompoundPaddingBottom(), mTextView.getExtendedPaddingBottom()); 2884fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2885fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Change line count 2886fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setLines(mTextView.getLineCount() - 1); 2887fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setGravity(Gravity.CENTER_VERTICAL); 2888fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2889fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.getExtendedPaddingBottom() > 0); 2890fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2891fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2892fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2893fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2894fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getTotalPaddingTop", 2895fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 2896fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 2897fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testGetTotalPaddingTop() { 2898fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_text); 2899fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Initialized value 2900fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, mTextView.getTotalPaddingTop()); 2901fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2902fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // After Set a Drawable 2903fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su final Drawable top = mActivity.getResources().getDrawable(R.drawable.red); 2904fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su top.setBounds(0, 0, 100, 10); 2905fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 2906fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 2907fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setCompoundDrawables(null, top, null, null); 2908fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setLines(mTextView.getLineCount() - 1); 2909fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setGravity(Gravity.BOTTOM); 2910fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2911fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 2912fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 2913fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getExtendedPaddingTop(), mTextView.getTotalPaddingTop()); 2914fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2915fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Change line count 2916fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setLines(mTextView.getLineCount() + 1); 2917fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su int expected = mTextView.getHeight() 2918fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su - mTextView.getExtendedPaddingBottom() 2919fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su - mTextView.getLayout().getLineTop(mTextView.getLineCount()); 2920fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(expected, mTextView.getTotalPaddingTop()); 2921fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2922fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2923fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2924fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2925fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getTotalPaddingBottom", 2926fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 2927fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 2928fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testGetTotalPaddingBottom() { 2929fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_text); 2930fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Initialized value 2931fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, mTextView.getTotalPaddingBottom()); 2932fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2933fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // After Set a Drawable 2934fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su final Drawable bottom = mActivity.getResources().getDrawable(R.drawable.red); 2935fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su bottom.setBounds(0, 0, 100, 10); 2936fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 2937fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 2938fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setCompoundDrawables(null, null, null, bottom); 2939fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setLines(mTextView.getLineCount() - 1); 2940fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setGravity(Gravity.CENTER_VERTICAL); 2941fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2942fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 2943fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 2944fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getExtendedPaddingBottom(), mTextView.getTotalPaddingBottom()); 2945fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2946fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Change line count 2947fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setLines(mTextView.getLineCount() + 1); 2948fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su int expected = ((mTextView.getHeight() 2949fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su - mTextView.getExtendedPaddingBottom() 2950fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su - mTextView.getExtendedPaddingTop() 2951fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su - mTextView.getLayout().getLineBottom(mTextView.getLineCount())) >> 1) 2952fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + mTextView.getExtendedPaddingBottom(); 2953fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(expected, mTextView.getTotalPaddingBottom()); 2954fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2955fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2956fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2957fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2958fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getTotalPaddingLeft", 2959fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 2960fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 2961fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @UiThreadTest 2962fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testGetTotalPaddingLeft() { 2963fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_text); 2964fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Initialized value 2965fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, mTextView.getTotalPaddingLeft()); 2966fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2967fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // After Set a Drawable 2968fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Drawable left = mActivity.getResources().getDrawable(R.drawable.red); 2969fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su left.setBounds(0, 0, 10, 100); 2970fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setCompoundDrawables(left, null, null, null); 2971fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setGravity(Gravity.RIGHT); 2972fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getCompoundPaddingLeft(), mTextView.getTotalPaddingLeft()); 2973fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2974fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Change width 2975fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setWidth(Integer.MAX_VALUE); 2976fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getCompoundPaddingLeft(), mTextView.getTotalPaddingLeft()); 2977fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 2978fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2979fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 2980fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 2981fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getTotalPaddingRight", 2982fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 2983fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 2984fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @UiThreadTest 2985fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testGetTotalPaddingRight() { 2986fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_text); 2987fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Initialized value 2988fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, mTextView.getTotalPaddingRight()); 2989fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2990fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // After Set a Drawable 2991fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Drawable right = mActivity.getResources().getDrawable(R.drawable.red); 2992fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su right.setBounds(0, 0, 10, 100); 2993fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setCompoundDrawables(null, null, right, null); 2994fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setGravity(Gravity.CENTER_HORIZONTAL); 2995fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getCompoundPaddingRight(), mTextView.getTotalPaddingRight()); 2996fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 2997fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Change width 2998fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setWidth(Integer.MAX_VALUE); 2999fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mTextView.getCompoundPaddingRight(), mTextView.getTotalPaddingRight()); 3000fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3001fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3002fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3003fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 3004fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getUrls", 3005fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 3006fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 3007fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testGetUrls() { 3008fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = new TextView(mActivity); 3009fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3010fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su URLSpan[] spans = mTextView.getUrls(); 3011fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, spans.length); 3012fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3013fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su String url = "http://www.google.com"; 3014fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su String email = "name@gmail.com"; 3015fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su String string = url + " mailto:" + email; 3016fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su SpannableString spannable = new SpannableString(string); 3017fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su spannable.setSpan(new URLSpan(url), 0, url.length(), 0); 3018fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(spannable, BufferType.SPANNABLE); 3019fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su spans = mTextView.getUrls(); 3020fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(1, spans.length); 3021fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(url, spans[0].getURL()); 3022fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3023fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su spannable.setSpan(new URLSpan(email), 0, email.length(), 0); 3024fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(spannable, BufferType.SPANNABLE); 3025fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3026fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su spans = mTextView.getUrls(); 3027fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(2, spans.length); 3028fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(url, spans[0].getURL()); 3029fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(email, spans[1].getURL()); 3030fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3031fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // test the situation that param what is not a URLSpan 3032fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su spannable.setSpan(new Object(), 0, 9, 0); 3033fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setText(spannable, BufferType.SPANNABLE); 3034fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su spans = mTextView.getUrls(); 3035fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(2, spans.length); 3036fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3037fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3038fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3039fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 3040fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setPadding", 3041fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class, int.class, int.class, int.class} 3042fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 3043fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testSetPadding() { 3044fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = new TextView(mActivity); 3045fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3046fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setPadding(0, 1, 2, 4); 3047fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, mTextView.getPaddingLeft()); 3048fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(1, mTextView.getPaddingTop()); 3049fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(2, mTextView.getPaddingRight()); 3050fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(4, mTextView.getPaddingBottom()); 3051fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3052fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setPadding(10, 20, 30, 40); 3053fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(10, mTextView.getPaddingLeft()); 3054fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(20, mTextView.getPaddingTop()); 3055fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(30, mTextView.getPaddingRight()); 3056fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(40, mTextView.getPaddingBottom()); 3057fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3058fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3059fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3060fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 3061fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setTextAppearance", 3062fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {android.content.Context.class, int.class} 3063fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 3064fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @ToBeFixed(bug = "1386429", explanation = "There is no getter to check " 3065fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "the Highlight color value.") 3066fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testSetTextAppearance() { 3067fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = new TextView(mActivity); 3068fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3069fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTextAppearance(mActivity, R.style.TextAppearance_All); 3070fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mActivity.getResources().getColor(R.drawable.black), 3071fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getCurrentTextColor()); 3072fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(20f, mTextView.getTextSize(), 0.01f); 3073fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Typeface.BOLD, mTextView.getTypeface().getStyle()); 3074fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mActivity.getResources().getColor(R.drawable.red), 3075fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getCurrentHintTextColor()); 3076fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mActivity.getResources().getColor(R.drawable.blue), 3077fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getLinkTextColors().getDefaultColor()); 3078fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3079fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTextAppearance(mActivity, R.style.TextAppearance_Colors); 3080fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mActivity.getResources().getColor(R.drawable.black), 3081fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getCurrentTextColor()); 3082fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mActivity.getResources().getColor(R.drawable.blue), 3083fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getCurrentHintTextColor()); 3084fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(mActivity.getResources().getColor(R.drawable.yellow), 3085fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.getLinkTextColors().getDefaultColor()); 3086fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3087fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTextAppearance(mActivity, R.style.TextAppearance_NotColors); 3088fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(17f, mTextView.getTextSize(), 0.01f); 3089fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(Typeface.NORMAL, mTextView.getTypeface().getStyle()); 3090fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3091fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setTextAppearance(mActivity, R.style.TextAppearance_Style); 3092fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(null, mTextView.getTypeface()); 3093fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3094fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3095fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3096fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.NOT_NECESSARY, 3097fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "onPreDraw", 3098fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 3099fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 3100fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testOnPreDraw() { 3101fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Do not test. Implementation details. 3102fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3103fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3104fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3105fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 3106fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setHorizontallyScrolling", 3107fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {boolean.class} 3108fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 3109fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testSetHorizontallyScrolling() { 3110fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // make the text view has more than one line 3111fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = findTextView(R.id.textview_text); 3112fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setWidth(mTextView.getWidth() >> 1); 3113fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.getLineCount() > 1); 3114fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3115fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setHorizontallyScrolling(true); 3116fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(1, mTextView.getLineCount()); 3117fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3118fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su setHorizontallyScrolling(false); 3119fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(mTextView.getLineCount() > 1); 3120fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3121fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3122fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3123fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 3124fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "computeHorizontalScrollRange", 3125fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 3126fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 3127fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testComputeHorizontalScrollRange() { 3128fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su MockTextView textView = new MockTextView(mActivity); 3129fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // test when layout is null 3130fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(textView.getLayout()); 3131fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(textView.getWidth(), textView.computeHorizontalScrollRange()); 3132fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3133fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setFrame(0, 0, 40, 50); 3134fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(textView.getWidth(), textView.computeHorizontalScrollRange()); 3135fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3136fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // set the layout 3137fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su layout(textView); 3138fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(textView.getLayout().getWidth(), textView.computeHorizontalScrollRange()); 3139fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3140fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3141fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3142fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 3143fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "computeVerticalScrollRange", 3144fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 3145fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 3146fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testComputeVerticalScrollRange() { 3147fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su MockTextView textView = new MockTextView(mActivity); 3148fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // test when layout is null 3149fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(textView.getLayout()); 3150fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, textView.computeVerticalScrollRange()); 3151fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3152fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setFrame(0, 0, 40, 50); 3153fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(textView.getHeight(), textView.computeVerticalScrollRange()); 3154fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3155fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su //set the layout 3156fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su layout(textView); 3157fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(textView.getLayout().getHeight(), textView.computeVerticalScrollRange()); 3158fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3159fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3160fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3161fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 3162fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "drawableStateChanged", 3163fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 3164fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 3165fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testDrawableStateChanged() { 3166fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su MockTextView textView = new MockTextView(mActivity); 3167fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3168fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.reset(); 3169fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.refreshDrawableState(); 3170fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(textView.hasCalledDrawableStateChanged()); 3171fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3172fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3173fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3174fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 3175fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su notes = "This method always returns false.", 3176fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getDefaultEditable", 3177fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 3178fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 3179fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testGetDefaultEditable() { 3180fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su MockTextView textView = new MockTextView(mActivity); 3181fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3182fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su //the TextView#getDefaultEditable() does nothing, and always return false. 3183fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(textView.getDefaultEditable()); 3184fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3185fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3186fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3187fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 3188fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su notes = "This method always returns null.", 3189fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getDefaultMovementMethod", 3190fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 3191fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 3192fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testGetDefaultMovementMethod() { 3193fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su MockTextView textView = new MockTextView(mActivity); 3194fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3195fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su //the TextView#getDefaultMovementMethod() does nothing, and always return null. 3196fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(textView.getDefaultMovementMethod()); 3197fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3198fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3199fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3200fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.NOT_NECESSARY, 3201fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "onCreateContextMenu", 3202fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {android.view.ContextMenu.class} 3203fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 3204fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testOnCreateContextMenu() { 3205fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Do not test. Implementation details. 3206fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3207fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3208fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3209fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.NOT_NECESSARY, 3210fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "onDetachedFromWindow", 3211fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 3212fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 3213fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testOnDetachedFromWindow() { 3214fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Do not test. Implementation details. 3215fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3216fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3217fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3218fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.NOT_NECESSARY, 3219fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "onDraw", 3220fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {android.graphics.Canvas.class} 3221fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 3222fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testOnDraw() { 3223fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Do not test. Implementation details. 3224fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3225fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3226fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3227fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.NOT_NECESSARY, 3228fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "onFocusChanged", 3229fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {boolean.class, int.class, android.graphics.Rect.class} 3230fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 3231fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testOnFocusChanged() { 3232fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Do not test. Implementation details. 3233fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3234fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3235fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3236fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.NOT_NECESSARY, 3237fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "onMeasure", 3238fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class, int.class} 3239fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 3240fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testOnMeasure() { 3241fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Do not test. Implementation details. 3242fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3243fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3244fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3245fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.NOT_NECESSARY, 3246fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "onTextChanged", 3247fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {java.lang.CharSequence.class, int.class, int.class, int.class} 3248fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 3249fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testOnTextChanged() { 3250fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Do not test. Implementation details. 3251fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3252fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3253fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3254fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 3255fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setFrame", 3256fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class, int.class, int.class, int.class} 3257fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 3258fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testSetFrame() { 3259fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su MockTextView textView = new MockTextView(mActivity); 3260fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3261fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su //Assign a new size to this view 3262fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(textView.setFrame(0, 0, 320, 480)); 3263fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, textView.getFrameLeft()); 3264fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0, textView.getFrameTop()); 3265fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(320, textView.getFrameRight()); 3266fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(480, textView.getFrameBottom()); 3267fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3268fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su //Assign a same size to this view 3269fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(textView.setFrame(0, 0, 320, 480)); 3270fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3271fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su //negative input 3272fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(textView.setFrame(-1, -1, -1, -1)); 3273fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(-1, textView.getFrameLeft()); 3274fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(-1, textView.getFrameTop()); 3275fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(-1, textView.getFrameRight()); 3276fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(-1, textView.getFrameBottom()); 3277fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3278fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3279fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 3280fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3281fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 3282fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getRightFadingEdgeStrength", 3283fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 3284fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 3285fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3286fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 3287fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getLeftFadingEdgeStrength", 3288fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 3289fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 3290fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 3291fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testGetFadingEdgeStrength() { 3292fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su final MockTextView textView = new MockTextView(mActivity); 3293fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setText(LONG_TEXT); 3294fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setSingleLine(); 3295fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // make the fading to be shown 3296fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setHorizontalFadingEdgeEnabled(true); 3297fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3298fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 3299fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 3300fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.setContentView(textView); 3301fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setGravity(Gravity.LEFT); 3302fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3303fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 3304fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 3305fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3306fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // fading is shown on right side if the text aligns left 3307fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0.0f, textView.getLeftFadingEdgeStrength(), 0.01f); 3308fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(1.0f, textView.getRightFadingEdgeStrength(), 0.01f); 3309fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3310fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 3311fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 3312fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setGravity(Gravity.RIGHT); 3313fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3314fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 3315fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 3316fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // fading is shown on left side if the text aligns right 3317fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(1.0f, textView.getLeftFadingEdgeStrength(), 0.01f); 3318fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0.0f, textView.getRightFadingEdgeStrength(), 0.01f); 3319fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3320fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 3321fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 3322fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setGravity(Gravity.CENTER_HORIZONTAL); 3323fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3324fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 3325fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 3326fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // fading is shown on both sides if the text aligns center 3327fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(1.0f, textView.getLeftFadingEdgeStrength(), 0.01f); 3328fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(1.0f, textView.getRightFadingEdgeStrength(), 0.01f); 3329fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3330fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3331fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 3332fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3333fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 3334fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getRightFadingEdgeStrength", 3335fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 3336fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 3337fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3338fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 3339fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getLeftFadingEdgeStrength", 3340fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 3341fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 3342fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3343fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 3344fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setMarqueeRepeatLimit", 3345fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class} 3346fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 3347fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3348fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 3349fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setSelected", 3350fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {boolean.class} 3351fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 3352fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 3353bed9d222439713a766c3d5c91fae1526b5bc35dcBrian Muramatsu 3354fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testMarquee() { 3355fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su final MockTextView textView = new MockTextView(mActivity); 3356fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setText(LONG_TEXT); 3357fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setSingleLine(); 3358fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setEllipsize(TruncateAt.MARQUEE); 3359bed9d222439713a766c3d5c91fae1526b5bc35dcBrian Muramatsu textView.setLayoutParams(new ViewGroup.LayoutParams(100, 100)); 3360bed9d222439713a766c3d5c91fae1526b5bc35dcBrian Muramatsu 3361bed9d222439713a766c3d5c91fae1526b5bc35dcBrian Muramatsu final FrameLayout layout = new FrameLayout(mActivity); 3362bed9d222439713a766c3d5c91fae1526b5bc35dcBrian Muramatsu layout.addView(textView); 3363bed9d222439713a766c3d5c91fae1526b5bc35dcBrian Muramatsu 3364fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // make the fading to be shown 3365fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setHorizontalFadingEdgeEnabled(true); 3366fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3367fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 3368fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 3369bed9d222439713a766c3d5c91fae1526b5bc35dcBrian Muramatsu mActivity.setContentView(layout); 3370fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3371fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 3372fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 3373fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3374fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su TestSelectedRunnable runnable = new TestSelectedRunnable(textView) { 3375fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 3376fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setMarqueeRepeatLimit(-1); 3377fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // force the marquee to start 3378fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su saveIsSelected1(); 3379fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setSelected(true); 3380fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su saveIsSelected2(); 3381fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3382fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }; 3383fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(runnable); 3384fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3385fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // wait for the marquee to run 3386fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // fading is shown on both sides if the marquee runs for a while 3387fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su new DelayedCheck(TIMEOUT) { 3388fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @Override 3389fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su protected boolean check() { 3390fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return textView.getLeftFadingEdgeStrength() > 0.0f 3391fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su && textView.getRightFadingEdgeStrength() > 0.0f; 3392fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3393fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }.run(); 3394fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 339572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach final float leftFadingEdgeStrength = textView.getLeftFadingEdgeStrength(); 339672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach final float rightFadingEdgeStrength = textView.getRightFadingEdgeStrength(); 339772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 3398fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // wait for the marquee to continue 3399fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // the left fading becomes thicker while the right fading becomes thiner 3400fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // as the text moves towards left 3401fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su new DelayedCheck(TIMEOUT) { 3402fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @Override 3403fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su protected boolean check() { 3404fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return leftFadingEdgeStrength < textView.getLeftFadingEdgeStrength() 3405fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su && rightFadingEdgeStrength > textView.getRightFadingEdgeStrength(); 3406fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3407fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }.run(); 3408fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(runnable.getIsSelected1()); 3409fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(runnable.getIsSelected2()); 3410fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3411fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su runnable = new TestSelectedRunnable(textView) { 3412fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 3413fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setMarqueeRepeatLimit(0); 3414fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // force the marquee to stop 3415fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su saveIsSelected1(); 3416fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setSelected(false); 3417fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su saveIsSelected2(); 3418fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setGravity(Gravity.LEFT); 3419fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3420fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }; 3421fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // force the marquee to stop 3422fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(runnable); 3423fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 3424fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(runnable.getIsSelected1()); 3425fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertFalse(runnable.getIsSelected2()); 3426fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0.0f, textView.getLeftFadingEdgeStrength(), 0.01f); 3427fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(textView.getRightFadingEdgeStrength() > 0.0f); 3428fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3429fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 3430fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 3431fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setGravity(Gravity.RIGHT); 3432fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3433fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 3434fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 3435fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(textView.getLeftFadingEdgeStrength() > 0.0f); 3436fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0.0f, textView.getRightFadingEdgeStrength(), 0.01f); 3437fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3438fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 3439fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 3440fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setGravity(Gravity.CENTER_HORIZONTAL); 3441fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3442fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 3443fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 3444fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // there is no left fading (Is it correct?) 3445fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(0.0f, textView.getLeftFadingEdgeStrength(), 0.01f); 3446fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(textView.getRightFadingEdgeStrength() > 0.0f); 3447fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3448fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3449fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3450fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.NOT_NECESSARY, 3451fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "onKeyMultiple", 3452fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class, int.class, android.view.KeyEvent.class} 3453fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 3454fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testOnKeyMultiple() { 3455fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Do not test. Implementation details. 3456fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3457fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3458fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 3459fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3460fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 3461fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setInputExtras", 3462fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class} 3463fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 3464fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3465fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 3466fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getInputExtras", 3467fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {boolean.class} 3468fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 3469fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 3470fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @ToBeFixed(bug = "1569298", explanation = "NullPointerException occurs when we call " 3471fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su + "android.widget.TextView#setInputExtras(int xmlResId)") 3472fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testAccessInputExtras() throws XmlPullParserException, IOException { 3473fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su TextView textView = new TextView(mActivity); 3474fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setText(null, BufferType.EDITABLE); 3475fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setInputType(InputType.TYPE_CLASS_TEXT); 3476fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3477fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // do not create the extras 3478fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(textView.getInputExtras(false)); 3479fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3480fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // create if it does not exist 3481fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su Bundle inputExtras = textView.getInputExtras(true); 3482fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNotNull(inputExtras); 3483fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(inputExtras.isEmpty()); 3484fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3485fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // it is created already 3486fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNotNull(textView.getInputExtras(false)); 3487fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3488fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su try { 3489fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setInputExtras(R.xml.input_extras); 3490fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su fail("Should throw NullPointerException!"); 3491fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } catch (NullPointerException e) { 3492fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3493fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3494fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3495fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 3496fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3497fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 3498fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setInputType", 3499fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class} 3500fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 3501fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3502fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 3503fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getInputType", 3504fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 3505fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 3506fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 3507fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testAccessContentType() { 3508fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su TextView textView = new TextView(mActivity); 3509fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setText(null, BufferType.EDITABLE); 3510fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setKeyListener(null); 3511fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setTransformationMethod(null); 3512fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3513fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setInputType(InputType.TYPE_CLASS_DATETIME 3514fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_DATETIME_VARIATION_NORMAL); 3515fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(InputType.TYPE_CLASS_DATETIME 3516fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_DATETIME_VARIATION_NORMAL, textView.getInputType()); 3517fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(textView.getKeyListener() instanceof DateTimeKeyListener); 3518fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3519fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setInputType(InputType.TYPE_CLASS_DATETIME 3520fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_DATETIME_VARIATION_DATE); 3521fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(InputType.TYPE_CLASS_DATETIME 3522fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_DATETIME_VARIATION_DATE, textView.getInputType()); 3523fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(textView.getKeyListener() instanceof DateKeyListener); 3524fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3525fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setInputType(InputType.TYPE_CLASS_DATETIME 3526fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_DATETIME_VARIATION_TIME); 3527fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(InputType.TYPE_CLASS_DATETIME 3528fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_DATETIME_VARIATION_TIME, textView.getInputType()); 3529fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(textView.getKeyListener() instanceof TimeKeyListener); 3530fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3531fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setInputType(InputType.TYPE_CLASS_NUMBER 3532fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_NUMBER_FLAG_DECIMAL 3533fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_NUMBER_FLAG_SIGNED); 3534fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(InputType.TYPE_CLASS_NUMBER 3535fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_NUMBER_FLAG_DECIMAL 3536fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_NUMBER_FLAG_SIGNED, textView.getInputType()); 3537fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(textView.getKeyListener(), DigitsKeyListener.getInstance(true, true)); 3538fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3539fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setInputType(InputType.TYPE_CLASS_PHONE); 3540fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(InputType.TYPE_CLASS_PHONE, textView.getInputType()); 3541fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(textView.getKeyListener() instanceof DialerKeyListener); 3542fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3543fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setInputType(InputType.TYPE_CLASS_TEXT 3544fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT); 3545fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(InputType.TYPE_CLASS_TEXT 3546fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT, textView.getInputType()); 3547fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(textView.getKeyListener(), TextKeyListener.getInstance(true, Capitalize.NONE)); 3548fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3549fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setSingleLine(); 3550fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(textView.getTransformationMethod() instanceof SingleLineTransformationMethod); 3551fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setInputType(InputType.TYPE_CLASS_TEXT 3552fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_TEXT_FLAG_MULTI_LINE 3553fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS); 3554fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(InputType.TYPE_CLASS_TEXT 3555fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_TEXT_FLAG_MULTI_LINE 3556fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS, textView.getInputType()); 3557fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(textView.getKeyListener(), 3558fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su TextKeyListener.getInstance(false, Capitalize.CHARACTERS)); 3559fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(textView.getTransformationMethod()); 3560fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3561fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setInputType(InputType.TYPE_CLASS_TEXT 3562fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_TEXT_FLAG_CAP_WORDS); 3563fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(InputType.TYPE_CLASS_TEXT 3564fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_TEXT_FLAG_CAP_WORDS, textView.getInputType()); 3565fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(textView.getKeyListener(), 3566fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su TextKeyListener.getInstance(false, Capitalize.WORDS)); 3567fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(textView.getTransformationMethod() instanceof SingleLineTransformationMethod); 3568fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3569fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setInputType(InputType.TYPE_CLASS_TEXT 3570fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES); 3571fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(InputType.TYPE_CLASS_TEXT 3572fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES, textView.getInputType()); 3573fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertSame(textView.getKeyListener(), 3574fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su TextKeyListener.getInstance(false, Capitalize.SENTENCES)); 3575fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3576fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setInputType(InputType.TYPE_NULL); 3577fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(InputType.TYPE_NULL, textView.getInputType()); 3578fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(textView.getKeyListener() instanceof TextKeyListener); 3579fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3580fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3581fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargets({ 3582fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3583fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 3584fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "getInputType", 3585fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {} 3586fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ), 3587fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3588fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.COMPLETE, 3589fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "setRawInputType", 3590fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {int.class} 3591fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 3592fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }) 3593fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testAccessRawContentType() { 3594fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su TextView textView = new TextView(mActivity); 3595fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setText(null, BufferType.EDITABLE); 3596fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setKeyListener(null); 3597fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setTransformationMethod(null); 3598fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3599fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setRawInputType(InputType.TYPE_CLASS_DATETIME 3600fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_DATETIME_VARIATION_NORMAL); 3601fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(InputType.TYPE_CLASS_DATETIME 3602fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_DATETIME_VARIATION_NORMAL, textView.getInputType()); 3603fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(textView.getTransformationMethod()); 3604fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(textView.getKeyListener()); 3605fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3606fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setRawInputType(InputType.TYPE_CLASS_DATETIME 3607fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_DATETIME_VARIATION_DATE); 3608fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(InputType.TYPE_CLASS_DATETIME 3609fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_DATETIME_VARIATION_DATE, textView.getInputType()); 3610fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(textView.getTransformationMethod()); 3611fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(textView.getKeyListener()); 3612fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3613fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setRawInputType(InputType.TYPE_CLASS_DATETIME 3614fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_DATETIME_VARIATION_TIME); 3615fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(InputType.TYPE_CLASS_DATETIME 3616fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_DATETIME_VARIATION_TIME, textView.getInputType()); 3617fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(textView.getTransformationMethod()); 3618fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(textView.getKeyListener()); 3619fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3620fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setRawInputType(InputType.TYPE_CLASS_NUMBER 3621fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_NUMBER_FLAG_DECIMAL 3622fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_NUMBER_FLAG_SIGNED); 3623fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(InputType.TYPE_CLASS_NUMBER 3624fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_NUMBER_FLAG_DECIMAL 3625fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_NUMBER_FLAG_SIGNED, textView.getInputType()); 3626fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(textView.getTransformationMethod()); 3627fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(textView.getKeyListener()); 3628fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3629fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setRawInputType(InputType.TYPE_CLASS_PHONE); 3630fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(InputType.TYPE_CLASS_PHONE, textView.getInputType()); 3631fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(textView.getTransformationMethod()); 3632fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(textView.getKeyListener()); 3633fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3634fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setRawInputType(InputType.TYPE_CLASS_TEXT 3635fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT); 3636fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(InputType.TYPE_CLASS_TEXT 3637fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT, textView.getInputType()); 3638fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(textView.getTransformationMethod()); 3639fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(textView.getKeyListener()); 3640fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3641fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setSingleLine(); 3642fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(textView.getTransformationMethod() instanceof SingleLineTransformationMethod); 3643fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setRawInputType(InputType.TYPE_CLASS_TEXT 3644fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_TEXT_FLAG_MULTI_LINE 3645fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS); 3646fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(InputType.TYPE_CLASS_TEXT 3647fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_TEXT_FLAG_MULTI_LINE 3648fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS, textView.getInputType()); 3649fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(textView.getTransformationMethod() instanceof SingleLineTransformationMethod); 3650fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(textView.getKeyListener()); 3651fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3652fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setRawInputType(InputType.TYPE_CLASS_TEXT 3653fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_TEXT_FLAG_CAP_WORDS); 3654fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(InputType.TYPE_CLASS_TEXT 3655fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_TEXT_FLAG_CAP_WORDS, textView.getInputType()); 3656fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(textView.getTransformationMethod() instanceof SingleLineTransformationMethod); 3657fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(textView.getKeyListener()); 3658fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3659fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setRawInputType(InputType.TYPE_CLASS_TEXT 3660fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES); 3661fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertEquals(InputType.TYPE_CLASS_TEXT 3662fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES, textView.getInputType()); 3663fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(textView.getTransformationMethod() instanceof SingleLineTransformationMethod); 3664fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(textView.getKeyListener()); 3665fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3666fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su textView.setRawInputType(InputType.TYPE_NULL); 3667fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertTrue(textView.getTransformationMethod() instanceof SingleLineTransformationMethod); 3668fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su assertNull(textView.getKeyListener()); 3669fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3670fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 3671fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @TestTargetNew( 3672fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su level = TestLevel.NOT_NECESSARY, 3673fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su method = "onPrivateIMECommand", 3674fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su args = {String.class, Bundle.class} 3675fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su ) 3676fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void testOnPrivateIMECommand() { 3677fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su // Do not test. Implementation details. 3678fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 3679fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 368072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargets({ 368172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 368272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.NOT_NECESSARY, 368372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "onAttachedToWindow", 368472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {} 368572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ), 368672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 368772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.NOT_NECESSARY, 368872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "onBeginBatchEdit", 368972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {} 369072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ), 369172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 369272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.NOT_NECESSARY, 369372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "onCheckIsTextEditor", 369472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {} 369572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ), 369672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 369772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.NOT_NECESSARY, 369872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "onCommitCompletion", 369972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {android.view.inputmethod.CompletionInfo.class} 370072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ), 370172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 370272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.NOT_NECESSARY, 370372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "onCreateInputConnection", 370472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {android.view.inputmethod.EditorInfo.class} 370572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ), 370672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 370772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.NOT_NECESSARY, 370872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "onEditorAction", 370972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {int.class} 371072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ), 371172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 371272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.NOT_NECESSARY, 371372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "onEndBatchEdit", 371472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {} 371572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ), 371672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 371772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.NOT_NECESSARY, 371872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "onFinishTemporaryDetach", 371972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {} 372072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ), 372172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 372272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.NOT_NECESSARY, 372372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "onSelectionChanged", 372472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {int.class, int.class} 372572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ), 372672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 372772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.NOT_NECESSARY, 372872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "onStartTemporaryDetach", 372972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {} 373072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ), 373172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 373272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.NOT_NECESSARY, 373372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "onTextContextMenuItem", 373472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {int.class} 373572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ) 373672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach }) 373772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach public void testFoo() { 373872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach // Do not test. Implementation details. 373972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach } 374072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 374172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 374272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.COMPLETE, 374372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "verifyDrawable", 374472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {android.graphics.drawable.Drawable.class} 374572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ) 374672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach public void testVerifyDrawable() { 374772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach MockTextView textView = new MockTextView(mActivity); 374872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 374972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach Drawable d = mActivity.getResources().getDrawable(R.drawable.pass); 375072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertFalse(textView.verifyDrawable(d)); 375172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 375272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach textView.setCompoundDrawables(null, d, null, null); 375372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertTrue(textView.verifyDrawable(d)); 375472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach } 375572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 375672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargets({ 375772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 375872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.COMPLETE, 375972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "setPrivateImeOptions", 376072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {java.lang.String.class} 376172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ), 376272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 376372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.COMPLETE, 376472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "getPrivateImeOptions", 376572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {} 376672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ) 376772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach }) 376872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach public void testAccessPrivateImeOptions() { 376972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView = findTextView(R.id.textview_text); 377072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertNull(mTextView.getPrivateImeOptions()); 377172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 377272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView.setPrivateImeOptions("com.example.myapp.SpecialMode=3"); 377372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertEquals("com.example.myapp.SpecialMode=3", mTextView.getPrivateImeOptions()); 377472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 377572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView.setPrivateImeOptions(null); 377672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertNull(mTextView.getPrivateImeOptions()); 377772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach } 377872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 377972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 378072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.COMPLETE, 378172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "setOnEditorActionListener", 378272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {android.widget.TextView.OnEditorActionListener.class} 378372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ) 378472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach public void testSetOnEditorActionListener() { 378572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView = findTextView(R.id.textview_text); 378672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 378772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach MockOnEditorActionListener listener = new MockOnEditorActionListener(); 378872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertFalse(listener.isOnEditorActionCalled()); 378972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 379072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView.setOnEditorActionListener(listener); 379172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertFalse(listener.isOnEditorActionCalled()); 379272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 379372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView.onEditorAction(EditorInfo.IME_ACTION_DONE); 379472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertTrue(listener.isOnEditorActionCalled()); 379572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach } 379672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 379772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargets({ 379872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 379972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.COMPLETE, 380072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "setImeOptions", 380172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {int.class} 380272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ), 380372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 380472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.COMPLETE, 380572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "getImeOptions", 380672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {} 380772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ) 380872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach }) 380972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach public void testAccessImeOptions() { 381072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView = findTextView(R.id.textview_text); 381172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertEquals(EditorInfo.IME_NULL, mTextView.getImeOptions()); 381272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 381372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView.setImeOptions(EditorInfo.IME_ACTION_GO); 381472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertEquals(EditorInfo.IME_ACTION_GO, mTextView.getImeOptions()); 381572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 381672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView.setImeOptions(EditorInfo.IME_ACTION_DONE); 381772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertEquals(EditorInfo.IME_ACTION_DONE, mTextView.getImeOptions()); 381872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 381972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView.setImeOptions(EditorInfo.IME_NULL); 382072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertEquals(EditorInfo.IME_NULL, mTextView.getImeOptions()); 382172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach } 382272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 382372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargets({ 382472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 382572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.COMPLETE, 382672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "setImeActionLabel", 382772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {java.lang.CharSequence.class, int.class} 382872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ), 382972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 383072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.COMPLETE, 383172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "getImeActionLabel", 383272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {} 383372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ), 383472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 383572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.COMPLETE, 383672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "getImeActionId", 383772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {} 383872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ) 383972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach }) 384072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach public void testAccessImeActionLabel() { 384172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView = findTextView(R.id.textview_text); 384272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertNull(mTextView.getImeActionLabel()); 384372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertEquals(0, mTextView.getImeActionId()); 384472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 384572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView.setImeActionLabel("pinyin", 1); 384672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertEquals("pinyin", mTextView.getImeActionLabel().toString()); 384772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertEquals(1, mTextView.getImeActionId()); 384872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach } 384972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 385072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 385172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.COMPLETE, 385272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "setExtractedText", 385372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {android.view.inputmethod.ExtractedText.class} 385472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ) 385572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @UiThreadTest 385672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach public void testSetExtractedText() { 385772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView = findTextView(R.id.textview_text); 385872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertEquals(mActivity.getResources().getString(R.string.text_view_hello), 385972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView.getText().toString()); 386072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 386172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ExtractedText et = new ExtractedText(); 386272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach et.text = "test"; 386372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 386472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView.setExtractedText(et); 386572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertEquals("test", mTextView.getText().toString()); 386672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach } 386772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 386872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 386972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.COMPLETE, 387072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "moveCursorToVisibleOffset", 387172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {} 387272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ) 387372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach public void testMoveCursorToVisibleOffset() throws Throwable { 387472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView = findTextView(R.id.textview_text); 387572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 387672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach // not a spannable text 387772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach runTestOnUiThread(new Runnable() { 387872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach public void run() { 387972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertFalse(mTextView.moveCursorToVisibleOffset()); 388072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach } 388172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach }); 388272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mInstrumentation.waitForIdleSync(); 388372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 388472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach // a selection range 388572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach final String spannableText = "text"; 388672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView = new TextView(mActivity); 388772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 388872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach runTestOnUiThread(new Runnable() { 388972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach public void run() { 389072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView.setText(spannableText, BufferType.SPANNABLE); 389172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach } 389272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach }); 389372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mInstrumentation.waitForIdleSync(); 389472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach Selection.setSelection((Spannable) mTextView.getText(), 0, spannableText.length()); 389572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 389672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertEquals(0, mTextView.getSelectionStart()); 389772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertEquals(spannableText.length(), mTextView.getSelectionEnd()); 389872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach runTestOnUiThread(new Runnable() { 389972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach public void run() { 390072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertFalse(mTextView.moveCursorToVisibleOffset()); 390172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach } 390272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach }); 390372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mInstrumentation.waitForIdleSync(); 390472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 390572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach // a spannable without range 390672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach runTestOnUiThread(new Runnable() { 390772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach public void run() { 390872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView = findTextView(R.id.textview_text); 390972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView.setText(spannableText, BufferType.SPANNABLE); 391072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach } 391172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach }); 391272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mInstrumentation.waitForIdleSync(); 391372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 391472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach runTestOnUiThread(new Runnable() { 391572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach public void run() { 391672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertTrue(mTextView.moveCursorToVisibleOffset()); 391772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach } 391872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach }); 391972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mInstrumentation.waitForIdleSync(); 392072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach } 392172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 392272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 392372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.COMPLETE, 392472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "isInputMethodTarget", 392572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {} 392672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ) 392772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @UiThreadTest 392872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach public void testIsInputMethodTarget() { 392972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView = findTextView(R.id.textview_text); 393072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertFalse(mTextView.isInputMethodTarget()); 393172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 393272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertFalse(mTextView.isFocused()); 393372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView.setFocusable(true); 393472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView.requestFocus(); 393572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertTrue(mTextView.isFocused()); 393672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 393772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertTrue(mTextView.isInputMethodTarget()); 393872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach } 393972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 394072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargets({ 394172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 394272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.COMPLETE, 394372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "beginBatchEdit", 394472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {} 394572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ), 394672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 394772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.COMPLETE, 394872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "endBatchEdit", 394972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {} 395072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ) 395172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach }) 395272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @ToBeFixed(bug = "1695243", explanation = "Android API javadocs are incomplete") 395372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach public void testBeginEndBatchEdit() { 395472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView = findTextView(R.id.textview_text); 395572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 395672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView.beginBatchEdit(); 395772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView.endBatchEdit(); 395872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach } 395972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 396072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 396172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.NOT_FEASIBLE, 396272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach notes = "it's hard to do unit test, should be tested by functional test", 396372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "bringPointIntoView", 396472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {int.class} 396572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ) 396672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @UiThreadTest 396772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach public void testBringPointIntoView() throws Throwable { 396872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView = findTextView(R.id.textview_text); 396972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertFalse(mTextView.bringPointIntoView(1)); 397072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 397172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView.layout(0, 0, 100, 100); 397272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertFalse(mTextView.bringPointIntoView(2)); 397372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach } 397472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 397572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 397672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.NOT_FEASIBLE, 397772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach notes = "it's hard to do unit test, should be tested by functional test", 397872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "cancelLongPress", 397972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {} 398072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ) 398172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach public void testCancelLongPress() { 398272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView = findTextView(R.id.textview_text); 398372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach TouchUtils.longClickView(this, mTextView); 398472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView.cancelLongPress(); 398572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach } 398672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 398772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 398872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.COMPLETE, 398972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "clearComposingText", 399072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {} 399172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ) 399272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @UiThreadTest 399372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach public void testClearComposingText() { 399472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView = findTextView(R.id.textview_text); 399572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView.setText("Hello world!", BufferType.SPANNABLE); 399672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach Spannable text = (Spannable) mTextView.getText(); 399772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 399872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertEquals(-1, BaseInputConnection.getComposingSpanStart(text)); 399972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertEquals(-1, BaseInputConnection.getComposingSpanStart(text)); 400072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 400172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach BaseInputConnection.setComposingSpans((Spannable) mTextView.getText()); 400272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertEquals(0, BaseInputConnection.getComposingSpanStart(text)); 400372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertEquals(0, BaseInputConnection.getComposingSpanStart(text)); 400472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 400572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView.clearComposingText(); 400672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertEquals(-1, BaseInputConnection.getComposingSpanStart(text)); 400772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertEquals(-1, BaseInputConnection.getComposingSpanStart(text)); 400872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach } 400972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 401072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 401172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.NOT_FEASIBLE, 401272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach notes = "it's hard to do unit test, should be tested by functional test", 401372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "computeVerticalScrollExtent", 401472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {} 401572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ) 401672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach public void testComputeVerticalScrollExtent() { 401772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach MockTextView textView = new MockTextView(mActivity); 401872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertEquals(0, textView.computeVerticalScrollExtent()); 401972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 402072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach Drawable d = mActivity.getResources().getDrawable(R.drawable.pass); 402172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach textView.setCompoundDrawables(null, d, null, d); 402272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 402372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertEquals(0, textView.computeVerticalScrollExtent()); 402472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach } 402572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 402672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 402772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.COMPLETE, 402872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "didTouchFocusSelect", 402972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {} 403072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ) 403172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @UiThreadTest 403272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach public void testDidTouchFocusSelect() { 403372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView = new TextView(mActivity); 403472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertFalse(mTextView.didTouchFocusSelect()); 403572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 403672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView.setFocusable(true); 403772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView.requestFocus(); 403872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertTrue(mTextView.didTouchFocusSelect()); 403972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach } 404072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 404172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @TestTargetNew( 404272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach level = TestLevel.COMPLETE, 404372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach method = "extractText", 404472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach args = {android.view.inputmethod.ExtractedTextRequest.class, 404572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach android.view.inputmethod.ExtractedText.class} 404672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ) 404772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @ToBeFixed(bug = "", explanation = "even the TextView did not contains editable content, " + 404872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach "it also returns true.") 404972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach public void testExtractText() { 405072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView = new TextView(mActivity); 405172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 405272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ExtractedTextRequest request = new ExtractedTextRequest(); 405372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach ExtractedText outText = new ExtractedText(); 405472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 405572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach request.token = 0; 405672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach request.flags = 10; 405772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach request.hintMaxLines = 2; 405872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach request.hintMaxChars = 20; 405972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertTrue(mTextView.extractText(request, outText)); 406072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 406172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach mTextView = findTextView(R.id.textview_text); 406272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertTrue(mTextView.extractText(request, outText)); 406372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 406472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach assertEquals(mActivity.getResources().getString(R.string.text_view_hello), 406572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach outText.text.toString()); 406672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach } 406772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 406872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach private static class MockOnEditorActionListener implements OnEditorActionListener { 406972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach private boolean isOnEditorActionCalled; 407072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 407172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 407272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach isOnEditorActionCalled = true; 407372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach return true; 407472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach } 407572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 407672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach public boolean isOnEditorActionCalled() { 407772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach return isOnEditorActionCalled; 407872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach } 407972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach } 408072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 4081fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private void layout(final TextView textView) { 4082fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 4083fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 4084fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.setContentView(textView); 4085fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4086fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 4087fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 4088fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4089fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4090fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private void layout(final int layoutId) { 4091fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 4092fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 4093fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.setContentView(layoutId); 4094fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4095fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 4096fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 4097fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4098fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4099fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private TextView findTextView(int id) { 4100fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return (TextView) mActivity.findViewById(id); 4101fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4102fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4103fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private int getAutoLinkMask(int id) { 4104fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return findTextView(id).getAutoLinkMask(); 4105fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4106fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4107fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private Bitmap getBitmap(int resid) { 4108fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return ((BitmapDrawable) mActivity.getResources().getDrawable(resid)).getBitmap(); 4109fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4110fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4111fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private void setMaxWidth(final int pixels) { 4112fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 4113fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 4114fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setMaxWidth(pixels); 4115fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4116fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 4117fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 4118fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4119fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4120fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private void setMinWidth(final int pixels) { 4121fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 4122fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 4123fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setMinWidth(pixels); 4124fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4125fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 4126fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 4127fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4128fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4129fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private void setMaxHeight(final int pixels) { 4130fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 4131fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 4132fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setMaxHeight(pixels); 4133fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4134fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 4135fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 4136fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4137fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4138fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private void setMinHeight(final int pixels) { 4139fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 4140fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 4141fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setMinHeight(pixels); 4142fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4143fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 4144fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 4145fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4146fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4147fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private void setMinLines(final int minlines) { 4148fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 4149fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 4150fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setMinLines(minlines); 4151fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4152fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 4153fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 4154fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4155fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4156fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su /** 4157fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * Convenience for {@link TextView#setText(CharSequence, BufferType)}. And 4158fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * the buffer type is fixed to SPANNABLE. 4159fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * 4160fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * @param tv the text view 4161fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * @param content the content 4162fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su */ 4163fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private void setSpannableText(final TextView tv, final String content) { 4164fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 4165fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 4166fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su tv.setText(content, BufferType.SPANNABLE); 4167fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4168fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 4169fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 4170fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4171fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4172fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private void setLines(final int lines) { 4173fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 4174fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 4175fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setLines(lines); 4176fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4177fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 4178fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 4179fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4180fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4181fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private void setHorizontallyScrolling(final boolean whether) { 4182fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 4183fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 4184fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setHorizontallyScrolling(whether); 4185fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4186fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 4187fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 4188fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4189fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4190fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private void setWidth(final int pixels) { 4191fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 4192fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 4193fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setWidth(pixels); 4194fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4195fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 4196fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 4197fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4198fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4199fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private void setHeight(final int pixels) { 4200fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 4201fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 4202fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setHeight(pixels); 4203fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4204fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 4205fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 4206fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4207fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4208fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private void setMinEms(final int ems) { 4209fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 4210fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 4211fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setMinEms(ems); 4212fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4213fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 4214fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 4215fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4216fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4217fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private void setMaxEms(final int ems) { 4218fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 4219fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 4220fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setMaxEms(ems); 4221fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4222fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 4223fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 4224fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4225fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4226fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private void setEms(final int ems) { 4227fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 4228fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 4229fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setEms(ems); 4230fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4231fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 4232fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 4233fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4234fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4235fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private void setLineSpacing(final float add, final float mult) { 4236fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mActivity.runOnUiThread(new Runnable() { 4237fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void run() { 4238fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView.setLineSpacing(add, mult); 4239fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4240fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su }); 4241fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mInstrumentation.waitForIdleSync(); 4242fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4243fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4244fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private static abstract class TestSelectedRunnable implements Runnable { 4245fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private TextView mTextView; 4246fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private boolean mIsSelected1; 4247fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private boolean mIsSelected2; 4248fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4249fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public TestSelectedRunnable(TextView textview) { 4250fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = textview; 4251fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4252fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4253fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public boolean getIsSelected1() { 4254fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return mIsSelected1; 4255fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4256fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4257fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public boolean getIsSelected2() { 4258fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return mIsSelected2; 4259fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4260fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4261fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void saveIsSelected1() { 4262fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mIsSelected1 = mTextView.isSelected(); 4263fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4264fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4265fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void saveIsSelected2() { 4266fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mIsSelected2 = mTextView.isSelected(); 4267fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4268fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4269fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4270fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private static abstract class TestLayoutRunnable implements Runnable { 4271fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private TextView mTextView; 4272fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private Layout mLayout; 4273fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4274fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public TestLayoutRunnable(TextView textview) { 4275fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mTextView = textview; 4276fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4277fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4278fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public Layout getLayout() { 4279fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return mLayout; 4280fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4281fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4282fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void saveLayout() { 4283fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mLayout = mTextView.getLayout(); 4284fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4285fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4286fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4287fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private class MockEditableFactory extends Editable.Factory { 4288fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private boolean mhasCalledNewEditable; 4289fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private CharSequence mSource; 4290fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4291fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public boolean hasCalledNewEditable() { 4292fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return mhasCalledNewEditable; 4293fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4294fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4295fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void reset() { 4296fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mhasCalledNewEditable = false; 4297fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mSource = null; 4298fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4299fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4300fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public CharSequence getSource() { 4301fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return mSource; 4302fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4303fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4304fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @Override 4305fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public Editable newEditable(CharSequence source) { 4306fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mhasCalledNewEditable = true; 4307fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mSource = source; 4308fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return super.newEditable(source); 4309fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4310fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4311fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4312fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private class MockSpannableFactory extends Spannable.Factory { 4313fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private boolean mHasCalledNewSpannable; 4314fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private CharSequence mSource; 4315fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4316fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public boolean getNewSpannableCalledCount() { 4317fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return mHasCalledNewSpannable; 4318fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4319fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4320fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void reset() { 4321fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mHasCalledNewSpannable = false; 4322fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mSource = null; 4323fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4324fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4325fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public CharSequence getSource() { 4326fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return mSource; 4327fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4328fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4329fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @Override 4330fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public Spannable newSpannable(CharSequence source) { 4331fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mHasCalledNewSpannable = true; 4332fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mSource = source; 4333fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return super.newSpannable(source); 4334fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4335fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4336fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4337fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private static class MockTextWatcher implements TextWatcher { 4338fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private boolean mHasCalledAfterTextChanged; 4339fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private boolean mHasCalledBeforeTextChanged; 4340fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private boolean mHasOnTextChanged; 4341fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4342fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void reset(){ 4343fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mHasCalledAfterTextChanged = false; 4344fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mHasCalledBeforeTextChanged = false; 4345fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mHasOnTextChanged = false; 4346fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4347fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4348fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public boolean hasCalledAfterTextChanged() { 4349fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return mHasCalledAfterTextChanged; 4350fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4351fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4352fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public boolean hasCalledBeforeTextChanged() { 4353fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return mHasCalledBeforeTextChanged; 4354fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4355fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4356fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public boolean hasCalledOnTextChanged() { 4357fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return mHasOnTextChanged; 4358fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4359fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4360fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void afterTextChanged(Editable s) { 4361fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mHasCalledAfterTextChanged = true; 4362fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4363fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4364fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void beforeTextChanged(CharSequence s, int start, int count, int after) { 4365fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mHasCalledBeforeTextChanged = true; 4366fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4367fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4368fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void onTextChanged(CharSequence s, int start, int before, int count) { 4369fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mHasOnTextChanged = true; 4370fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4371fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4372fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4373fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su /** 4374fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * The listener interface for receiving mockOnLongClick events. The class 4375fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * that is interested in processing a mockOnLongClick event implements this 4376fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * interface, and the object created with that class is registered with a 4377fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * component using the component's 4378fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * <code>addMockOnLongClickListener<code> method. When 4379fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * the mockOnLongClick event occurs, that object's appropriate 4380fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * method is invoked. 4381fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * 4382fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * @see MockOnLongClickEvent 4383fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su */ 4384fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private static class MockOnLongClickListener implements OnLongClickListener { 4385fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private boolean mExpectedOnLongClickResult; 4386fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private boolean mHasLongClicked; 4387fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4388fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su MockOnLongClickListener(boolean result) { 4389fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mExpectedOnLongClickResult = result; 4390fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4391fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4392fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public boolean hasLongClicked() { 4393fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return mHasLongClicked; 4394fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4395fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4396fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public boolean onLongClick(View v) { 4397fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mHasLongClicked = true; 4398fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return mExpectedOnLongClickResult; 4399fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4400fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4401fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4402fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su /** 4403fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * The listener interface for receiving mockOnCreateContextMenu events. The 4404fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * class that is interested in processing a mockOnCreateContextMenu event 4405fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * implements this interface, and the object created with that class is 4406fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * registered with a component using the component's 4407fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * <code>addMockOnCreateContextMenuListener<code> method. When the 4408fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * mockOnCreateContextMenu event occurs, that object's appropriate method is 4409fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * invoked. 4410fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * 4411fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su * @see MockOnCreateContextMenuEvent 4412fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su */ 4413fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private static class MockOnCreateContextMenuListener implements OnCreateContextMenuListener { 4414fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private boolean mIsMenuItemsBlank; 4415fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private boolean mHasCreatedContextMenu; 4416fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4417fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su MockOnCreateContextMenuListener(boolean isBlank) { 4418fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su this.mIsMenuItemsBlank = isBlank; 4419fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4420fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4421fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public boolean hasCreatedContextMenu() { 4422fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return mHasCreatedContextMenu; 4423fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4424fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4425fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void reset() { 4426fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mHasCreatedContextMenu = false; 4427fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4428fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4429fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 4430fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mHasCreatedContextMenu = true; 4431fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su if (!mIsMenuItemsBlank) { 4432fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su menu.add("menu item"); 4433fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4434fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4435fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4436fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4437fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private static class MockTextView extends TextView { 4438fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private boolean mHasCalledOnCreateContextMenu; 4439fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private boolean mHasCalledOnFocusChanged; 4440fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private boolean mHasCalledOnMeasure; 4441fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private boolean mHasCalledOnTextChanged; 4442fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private boolean mHasCalledDrawableStateChanged; 4443fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private boolean mHasCalledOnWindowFocusChanged; 4444fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private boolean mHasCalledOnPrivateIMECommand; 4445fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su private boolean mHasCalledOnKeyMultiple; 4446fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4447fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public boolean hasCalledOnWindowFocusChanged() { 4448fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return mHasCalledOnWindowFocusChanged; 4449fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4450fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4451fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public boolean hasCalledOnCreateContextMenu() { 4452fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return mHasCalledOnCreateContextMenu; 4453fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4454fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4455fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public boolean hasCalledDrawableStateChanged() { 4456fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return mHasCalledDrawableStateChanged; 4457fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4458fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4459fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public boolean hasCalledOnFocusChanged() { 4460fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return mHasCalledOnFocusChanged; 4461fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4462fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4463fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public boolean hasCalledOnMeasure() { 4464fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return mHasCalledOnMeasure; 4465fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4466fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4467fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public boolean hasCalledOnTextChanged() { 4468fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return mHasCalledOnTextChanged; 4469fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4470fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4471fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public boolean hasCalledOnPrivateIMECommand() { 4472fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return mHasCalledOnPrivateIMECommand; 4473fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4474fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4475fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public boolean hasCalledOnKeyMultiple(){ 4476fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return mHasCalledOnKeyMultiple; 4477fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4478fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4479fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public MockTextView(Context context) { 4480fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su super(context); 4481fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4482fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4483fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void reset() { 4484fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mHasCalledOnWindowFocusChanged = false; 4485fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mHasCalledDrawableStateChanged = false; 4486fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mHasCalledOnCreateContextMenu = false; 4487fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mHasCalledOnFocusChanged = false; 4488fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mHasCalledOnMeasure = false; 4489fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mHasCalledOnTextChanged = false; 4490fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mHasCalledOnPrivateIMECommand = false; 4491fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mHasCalledOnKeyMultiple = false; 4492fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4493fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4494fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @Override 4495fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su protected int computeHorizontalScrollRange() { 4496fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return super.computeHorizontalScrollRange(); 4497fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4498fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4499fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @Override 4500fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su protected int computeVerticalScrollRange() { 4501fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return super.computeVerticalScrollRange(); 4502fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4503fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4504fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @Override 4505fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su protected void drawableStateChanged() { 4506fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su super.drawableStateChanged(); 4507fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mHasCalledDrawableStateChanged = true; 4508fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4509fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4510fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @Override 4511fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su protected boolean getDefaultEditable() { 4512fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return super.getDefaultEditable(); 4513fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4514fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4515fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @Override 4516fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su protected MovementMethod getDefaultMovementMethod() { 4517fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return super.getDefaultMovementMethod(); 4518fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4519fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4520fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @Override 4521fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su protected void onCreateContextMenu(ContextMenu menu) { 4522fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su super.onCreateContextMenu(menu); 4523fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mHasCalledOnCreateContextMenu = true; 4524fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4525fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4526fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @Override 4527fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su protected void onDetachedFromWindow() { 4528fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su super.onDetachedFromWindow(); 4529fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4530fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4531fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @Override 4532fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su protected void onDraw(Canvas canvas) { 4533fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su super.onDraw(canvas); 4534fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4535fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4536fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @Override 4537fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { 4538fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su super.onFocusChanged(focused, direction, previouslyFocusedRect); 4539fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mHasCalledOnFocusChanged = true; 4540fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4541fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4542fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @Override 4543fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event) { 4544fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mHasCalledOnKeyMultiple = true; 4545fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return super.onKeyMultiple(keyCode, repeatCount, event); 4546fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4547fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4548fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @Override 4549fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 4550fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su super.onMeasure(widthMeasureSpec, heightMeasureSpec); 4551fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mHasCalledOnMeasure = true; 4552fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4553fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4554fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @Override 4555fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su protected void onTextChanged(CharSequence text, int start, int before, int after) { 4556fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su super.onTextChanged(text, start, before, after); 4557fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mHasCalledOnTextChanged = true; 4558fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4559fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4560fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @Override 4561fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su protected boolean setFrame(int l, int t, int r, int b) { 4562fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return super.setFrame(l, t, r, b); 4563fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4564fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4565fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @Override 4566fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public void onWindowFocusChanged(boolean hasWindowFocus) { 4567fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su super.onWindowFocusChanged(hasWindowFocus); 4568fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mHasCalledOnWindowFocusChanged = true; 4569fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4570fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4571fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @Override 4572fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su protected float getLeftFadingEdgeStrength() { 4573fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return super.getLeftFadingEdgeStrength(); 4574fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4575fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4576fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @Override 4577fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su protected float getRightFadingEdgeStrength() { 4578fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return super.getRightFadingEdgeStrength(); 4579fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4580fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4581fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @Override 4582fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public boolean onPrivateIMECommand(String action, Bundle data) { 4583fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su mHasCalledOnPrivateIMECommand = true; 4584fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return super.onPrivateIMECommand(action, data); 4585fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4586fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4587fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public int getFrameLeft() { 4588fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return mLeft; 4589fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4590fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4591fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public int getFrameTop() { 4592fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return mTop; 4593fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4594fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4595fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public int getFrameRight() { 4596fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return mRight; 4597fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4598fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4599fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su public int getFrameBottom() { 4600fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return mBottom; 4601fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4602fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4603fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @Override 4604fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su protected int getBottomPaddingOffset() { 4605fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return super.getBottomPaddingOffset(); 4606fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4607fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4608fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @Override 4609fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su protected int getLeftPaddingOffset() { 4610fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return super.getLeftPaddingOffset(); 4611fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4612fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4613fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @Override 4614fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su protected int getRightPaddingOffset() { 4615fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return super.getRightPaddingOffset(); 4616fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4617fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4618fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @Override 4619fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su protected int getTopPaddingOffset() { 4620fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return super.getTopPaddingOffset(); 4621fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4622fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su 4623fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su @Override 4624fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su protected boolean isPaddingOffsetRequired() { 4625fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su return super.isPaddingOffsetRequired(); 4626fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 462772b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 462872b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @Override 462972b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach protected boolean verifyDrawable(Drawable who) { 463072b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach return super.verifyDrawable(who); 463172b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach } 463272b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach 463372b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach @Override 463472b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach protected int computeVerticalScrollExtent() { 463572b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach return super.computeVerticalScrollExtent(); 463672b705b4df314c5cb81a9db2347fb6a6f9384b9aPhil Dubach } 4637fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su } 4638fa0bdcfa2bdacc555a6cecd0e5e0ed46afa06970Scott Su} 4639