TextViewTest.java revision 4c1e00a8c29e532a5b0fce755bead691797eff94
1/* 2 * Copyright (C) 2008 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package android.widget; 18 19import android.test.ActivityInstrumentationTestCase2; 20import android.test.suitebuilder.annotation.SmallTest; 21import android.text.GetChars; 22import android.view.View; 23 24import com.android.frameworks.coretests.R; 25 26/** 27 * TextViewTest tests {@link TextView}. 28 */ 29public class TextViewTest extends ActivityInstrumentationTestCase2<TextViewTestActivity> { 30 31 public TextViewTest() { 32 super(TextViewTestActivity.class); 33 } 34 35 @SmallTest 36 public void testArray() throws Exception { 37 TextView tv = new TextView(getActivity()); 38 39 char[] c = new char[] { 'H', 'e', 'l', 'l', 'o', ' ', 40 'W', 'o', 'r', 'l', 'd', '!' }; 41 42 tv.setText(c, 1, 4); 43 CharSequence oldText = tv.getText(); 44 45 tv.setText(c, 4, 5); 46 CharSequence newText = tv.getText(); 47 48 assertTrue(newText == oldText); 49 50 assertEquals(5, newText.length()); 51 assertEquals('o', newText.charAt(0)); 52 assertEquals("o Wor", newText.toString()); 53 54 assertEquals(" Wo", newText.subSequence(1, 4)); 55 56 char[] c2 = new char[7]; 57 ((GetChars) newText).getChars(1, 4, c2, 2); 58 assertEquals('\0', c2[1]); 59 assertEquals(' ', c2[2]); 60 assertEquals('W', c2[3]); 61 assertEquals('o', c2[4]); 62 assertEquals('\0', c2[5]); 63 } 64 65 @SmallTest 66 public void testTextDirectionDefault() { 67 TextView tv = new TextView(getActivity()); 68 assertEquals(View.TEXT_DIRECTION_INHERIT, tv.getTextDirection()); 69 } 70 71 @SmallTest 72 public void testSetGetTextDirection() { 73 TextView tv = new TextView(getActivity()); 74 75 tv.setTextDirection(View.TEXT_DIRECTION_FIRST_STRONG); 76 assertEquals(View.TEXT_DIRECTION_FIRST_STRONG, tv.getTextDirection()); 77 78 tv.setTextDirection(View.TEXT_DIRECTION_ANY_RTL); 79 assertEquals(View.TEXT_DIRECTION_ANY_RTL, tv.getTextDirection()); 80 81 tv.setTextDirection(View.TEXT_DIRECTION_INHERIT); 82 assertEquals(View.TEXT_DIRECTION_INHERIT, tv.getTextDirection()); 83 84 tv.setTextDirection(View.TEXT_DIRECTION_LTR); 85 assertEquals(View.TEXT_DIRECTION_LTR, tv.getTextDirection()); 86 87 tv.setTextDirection(View.TEXT_DIRECTION_RTL); 88 assertEquals(View.TEXT_DIRECTION_RTL, tv.getTextDirection()); 89 90 tv.setTextDirection(View.TEXT_DIRECTION_LOCALE); 91 assertEquals(View.TEXT_DIRECTION_LOCALE, tv.getTextDirection()); 92 } 93 94 @SmallTest 95 public void testGetResolvedTextDirectionLtr() { 96 TextView tv = new TextView(getActivity()); 97 tv.setText("this is a test"); 98 99 assertEquals(View.TEXT_DIRECTION_FIRST_STRONG, tv.getResolvedTextDirection()); 100 101 tv.setTextDirection(View.TEXT_DIRECTION_FIRST_STRONG); 102 assertEquals(View.TEXT_DIRECTION_FIRST_STRONG, tv.getResolvedTextDirection()); 103 104 tv.setTextDirection(View.TEXT_DIRECTION_ANY_RTL); 105 assertEquals(View.TEXT_DIRECTION_ANY_RTL, tv.getResolvedTextDirection()); 106 107 tv.setTextDirection(View.TEXT_DIRECTION_INHERIT); 108 assertEquals(View.TEXT_DIRECTION_FIRST_STRONG, tv.getResolvedTextDirection()); 109 110 tv.setTextDirection(View.TEXT_DIRECTION_LTR); 111 assertEquals(View.TEXT_DIRECTION_LTR, tv.getResolvedTextDirection()); 112 113 tv.setTextDirection(View.TEXT_DIRECTION_RTL); 114 assertEquals(View.TEXT_DIRECTION_RTL, tv.getResolvedTextDirection()); 115 116 tv.setTextDirection(View.TEXT_DIRECTION_LOCALE); 117 assertEquals(View.TEXT_DIRECTION_LOCALE, tv.getResolvedTextDirection()); 118 } 119 120 @SmallTest 121 public void testGetResolvedTextDirectionLtrWithInheritance() { 122 LinearLayout ll = new LinearLayout(getActivity()); 123 ll.setTextDirection(View.TEXT_DIRECTION_ANY_RTL); 124 125 TextView tv = new TextView(getActivity()); 126 tv.setText("this is a test"); 127 ll.addView(tv); 128 129 tv.setTextDirection(View.TEXT_DIRECTION_FIRST_STRONG); 130 assertEquals(View.TEXT_DIRECTION_FIRST_STRONG, tv.getResolvedTextDirection()); 131 132 tv.setTextDirection(View.TEXT_DIRECTION_ANY_RTL); 133 assertEquals(View.TEXT_DIRECTION_ANY_RTL, tv.getResolvedTextDirection()); 134 135 tv.setTextDirection(View.TEXT_DIRECTION_INHERIT); 136 assertEquals(View.TEXT_DIRECTION_ANY_RTL, tv.getResolvedTextDirection()); 137 138 tv.setTextDirection(View.TEXT_DIRECTION_LTR); 139 assertEquals(View.TEXT_DIRECTION_LTR, tv.getResolvedTextDirection()); 140 141 tv.setTextDirection(View.TEXT_DIRECTION_RTL); 142 assertEquals(View.TEXT_DIRECTION_RTL, tv.getResolvedTextDirection()); 143 144 tv.setTextDirection(View.TEXT_DIRECTION_LOCALE); 145 assertEquals(View.TEXT_DIRECTION_LOCALE, tv.getResolvedTextDirection()); 146 } 147 148 @SmallTest 149 public void testGetResolvedTextDirectionRtl() { 150 TextView tv = new TextView(getActivity()); 151 tv.setText("\u05DD\u05DE"); // hebrew 152 153 assertEquals(View.TEXT_DIRECTION_FIRST_STRONG, tv.getResolvedTextDirection()); 154 155 tv.setTextDirection(View.TEXT_DIRECTION_FIRST_STRONG); 156 assertEquals(View.TEXT_DIRECTION_FIRST_STRONG, tv.getResolvedTextDirection()); 157 158 tv.setTextDirection(View.TEXT_DIRECTION_ANY_RTL); 159 assertEquals(View.TEXT_DIRECTION_ANY_RTL, tv.getResolvedTextDirection()); 160 161 tv.setTextDirection(View.TEXT_DIRECTION_INHERIT); 162 assertEquals(View.TEXT_DIRECTION_FIRST_STRONG, tv.getResolvedTextDirection()); 163 164 tv.setTextDirection(View.TEXT_DIRECTION_LTR); 165 assertEquals(View.TEXT_DIRECTION_LTR, tv.getResolvedTextDirection()); 166 167 tv.setTextDirection(View.TEXT_DIRECTION_RTL); 168 assertEquals(View.TEXT_DIRECTION_RTL, tv.getResolvedTextDirection()); 169 170 tv.setTextDirection(View.TEXT_DIRECTION_LOCALE); 171 assertEquals(View.TEXT_DIRECTION_LOCALE, tv.getResolvedTextDirection()); 172 } 173 174 @SmallTest 175 public void testGetResolvedTextDirectionRtlWithInheritance() { 176 LinearLayout ll = new LinearLayout(getActivity()); 177 ll.setTextDirection(View.TEXT_DIRECTION_FIRST_STRONG); 178 179 TextView tv = new TextView(getActivity()); 180 tv.setText("\u05DD\u05DE"); // hebrew 181 ll.addView(tv); 182 183 tv.setTextDirection(View.TEXT_DIRECTION_FIRST_STRONG); 184 assertEquals(View.TEXT_DIRECTION_FIRST_STRONG, tv.getResolvedTextDirection()); 185 186 tv.setTextDirection(View.TEXT_DIRECTION_ANY_RTL); 187 assertEquals(View.TEXT_DIRECTION_ANY_RTL, tv.getResolvedTextDirection()); 188 189 tv.setTextDirection(View.TEXT_DIRECTION_INHERIT); 190 assertEquals(View.TEXT_DIRECTION_FIRST_STRONG, tv.getResolvedTextDirection()); 191 192 tv.setTextDirection(View.TEXT_DIRECTION_LTR); 193 assertEquals(View.TEXT_DIRECTION_LTR, tv.getResolvedTextDirection()); 194 195 tv.setTextDirection(View.TEXT_DIRECTION_RTL); 196 assertEquals(View.TEXT_DIRECTION_RTL, tv.getResolvedTextDirection()); 197 198 tv.setTextDirection(View.TEXT_DIRECTION_LOCALE); 199 assertEquals(View.TEXT_DIRECTION_LOCALE, tv.getResolvedTextDirection()); 200 201 // Force to RTL text direction on the layout 202 ll.setTextDirection(View.TEXT_DIRECTION_RTL); 203 204 tv.setTextDirection(View.TEXT_DIRECTION_FIRST_STRONG); 205 assertEquals(View.TEXT_DIRECTION_FIRST_STRONG, tv.getResolvedTextDirection()); 206 207 tv.setTextDirection(View.TEXT_DIRECTION_ANY_RTL); 208 assertEquals(View.TEXT_DIRECTION_ANY_RTL, tv.getResolvedTextDirection()); 209 210 tv.setTextDirection(View.TEXT_DIRECTION_INHERIT); 211 assertEquals(View.TEXT_DIRECTION_RTL, tv.getResolvedTextDirection()); 212 213 tv.setTextDirection(View.TEXT_DIRECTION_LTR); 214 assertEquals(View.TEXT_DIRECTION_LTR, tv.getResolvedTextDirection()); 215 216 tv.setTextDirection(View.TEXT_DIRECTION_RTL); 217 assertEquals(View.TEXT_DIRECTION_RTL, tv.getResolvedTextDirection()); 218 219 tv.setTextDirection(View.TEXT_DIRECTION_LOCALE); 220 assertEquals(View.TEXT_DIRECTION_LOCALE, tv.getResolvedTextDirection()); 221 } 222 223 @SmallTest 224 public void testResetTextDirection() { 225 final TextViewTestActivity activity = getActivity(); 226 227 final LinearLayout ll = (LinearLayout) activity.findViewById(R.id.textviewtest_layout); 228 final TextView tv = (TextView) activity.findViewById(R.id.textviewtest_textview); 229 230 getActivity().runOnUiThread(new Runnable() { 231 public void run() { 232 ll.setTextDirection(View.TEXT_DIRECTION_RTL); 233 tv.setTextDirection(View.TEXT_DIRECTION_INHERIT); 234 assertEquals(View.TEXT_DIRECTION_RTL, tv.getResolvedTextDirection()); 235 236 ll.removeView(tv); 237 assertEquals(View.TEXT_DIRECTION_FIRST_STRONG, tv.getResolvedTextDirection()); 238 } 239 }); 240 } 241} 242