Home | History | Annotate | Download | only in widget
      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