171eb6908f2689bd17000237eb645896c36da0138George Mount/* 271eb6908f2689bd17000237eb645896c36da0138George Mount * Copyright (C) 2015 The Android Open Source Project 371eb6908f2689bd17000237eb645896c36da0138George Mount * 471eb6908f2689bd17000237eb645896c36da0138George Mount * Licensed under the Apache License, Version 2.0 (the "License"); 571eb6908f2689bd17000237eb645896c36da0138George Mount * you may not use this file except in compliance with the License. 671eb6908f2689bd17000237eb645896c36da0138George Mount * You may obtain a copy of the License at 771eb6908f2689bd17000237eb645896c36da0138George Mount * 871eb6908f2689bd17000237eb645896c36da0138George Mount * http://www.apache.org/licenses/LICENSE-2.0 971eb6908f2689bd17000237eb645896c36da0138George Mount * 1071eb6908f2689bd17000237eb645896c36da0138George Mount * Unless required by applicable law or agreed to in writing, software 1171eb6908f2689bd17000237eb645896c36da0138George Mount * distributed under the License is distributed on an "AS IS" BASIS, 1271eb6908f2689bd17000237eb645896c36da0138George Mount * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1371eb6908f2689bd17000237eb645896c36da0138George Mount * See the License for the specific language governing permissions and 1471eb6908f2689bd17000237eb645896c36da0138George Mount * limitations under the License. 1571eb6908f2689bd17000237eb645896c36da0138George Mount */ 16fead9ca09b117136b35bc5bf137340a754f9edddGeorge Mountpackage android.databinding.testapp; 1771eb6908f2689bd17000237eb645896c36da0138George Mount 182e2043d30f95585de2069e1cbb23e022ab0e71c4George Mountimport android.databinding.testapp.databinding.TextViewAdapterTestBinding; 19fead9ca09b117136b35bc5bf137340a754f9edddGeorge Mountimport android.databinding.testapp.vo.TextViewBindingObject; 2071eb6908f2689bd17000237eb645896c36da0138George Mount 2171eb6908f2689bd17000237eb645896c36da0138George Mountimport android.annotation.TargetApi; 22fead9ca09b117136b35bc5bf137340a754f9edddGeorge Mountimport android.databinding.adapters.TextViewBindingAdapter; 2371eb6908f2689bd17000237eb645896c36da0138George Mountimport android.graphics.drawable.ColorDrawable; 2471eb6908f2689bd17000237eb645896c36da0138George Mountimport android.os.Build; 25d0bb3f1e1a94747bb3dd8bd2fee315d8816f0f5dGeorge Mountimport android.test.UiThreadTest; 2671eb6908f2689bd17000237eb645896c36da0138George Mountimport android.text.Editable; 2771eb6908f2689bd17000237eb645896c36da0138George Mountimport android.text.InputFilter; 2871eb6908f2689bd17000237eb645896c36da0138George Mountimport android.text.InputType; 2971eb6908f2689bd17000237eb645896c36da0138George Mountimport android.text.Spannable; 3071eb6908f2689bd17000237eb645896c36da0138George Mountimport android.text.method.DialerKeyListener; 3171eb6908f2689bd17000237eb645896c36da0138George Mountimport android.text.method.DigitsKeyListener; 3271eb6908f2689bd17000237eb645896c36da0138George Mountimport android.text.method.KeyListener; 3371eb6908f2689bd17000237eb645896c36da0138George Mountimport android.text.method.TextKeyListener; 3471eb6908f2689bd17000237eb645896c36da0138George Mountimport android.widget.TextView; 3571eb6908f2689bd17000237eb645896c36da0138George Mount 3671eb6908f2689bd17000237eb645896c36da0138George Mountpublic class TextViewBindingAdapterTest 374c5cc009bcbcfb19e33fb19db5ec80f83f7b3326George Mount extends BindingAdapterTestBase<TextViewAdapterTestBinding, TextViewBindingObject> { 3871eb6908f2689bd17000237eb645896c36da0138George Mount 3971eb6908f2689bd17000237eb645896c36da0138George Mount public TextViewBindingAdapterTest() { 404c5cc009bcbcfb19e33fb19db5ec80f83f7b3326George Mount super(TextViewAdapterTestBinding.class, TextViewBindingObject.class, 4171eb6908f2689bd17000237eb645896c36da0138George Mount R.layout.text_view_adapter_test); 4271eb6908f2689bd17000237eb645896c36da0138George Mount } 4371eb6908f2689bd17000237eb645896c36da0138George Mount 4471eb6908f2689bd17000237eb645896c36da0138George Mount public void testNumeric() throws Throwable { 4534a18e6a231f3b64726bd93e7e097a0d5a75995dGeorge Mount TextView view = mBinder.numericText; 4671eb6908f2689bd17000237eb645896c36da0138George Mount assertTrue(view.getKeyListener() instanceof DigitsKeyListener); 4771eb6908f2689bd17000237eb645896c36da0138George Mount DigitsKeyListener listener = (DigitsKeyListener) view.getKeyListener(); 4871eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(getExpectedNumericType(), listener.getInputType()); 4971eb6908f2689bd17000237eb645896c36da0138George Mount 5071eb6908f2689bd17000237eb645896c36da0138George Mount changeValues(); 5171eb6908f2689bd17000237eb645896c36da0138George Mount 5271eb6908f2689bd17000237eb645896c36da0138George Mount assertTrue(view.getKeyListener() instanceof DigitsKeyListener); 5371eb6908f2689bd17000237eb645896c36da0138George Mount listener = (DigitsKeyListener) view.getKeyListener(); 5471eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(getExpectedNumericType(), listener.getInputType()); 5571eb6908f2689bd17000237eb645896c36da0138George Mount } 5671eb6908f2689bd17000237eb645896c36da0138George Mount 5771eb6908f2689bd17000237eb645896c36da0138George Mount private int getExpectedNumericType() { 5871eb6908f2689bd17000237eb645896c36da0138George Mount int expectedType = InputType.TYPE_CLASS_NUMBER; 5971eb6908f2689bd17000237eb645896c36da0138George Mount if ((mBindingObject.getNumeric() & TextViewBindingAdapter.SIGNED) != 0) { 6071eb6908f2689bd17000237eb645896c36da0138George Mount expectedType |= InputType.TYPE_NUMBER_FLAG_SIGNED; 6171eb6908f2689bd17000237eb645896c36da0138George Mount } 6271eb6908f2689bd17000237eb645896c36da0138George Mount if ((mBindingObject.getNumeric() & TextViewBindingAdapter.DECIMAL) != 0) { 6371eb6908f2689bd17000237eb645896c36da0138George Mount expectedType |= InputType.TYPE_NUMBER_FLAG_DECIMAL; 6471eb6908f2689bd17000237eb645896c36da0138George Mount } 6571eb6908f2689bd17000237eb645896c36da0138George Mount return expectedType; 6671eb6908f2689bd17000237eb645896c36da0138George Mount } 6771eb6908f2689bd17000237eb645896c36da0138George Mount 6871eb6908f2689bd17000237eb645896c36da0138George Mount public void testDrawables() throws Throwable { 6971eb6908f2689bd17000237eb645896c36da0138George Mount if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 7034a18e6a231f3b64726bd93e7e097a0d5a75995dGeorge Mount TextView view = mBinder.textDrawableNormal; 7171eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getDrawableLeft(), 7271eb6908f2689bd17000237eb645896c36da0138George Mount ((ColorDrawable) view.getCompoundDrawables()[0]).getColor()); 7371eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getDrawableTop(), 7471eb6908f2689bd17000237eb645896c36da0138George Mount ((ColorDrawable) view.getCompoundDrawables()[1]).getColor()); 7571eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getDrawableRight(), 7671eb6908f2689bd17000237eb645896c36da0138George Mount ((ColorDrawable) view.getCompoundDrawables()[2]).getColor()); 7771eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getDrawableBottom(), 7871eb6908f2689bd17000237eb645896c36da0138George Mount ((ColorDrawable) view.getCompoundDrawables()[3]).getColor()); 7971eb6908f2689bd17000237eb645896c36da0138George Mount 8071eb6908f2689bd17000237eb645896c36da0138George Mount changeValues(); 8171eb6908f2689bd17000237eb645896c36da0138George Mount 8271eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getDrawableLeft(), 8371eb6908f2689bd17000237eb645896c36da0138George Mount ((ColorDrawable) view.getCompoundDrawables()[0]).getColor()); 8471eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getDrawableTop(), 8571eb6908f2689bd17000237eb645896c36da0138George Mount ((ColorDrawable) view.getCompoundDrawables()[1]).getColor()); 8671eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getDrawableRight(), 8771eb6908f2689bd17000237eb645896c36da0138George Mount ((ColorDrawable) view.getCompoundDrawables()[2]).getColor()); 8871eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getDrawableBottom(), 8971eb6908f2689bd17000237eb645896c36da0138George Mount ((ColorDrawable) view.getCompoundDrawables()[3]).getColor()); 9071eb6908f2689bd17000237eb645896c36da0138George Mount } 9171eb6908f2689bd17000237eb645896c36da0138George Mount } 9271eb6908f2689bd17000237eb645896c36da0138George Mount 9371eb6908f2689bd17000237eb645896c36da0138George Mount public void testDrawableStartEnd() throws Throwable { 9471eb6908f2689bd17000237eb645896c36da0138George Mount if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { 9534a18e6a231f3b64726bd93e7e097a0d5a75995dGeorge Mount TextView view = mBinder.textDrawableStartEnd; 9671eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getDrawableStart(), 9771eb6908f2689bd17000237eb645896c36da0138George Mount ((ColorDrawable) view.getCompoundDrawablesRelative()[0]).getColor()); 9871eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getDrawableEnd(), 9971eb6908f2689bd17000237eb645896c36da0138George Mount ((ColorDrawable) view.getCompoundDrawablesRelative()[2]).getColor()); 10071eb6908f2689bd17000237eb645896c36da0138George Mount 10171eb6908f2689bd17000237eb645896c36da0138George Mount changeValues(); 10271eb6908f2689bd17000237eb645896c36da0138George Mount 10371eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getDrawableStart(), 10471eb6908f2689bd17000237eb645896c36da0138George Mount ((ColorDrawable) view.getCompoundDrawablesRelative()[0]).getColor()); 10571eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getDrawableEnd(), 10671eb6908f2689bd17000237eb645896c36da0138George Mount ((ColorDrawable) view.getCompoundDrawablesRelative()[2]).getColor()); 10771eb6908f2689bd17000237eb645896c36da0138George Mount } 10871eb6908f2689bd17000237eb645896c36da0138George Mount } 10971eb6908f2689bd17000237eb645896c36da0138George Mount 11071eb6908f2689bd17000237eb645896c36da0138George Mount public void testSimpleProperties() throws Throwable { 11134a18e6a231f3b64726bd93e7e097a0d5a75995dGeorge Mount TextView view = mBinder.textView; 11271eb6908f2689bd17000237eb645896c36da0138George Mount 11371eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getAutoLink(), view.getAutoLinkMask()); 11471eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getDrawablePadding(), view.getCompoundDrawablePadding()); 11571eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getTextSize(), view.getTextSize()); 11671eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getTextColorHint(), view.getHintTextColors().getDefaultColor()); 11771eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getTextColorLink(), view.getLinkTextColors().getDefaultColor()); 11871eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.isAutoText(), isAutoTextEnabled(view)); 11971eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getCapitalize(), getCapitalization(view)); 12071eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getImeActionLabel(), view.getImeActionLabel()); 12171eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getImeActionId(), view.getImeActionId()); 12271eb6908f2689bd17000237eb645896c36da0138George Mount if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { 12371eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getTextColorHighlight(), view.getHighlightColor()); 12471eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getLineSpacingExtra(), view.getLineSpacingExtra()); 12571eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getLineSpacingMultiplier(), 12671eb6908f2689bd17000237eb645896c36da0138George Mount view.getLineSpacingMultiplier()); 12771eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getShadowColor(), view.getShadowColor()); 12871eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getShadowDx(), view.getShadowDx()); 12971eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getShadowDy(), view.getShadowDy()); 13071eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getShadowRadius(), view.getShadowRadius()); 13171eb6908f2689bd17000237eb645896c36da0138George Mount if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 13271eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getMaxLength(), getMaxLength(view)); 13371eb6908f2689bd17000237eb645896c36da0138George Mount } 13471eb6908f2689bd17000237eb645896c36da0138George Mount } 13571eb6908f2689bd17000237eb645896c36da0138George Mount 13671eb6908f2689bd17000237eb645896c36da0138George Mount changeValues(); 13771eb6908f2689bd17000237eb645896c36da0138George Mount 13871eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getAutoLink(), view.getAutoLinkMask()); 13971eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getDrawablePadding(), view.getCompoundDrawablePadding()); 14071eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getTextSize(), view.getTextSize()); 14171eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getTextColorHint(), view.getHintTextColors().getDefaultColor()); 14271eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getTextColorLink(), view.getLinkTextColors().getDefaultColor()); 14371eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.isAutoText(), isAutoTextEnabled(view)); 14471eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getCapitalize(), getCapitalization(view)); 14571eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getImeActionLabel(), view.getImeActionLabel()); 14671eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getImeActionId(), view.getImeActionId()); 14771eb6908f2689bd17000237eb645896c36da0138George Mount if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { 14871eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getTextColorHighlight(), view.getHighlightColor()); 14971eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getLineSpacingExtra(), view.getLineSpacingExtra()); 15071eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getLineSpacingMultiplier(), 15171eb6908f2689bd17000237eb645896c36da0138George Mount view.getLineSpacingMultiplier()); 15271eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getShadowColor(), view.getShadowColor()); 15371eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getShadowDx(), view.getShadowDx()); 15471eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getShadowDy(), view.getShadowDy()); 15571eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getShadowRadius(), view.getShadowRadius()); 15671eb6908f2689bd17000237eb645896c36da0138George Mount if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 15771eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getMaxLength(), getMaxLength(view)); 15871eb6908f2689bd17000237eb645896c36da0138George Mount } 15971eb6908f2689bd17000237eb645896c36da0138George Mount } 16071eb6908f2689bd17000237eb645896c36da0138George Mount 16171eb6908f2689bd17000237eb645896c36da0138George Mount runTestOnUiThread(new Runnable() { 16271eb6908f2689bd17000237eb645896c36da0138George Mount @Override 16371eb6908f2689bd17000237eb645896c36da0138George Mount public void run() { 16471eb6908f2689bd17000237eb645896c36da0138George Mount mBindingObject.setCapitalize(TextKeyListener.Capitalize.CHARACTERS); 1654c5cc009bcbcfb19e33fb19db5ec80f83f7b3326George Mount mBinder.executePendingBindings(); 16671eb6908f2689bd17000237eb645896c36da0138George Mount } 16771eb6908f2689bd17000237eb645896c36da0138George Mount }); 16871eb6908f2689bd17000237eb645896c36da0138George Mount 16971eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getCapitalize(), getCapitalization(view)); 17071eb6908f2689bd17000237eb645896c36da0138George Mount 17171eb6908f2689bd17000237eb645896c36da0138George Mount runTestOnUiThread(new Runnable() { 17271eb6908f2689bd17000237eb645896c36da0138George Mount @Override 17371eb6908f2689bd17000237eb645896c36da0138George Mount public void run() { 17471eb6908f2689bd17000237eb645896c36da0138George Mount mBindingObject.setCapitalize(TextKeyListener.Capitalize.WORDS); 1754c5cc009bcbcfb19e33fb19db5ec80f83f7b3326George Mount mBinder.executePendingBindings(); 17671eb6908f2689bd17000237eb645896c36da0138George Mount } 17771eb6908f2689bd17000237eb645896c36da0138George Mount }); 17871eb6908f2689bd17000237eb645896c36da0138George Mount 17971eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getCapitalize(), getCapitalization(view)); 18071eb6908f2689bd17000237eb645896c36da0138George Mount } 18171eb6908f2689bd17000237eb645896c36da0138George Mount 18271eb6908f2689bd17000237eb645896c36da0138George Mount private static boolean isAutoTextEnabled(TextView view) { 18371eb6908f2689bd17000237eb645896c36da0138George Mount KeyListener keyListener = view.getKeyListener(); 18471eb6908f2689bd17000237eb645896c36da0138George Mount if (keyListener == null) { 18571eb6908f2689bd17000237eb645896c36da0138George Mount return false; 18671eb6908f2689bd17000237eb645896c36da0138George Mount } 18771eb6908f2689bd17000237eb645896c36da0138George Mount if (!(keyListener instanceof TextKeyListener)) { 18871eb6908f2689bd17000237eb645896c36da0138George Mount return false; 18971eb6908f2689bd17000237eb645896c36da0138George Mount } 19071eb6908f2689bd17000237eb645896c36da0138George Mount TextKeyListener textKeyListener = (TextKeyListener) keyListener; 19171eb6908f2689bd17000237eb645896c36da0138George Mount return ((textKeyListener.getInputType() & InputType.TYPE_TEXT_FLAG_AUTO_CORRECT) != 0); 19271eb6908f2689bd17000237eb645896c36da0138George Mount } 19371eb6908f2689bd17000237eb645896c36da0138George Mount 19471eb6908f2689bd17000237eb645896c36da0138George Mount private static TextKeyListener.Capitalize getCapitalization(TextView view) { 19571eb6908f2689bd17000237eb645896c36da0138George Mount KeyListener keyListener = view.getKeyListener(); 19671eb6908f2689bd17000237eb645896c36da0138George Mount if (keyListener == null) { 19771eb6908f2689bd17000237eb645896c36da0138George Mount return TextKeyListener.Capitalize.NONE; 19871eb6908f2689bd17000237eb645896c36da0138George Mount } 19971eb6908f2689bd17000237eb645896c36da0138George Mount int inputType = keyListener.getInputType(); 20071eb6908f2689bd17000237eb645896c36da0138George Mount if ((inputType & InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS) != 0) { 20171eb6908f2689bd17000237eb645896c36da0138George Mount return TextKeyListener.Capitalize.CHARACTERS; 20271eb6908f2689bd17000237eb645896c36da0138George Mount } else if ((inputType & InputType.TYPE_TEXT_FLAG_CAP_WORDS) != 0) { 20371eb6908f2689bd17000237eb645896c36da0138George Mount return TextKeyListener.Capitalize.WORDS; 20471eb6908f2689bd17000237eb645896c36da0138George Mount } else if ((inputType & InputType.TYPE_TEXT_FLAG_CAP_SENTENCES) != 0) { 20571eb6908f2689bd17000237eb645896c36da0138George Mount return TextKeyListener.Capitalize.SENTENCES; 20671eb6908f2689bd17000237eb645896c36da0138George Mount } else { 20771eb6908f2689bd17000237eb645896c36da0138George Mount return TextKeyListener.Capitalize.NONE; 20871eb6908f2689bd17000237eb645896c36da0138George Mount } 20971eb6908f2689bd17000237eb645896c36da0138George Mount } 21071eb6908f2689bd17000237eb645896c36da0138George Mount 21171eb6908f2689bd17000237eb645896c36da0138George Mount @TargetApi(Build.VERSION_CODES.LOLLIPOP) 21271eb6908f2689bd17000237eb645896c36da0138George Mount private static int getMaxLength(TextView view) { 21371eb6908f2689bd17000237eb645896c36da0138George Mount InputFilter[] filters = view.getFilters(); 21471eb6908f2689bd17000237eb645896c36da0138George Mount for (InputFilter filter : filters) { 21571eb6908f2689bd17000237eb645896c36da0138George Mount if (filter instanceof InputFilter.LengthFilter) { 21671eb6908f2689bd17000237eb645896c36da0138George Mount InputFilter.LengthFilter lengthFilter = (InputFilter.LengthFilter) filter; 21771eb6908f2689bd17000237eb645896c36da0138George Mount return lengthFilter.getMax(); 21871eb6908f2689bd17000237eb645896c36da0138George Mount } 21971eb6908f2689bd17000237eb645896c36da0138George Mount } 22071eb6908f2689bd17000237eb645896c36da0138George Mount return -1; 22171eb6908f2689bd17000237eb645896c36da0138George Mount } 22271eb6908f2689bd17000237eb645896c36da0138George Mount 22371eb6908f2689bd17000237eb645896c36da0138George Mount public void testAllCaps() throws Throwable { 22434a18e6a231f3b64726bd93e7e097a0d5a75995dGeorge Mount TextView view = mBinder.textAllCaps; 22571eb6908f2689bd17000237eb645896c36da0138George Mount 22671eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.isTextAllCaps(), view.getTransformationMethod() != null); 22771eb6908f2689bd17000237eb645896c36da0138George Mount if (view.getTransformationMethod() != null) { 22871eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals("ALL CAPS", 22971eb6908f2689bd17000237eb645896c36da0138George Mount view.getTransformationMethod().getTransformation("all caps", view)); 23071eb6908f2689bd17000237eb645896c36da0138George Mount } 23171eb6908f2689bd17000237eb645896c36da0138George Mount 23271eb6908f2689bd17000237eb645896c36da0138George Mount changeValues(); 23371eb6908f2689bd17000237eb645896c36da0138George Mount 23471eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.isTextAllCaps(), view.getTransformationMethod() != null); 23571eb6908f2689bd17000237eb645896c36da0138George Mount if (view.getTransformationMethod() != null) { 23671eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals("ALL CAPS", 23771eb6908f2689bd17000237eb645896c36da0138George Mount view.getTransformationMethod().getTransformation("all caps", view)); 23871eb6908f2689bd17000237eb645896c36da0138George Mount } 23971eb6908f2689bd17000237eb645896c36da0138George Mount } 24071eb6908f2689bd17000237eb645896c36da0138George Mount 24171eb6908f2689bd17000237eb645896c36da0138George Mount public void testBufferType() throws Throwable { 24234a18e6a231f3b64726bd93e7e097a0d5a75995dGeorge Mount TextView view = mBinder.textBufferType; 24371eb6908f2689bd17000237eb645896c36da0138George Mount 24471eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getBufferType(), getBufferType(view)); 24571eb6908f2689bd17000237eb645896c36da0138George Mount changeValues(); 24671eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getBufferType(), getBufferType(view)); 24771eb6908f2689bd17000237eb645896c36da0138George Mount } 24871eb6908f2689bd17000237eb645896c36da0138George Mount 24971eb6908f2689bd17000237eb645896c36da0138George Mount private static TextView.BufferType getBufferType(TextView view) { 25071eb6908f2689bd17000237eb645896c36da0138George Mount CharSequence text = view.getText(); 25171eb6908f2689bd17000237eb645896c36da0138George Mount if (text instanceof Editable) { 25271eb6908f2689bd17000237eb645896c36da0138George Mount return TextView.BufferType.EDITABLE; 25371eb6908f2689bd17000237eb645896c36da0138George Mount } 25471eb6908f2689bd17000237eb645896c36da0138George Mount if (text instanceof Spannable) { 25571eb6908f2689bd17000237eb645896c36da0138George Mount return TextView.BufferType.SPANNABLE; 25671eb6908f2689bd17000237eb645896c36da0138George Mount } 25771eb6908f2689bd17000237eb645896c36da0138George Mount return TextView.BufferType.NORMAL; 25871eb6908f2689bd17000237eb645896c36da0138George Mount } 25971eb6908f2689bd17000237eb645896c36da0138George Mount 26071eb6908f2689bd17000237eb645896c36da0138George Mount public void testInputType() throws Throwable { 26134a18e6a231f3b64726bd93e7e097a0d5a75995dGeorge Mount TextView view = mBinder.textInputType; 26271eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getInputType(), view.getInputType()); 26371eb6908f2689bd17000237eb645896c36da0138George Mount changeValues(); 26471eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getInputType(), view.getInputType()); 26571eb6908f2689bd17000237eb645896c36da0138George Mount } 26671eb6908f2689bd17000237eb645896c36da0138George Mount 26771eb6908f2689bd17000237eb645896c36da0138George Mount public void testDigits() throws Throwable { 26834a18e6a231f3b64726bd93e7e097a0d5a75995dGeorge Mount TextView view = mBinder.textDigits; 26971eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getDigits(), getDigits(view)); 27071eb6908f2689bd17000237eb645896c36da0138George Mount changeValues(); 27171eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.getDigits(), getDigits(view)); 27271eb6908f2689bd17000237eb645896c36da0138George Mount } 27371eb6908f2689bd17000237eb645896c36da0138George Mount 27471eb6908f2689bd17000237eb645896c36da0138George Mount private static String getDigits(TextView textView) { 27571eb6908f2689bd17000237eb645896c36da0138George Mount KeyListener keyListener = textView.getKeyListener(); 27671eb6908f2689bd17000237eb645896c36da0138George Mount if (!(keyListener instanceof DigitsKeyListener)) { 27771eb6908f2689bd17000237eb645896c36da0138George Mount return null; 27871eb6908f2689bd17000237eb645896c36da0138George Mount } 27971eb6908f2689bd17000237eb645896c36da0138George Mount DigitsKeyListener digitsKeyListener = (DigitsKeyListener) keyListener; 28071eb6908f2689bd17000237eb645896c36da0138George Mount String input = "abcdefghijklmnopqrstuvwxyz"; 28171eb6908f2689bd17000237eb645896c36da0138George Mount Spannable spannable = Spannable.Factory.getInstance().newSpannable(input); 28271eb6908f2689bd17000237eb645896c36da0138George Mount return digitsKeyListener.filter(input, 0, input.length(), spannable, 0, input.length()) 28371eb6908f2689bd17000237eb645896c36da0138George Mount .toString(); 28471eb6908f2689bd17000237eb645896c36da0138George Mount } 28571eb6908f2689bd17000237eb645896c36da0138George Mount 28671eb6908f2689bd17000237eb645896c36da0138George Mount public void testPhoneNumber() throws Throwable { 28734a18e6a231f3b64726bd93e7e097a0d5a75995dGeorge Mount TextView textView = mBinder.textPhoneNumber; 28871eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.isPhoneNumber(), isPhoneNumber(textView)); 28971eb6908f2689bd17000237eb645896c36da0138George Mount changeValues(); 29071eb6908f2689bd17000237eb645896c36da0138George Mount assertEquals(mBindingObject.isPhoneNumber(), isPhoneNumber(textView)); 29171eb6908f2689bd17000237eb645896c36da0138George Mount } 29271eb6908f2689bd17000237eb645896c36da0138George Mount 29371eb6908f2689bd17000237eb645896c36da0138George Mount private static boolean isPhoneNumber(TextView view) { 29471eb6908f2689bd17000237eb645896c36da0138George Mount KeyListener keyListener = view.getKeyListener(); 29571eb6908f2689bd17000237eb645896c36da0138George Mount return (keyListener instanceof DialerKeyListener); 29671eb6908f2689bd17000237eb645896c36da0138George Mount } 29771eb6908f2689bd17000237eb645896c36da0138George Mount 29871eb6908f2689bd17000237eb645896c36da0138George Mount public void testInputMethod() throws Throwable { 29934a18e6a231f3b64726bd93e7e097a0d5a75995dGeorge Mount TextView textView = mBinder.textInputMethod; 30071eb6908f2689bd17000237eb645896c36da0138George Mount assertTrue(TextViewBindingObject.KeyListener1.class.isInstance(textView.getKeyListener())); 30171eb6908f2689bd17000237eb645896c36da0138George Mount changeValues(); 30271eb6908f2689bd17000237eb645896c36da0138George Mount assertTrue(TextViewBindingObject.KeyListener2.class.isInstance(textView.getKeyListener())); 30371eb6908f2689bd17000237eb645896c36da0138George Mount } 30471eb6908f2689bd17000237eb645896c36da0138George Mount 305d0bb3f1e1a94747bb3dd8bd2fee315d8816f0f5dGeorge Mount @UiThreadTest 306d0bb3f1e1a94747bb3dd8bd2fee315d8816f0f5dGeorge Mount public void testTextWithTheme() throws Throwable { 307d0bb3f1e1a94747bb3dd8bd2fee315d8816f0f5dGeorge Mount TextView textView = mBinder.textWithTheme; 308d0bb3f1e1a94747bb3dd8bd2fee315d8816f0f5dGeorge Mount assertNotNull(textView.getTextColors()); 309d0bb3f1e1a94747bb3dd8bd2fee315d8816f0f5dGeorge Mount } 310d0bb3f1e1a94747bb3dd8bd2fee315d8816f0f5dGeorge Mount 31199d74030fe5856572bd4b569bc04d2a11258f202George Mount @UiThreadTest 31299d74030fe5856572bd4b569bc04d2a11258f202George Mount public void testTextWithColor() throws Throwable { 31399d74030fe5856572bd4b569bc04d2a11258f202George Mount TextView textView = mBinder.textWithColor; 31499d74030fe5856572bd4b569bc04d2a11258f202George Mount int expectedColor = mBinder.getRoot().getResources().getColor( 31599d74030fe5856572bd4b569bc04d2a11258f202George Mount android.R.color.holo_blue_bright); 31699d74030fe5856572bd4b569bc04d2a11258f202George Mount assertEquals(expectedColor, textView.getCurrentTextColor()); 31799d74030fe5856572bd4b569bc04d2a11258f202George Mount } 31871eb6908f2689bd17000237eb645896c36da0138George Mount} 319