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 17 package android.widget; 18 19 import android.test.ActivityInstrumentationTestCase2; 20 import android.test.suitebuilder.annotation.SmallTest; 21 import android.text.GetChars; 22 import android.view.View; 23 24 import com.android.frameworks.coretests.R; 25 26 /** 27 * TextViewTest tests {@link TextView}. 28 */ 29 public 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 91 @SmallTest 92 public void testGetResolvedTextDirectionLtr() { 93 TextView tv = new TextView(getActivity()); 94 tv.setText("this is a test"); 95 96 tv.setTextDirection(View.TEXT_DIRECTION_FIRST_STRONG); 97 assertEquals(View.TEXT_DIRECTION_LTR, tv.getResolvedTextDirection()); 98 99 tv.setTextDirection(View.TEXT_DIRECTION_ANY_RTL); 100 assertEquals(View.TEXT_DIRECTION_LTR, tv.getResolvedTextDirection()); 101 102 tv.setTextDirection(View.TEXT_DIRECTION_INHERIT); 103 assertEquals(View.TEXT_DIRECTION_LTR, tv.getResolvedTextDirection()); 104 105 tv.setTextDirection(View.TEXT_DIRECTION_LTR); 106 assertEquals(View.TEXT_DIRECTION_LTR, tv.getResolvedTextDirection()); 107 108 tv.setTextDirection(View.TEXT_DIRECTION_RTL); 109 assertEquals(View.TEXT_DIRECTION_RTL, tv.getResolvedTextDirection()); 110 } 111 112 @SmallTest 113 public void testGetResolvedTextDirectionLtrWithInheritance() { 114 LinearLayout ll = new LinearLayout(getActivity()); 115 ll.setTextDirection(View.TEXT_DIRECTION_RTL); 116 117 TextView tv = new TextView(getActivity()); 118 tv.setText("this is a test"); 119 ll.addView(tv); 120 121 tv.setTextDirection(View.TEXT_DIRECTION_FIRST_STRONG); 122 assertEquals(View.TEXT_DIRECTION_LTR, tv.getResolvedTextDirection()); 123 124 tv.setTextDirection(View.TEXT_DIRECTION_ANY_RTL); 125 assertEquals(View.TEXT_DIRECTION_LTR, tv.getResolvedTextDirection()); 126 127 tv.setTextDirection(View.TEXT_DIRECTION_INHERIT); 128 assertEquals(View.TEXT_DIRECTION_RTL, tv.getResolvedTextDirection()); 129 130 tv.setTextDirection(View.TEXT_DIRECTION_LTR); 131 assertEquals(View.TEXT_DIRECTION_LTR, tv.getResolvedTextDirection()); 132 133 tv.setTextDirection(View.TEXT_DIRECTION_RTL); 134 assertEquals(View.TEXT_DIRECTION_RTL, tv.getResolvedTextDirection()); 135 } 136 137 @SmallTest 138 public void testGetResolvedTextDirectionRtl() { 139 TextView tv = new TextView(getActivity()); 140 tv.setText("\u05DD\u05DE"); // hebrew 141 142 tv.setTextDirection(View.TEXT_DIRECTION_FIRST_STRONG); 143 assertEquals(View.TEXT_DIRECTION_RTL, tv.getResolvedTextDirection()); 144 145 tv.setTextDirection(View.TEXT_DIRECTION_ANY_RTL); 146 assertEquals(View.TEXT_DIRECTION_RTL, tv.getResolvedTextDirection()); 147 148 tv.setTextDirection(View.TEXT_DIRECTION_INHERIT); 149 assertEquals(View.TEXT_DIRECTION_LTR, tv.getResolvedTextDirection()); 150 151 tv.setTextDirection(View.TEXT_DIRECTION_LTR); 152 assertEquals(View.TEXT_DIRECTION_LTR, tv.getResolvedTextDirection()); 153 154 tv.setTextDirection(View.TEXT_DIRECTION_RTL); 155 assertEquals(View.TEXT_DIRECTION_RTL, tv.getResolvedTextDirection()); 156 } 157 158 @SmallTest 159 public void testGetResolvedTextDirectionRtlWithInheritance() { 160 LinearLayout ll = new LinearLayout(getActivity()); 161 162 TextView tv = new TextView(getActivity()); 163 tv.setText("\u05DD\u05DE"); // hebrew 164 ll.addView(tv); 165 166 tv.setTextDirection(View.TEXT_DIRECTION_FIRST_STRONG); 167 assertEquals(View.TEXT_DIRECTION_RTL, tv.getResolvedTextDirection()); 168 169 tv.setTextDirection(View.TEXT_DIRECTION_ANY_RTL); 170 assertEquals(View.TEXT_DIRECTION_RTL, tv.getResolvedTextDirection()); 171 172 tv.setTextDirection(View.TEXT_DIRECTION_INHERIT); 173 assertEquals(View.TEXT_DIRECTION_FIRST_STRONG, tv.getResolvedTextDirection()); 174 175 tv.setTextDirection(View.TEXT_DIRECTION_LTR); 176 assertEquals(View.TEXT_DIRECTION_LTR, tv.getResolvedTextDirection()); 177 178 tv.setTextDirection(View.TEXT_DIRECTION_RTL); 179 assertEquals(View.TEXT_DIRECTION_RTL, tv.getResolvedTextDirection()); 180 181 // Force to RTL text direction on the layout 182 ll.setTextDirection(View.TEXT_DIRECTION_RTL); 183 184 tv.setTextDirection(View.TEXT_DIRECTION_FIRST_STRONG); 185 assertEquals(View.TEXT_DIRECTION_RTL, tv.getResolvedTextDirection()); 186 187 tv.setTextDirection(View.TEXT_DIRECTION_ANY_RTL); 188 assertEquals(View.TEXT_DIRECTION_RTL, tv.getResolvedTextDirection()); 189 190 tv.setTextDirection(View.TEXT_DIRECTION_INHERIT); 191 assertEquals(View.TEXT_DIRECTION_RTL, tv.getResolvedTextDirection()); 192 193 tv.setTextDirection(View.TEXT_DIRECTION_LTR); 194 assertEquals(View.TEXT_DIRECTION_LTR, tv.getResolvedTextDirection()); 195 196 tv.setTextDirection(View.TEXT_DIRECTION_RTL); 197 assertEquals(View.TEXT_DIRECTION_RTL, tv.getResolvedTextDirection()); 198 } 199 200 @SmallTest 201 public void testResetTextDirection() { 202 final TextViewTestActivity activity = getActivity(); 203 204 final LinearLayout ll = (LinearLayout) activity.findViewById(R.id.textviewtest_layout); 205 final TextView tv = (TextView) activity.findViewById(R.id.textviewtest_textview); 206 207 getActivity().runOnUiThread(new Runnable() { 208 public void run() { 209 ll.setTextDirection(View.TEXT_DIRECTION_RTL); 210 tv.setTextDirection(View.TEXT_DIRECTION_INHERIT); 211 assertEquals(View.TEXT_DIRECTION_RTL, tv.getResolvedTextDirection()); 212 213 ll.removeView(tv); 214 assertEquals(View.TEXT_DIRECTION_FIRST_STRONG, tv.getResolvedTextDirection()); 215 } 216 }); 217 } 218 } 219