1d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov/* 2d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov * Copyright (C) 2015 The Android Open Source Project 3d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov * 4d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov * Licensed under the Apache License, Version 2.0 (the "License"); 5d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov * you may not use this file except in compliance with the License. 6d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov * You may obtain a copy of the License at 7d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov * 8d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov * http://www.apache.org/licenses/LICENSE-2.0 9d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov * 10d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov * Unless required by applicable law or agreed to in writing, software 11d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov * distributed under the License is distributed on an "AS IS" BASIS, 12d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov * See the License for the specific language governing permissions and 14d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov * limitations under the License. 15d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov */ 16d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov 17d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikovpackage android.support.v4.widget; 18d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov 19754cb29c50f09a83251dd4bb633ba445b2411adbAurimas Liutikasimport static android.support.test.espresso.Espresso.onView; 20754cb29c50f09a83251dd4bb633ba445b2411adbAurimas Liutikasimport static android.support.test.espresso.matcher.ViewMatchers.withId; 21754cb29c50f09a83251dd4bb633ba445b2411adbAurimas Liutikasimport static android.support.v4.testutils.LayoutDirectionActions.setLayoutDirection; 22754cb29c50f09a83251dd4bb633ba445b2411adbAurimas Liutikasimport static android.support.v4.testutils.TextViewActions.setCompoundDrawablesRelative; 234bb57b2c7c5e8fa607119bd5089535d5862cb979Aurimas Liutikasimport static android.support.v4.testutils.TextViewActions 244bb57b2c7c5e8fa607119bd5089535d5862cb979Aurimas Liutikas .setCompoundDrawablesRelativeWithIntrinsicBounds; 25754cb29c50f09a83251dd4bb633ba445b2411adbAurimas Liutikasimport static android.support.v4.testutils.TextViewActions.setMaxLines; 26754cb29c50f09a83251dd4bb633ba445b2411adbAurimas Liutikasimport static android.support.v4.testutils.TextViewActions.setMinLines; 27754cb29c50f09a83251dd4bb633ba445b2411adbAurimas Liutikasimport static android.support.v4.testutils.TextViewActions.setText; 28754cb29c50f09a83251dd4bb633ba445b2411adbAurimas Liutikasimport static android.support.v4.testutils.TextViewActions.setTextAppearance; 29754cb29c50f09a83251dd4bb633ba445b2411adbAurimas Liutikas 30754cb29c50f09a83251dd4bb633ba445b2411adbAurimas Liutikasimport static org.junit.Assert.assertEquals; 31754cb29c50f09a83251dd4bb633ba445b2411adbAurimas Liutikasimport static org.junit.Assert.assertNull; 32754cb29c50f09a83251dd4bb633ba445b2411adbAurimas Liutikasimport static org.junit.Assert.assertTrue; 33754cb29c50f09a83251dd4bb633ba445b2411adbAurimas Liutikas 3492ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikovimport android.content.res.Resources; 35156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikovimport android.graphics.drawable.ColorDrawable; 3639e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikovimport android.graphics.drawable.Drawable; 374d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikovimport android.support.annotation.ColorInt; 38f5ec4487510a0e7226636704860a884f4c1d0ab6Kirill Grouchnikovimport android.support.compat.test.R; 39754cb29c50f09a83251dd4bb633ba445b2411adbAurimas Liutikasimport android.support.test.filters.SmallTest; 4039e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikovimport android.support.v4.BaseInstrumentationTestCase; 414d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikovimport android.support.v4.testutils.TestUtils; 4239e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikovimport android.support.v4.view.ViewCompat; 43d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikovimport android.widget.TextView; 44754cb29c50f09a83251dd4bb633ba445b2411adbAurimas Liutikas 4539e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikovimport org.junit.Before; 4639e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikovimport org.junit.Test; 47d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov 484bb57b2c7c5e8fa607119bd5089535d5862cb979Aurimas Liutikas@SmallTest 4939e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikovpublic class TextViewCompatTest extends BaseInstrumentationTestCase<TextViewTestActivity> { 5092ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov private static final String TAG = "TextViewCompatTest"; 51d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov 5292ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov private TextView mTextView; 53d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov 544d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov private class TestDrawable extends ColorDrawable { 554d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov private int mWidth; 564d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov private int mHeight; 574d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 584d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov public TestDrawable(@ColorInt int color, int width, int height) { 594d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov super(color); 604d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov mWidth = width; 614d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov mHeight = height; 624d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov } 634d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 644d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov @Override 654d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov public int getIntrinsicWidth() { 664d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov return mWidth; 674d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov } 684d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 694d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov @Override 704d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov public int getIntrinsicHeight() { 714d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov return mHeight; 724d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov } 734d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov } 744d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 75d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov public TextViewCompatTest() { 7639e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov super(TextViewTestActivity.class); 77d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov } 78d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov 7939e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov @Before 8039e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov public void setUp() { 8139e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov mTextView = (TextView) mActivityTestRule.getActivity().findViewById(R.id.text_view); 82d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov } 83d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov 8439e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov @Test 85d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov public void testMaxLines() throws Throwable { 8692ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov final int maxLinesCount = 4; 8739e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov onView(withId(R.id.text_view)).perform(setMaxLines(maxLinesCount)); 8892ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov 8992ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov assertEquals("Empty view: Max lines must match", TextViewCompat.getMaxLines(mTextView), 9092ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov maxLinesCount); 9192ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov 9239e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov onView(withId(R.id.text_view)).perform(setText(R.string.test_text_short)); 9392ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov assertEquals("Short text: Max lines must match", TextViewCompat.getMaxLines(mTextView), 9492ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov maxLinesCount); 9592ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov 9639e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov onView(withId(R.id.text_view)).perform(setText(R.string.test_text_medium)); 9792ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov assertEquals("Medium text: Max lines must match", TextViewCompat.getMaxLines(mTextView), 9892ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov maxLinesCount); 9992ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov 10039e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov onView(withId(R.id.text_view)).perform(setText(R.string.test_text_long)); 10192ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov assertEquals("Long text: Max lines must match", TextViewCompat.getMaxLines(mTextView), 10292ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov maxLinesCount); 10392ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov } 10492ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov 10539e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov @Test 10692ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov public void testMinLines() throws Throwable { 10792ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov final int minLinesCount = 3; 10839e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov onView(withId(R.id.text_view)).perform(setMinLines(minLinesCount)); 10992ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov 11092ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov assertEquals("Empty view: Min lines must match", TextViewCompat.getMinLines(mTextView), 11192ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov minLinesCount); 11292ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov 11339e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov onView(withId(R.id.text_view)).perform(setText(R.string.test_text_short)); 11492ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov assertEquals("Short text: Min lines must match", TextViewCompat.getMinLines(mTextView), 11592ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov minLinesCount); 11692ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov 11739e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov onView(withId(R.id.text_view)).perform(setText(R.string.test_text_medium)); 11892ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov assertEquals("Medium text: Min lines must match", TextViewCompat.getMinLines(mTextView), 11992ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov minLinesCount); 12092ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov 12139e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov onView(withId(R.id.text_view)).perform(setText(R.string.test_text_long)); 12292ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov assertEquals("Long text: Min lines must match", TextViewCompat.getMinLines(mTextView), 12392ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov minLinesCount); 12492ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov } 12592ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov 12639e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov @Test 12792ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov public void testStyle() throws Throwable { 12839e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov onView(withId(R.id.text_view)).perform(setTextAppearance(R.style.TextMediumStyle)); 129d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov 13039e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov final Resources res = mActivityTestRule.getActivity().getResources(); 1319176979f5317552e473fff0cf1ea9e87bf59d7d3Kirill Grouchnikov assertTrue("Styled text view: style", 1329176979f5317552e473fff0cf1ea9e87bf59d7d3Kirill Grouchnikov mTextView.getTypeface().isItalic() || (mTextView.getPaint().getTextSkewX() < 0)); 13392ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov assertEquals("Styled text view: color", mTextView.getTextColors().getDefaultColor(), 13492ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov res.getColor(R.color.text_color)); 13592ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov assertEquals("Styled text view: size", mTextView.getTextSize(), 13639e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov (float) res.getDimensionPixelSize(R.dimen.text_medium_size), 1.0f); 137d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov } 138156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikov 13939e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov @Test 140156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikov public void testCompoundDrawablesRelative() throws Throwable { 141156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikov final Drawable drawableStart = new ColorDrawable(0xFFFF0000); 142156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikov drawableStart.setBounds(0, 0, 20, 20); 143156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikov final Drawable drawableTop = new ColorDrawable(0xFF00FF00); 1444d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawableTop.setBounds(0, 0, 30, 25); 145156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikov final Drawable drawableEnd = new ColorDrawable(0xFF0000FF); 1464d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawableEnd.setBounds(0, 0, 25, 20); 147156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikov 14839e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov onView(withId(R.id.text_view)).perform(setText(R.string.test_text_medium)); 14939e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov onView(withId(R.id.text_view)).perform(setCompoundDrawablesRelative(drawableStart, 15039e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov drawableTop, drawableEnd, null)); 151156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikov 152156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikov final Drawable[] drawablesAbsolute = mTextView.getCompoundDrawables(); 1534d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 154156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikov assertEquals("Compound drawable: left", drawablesAbsolute[0], drawableStart); 1554d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: left width", 1564d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[0].getBounds().width(), 20); 1574d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: left height", 1584d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[0].getBounds().height(), 20); 1594d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 160156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikov assertEquals("Compound drawable: top", drawablesAbsolute[1], drawableTop); 1614d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: top width", 1624d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[1].getBounds().width(), 30); 1634d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: top height", 1644d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[1].getBounds().height(), 25); 1654d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 166156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikov assertEquals("Compound drawable: right", drawablesAbsolute[2], drawableEnd); 1674d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: right width", 1684d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[2].getBounds().width(), 25); 1694d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: right height", 1704d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[2].getBounds().height(), 20); 1714d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 172156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikov assertNull("Compound drawable: bottom", drawablesAbsolute[3]); 173156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikov } 174c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov 17539e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov @Test 176c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov public void testCompoundDrawablesRelativeRtl() throws Throwable { 17739e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov onView(withId(R.id.text_view)).perform(setLayoutDirection(ViewCompat.LAYOUT_DIRECTION_RTL)); 178c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov 179c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov final Drawable drawableStart = new ColorDrawable(0xFFFF0000); 180c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov drawableStart.setBounds(0, 0, 20, 20); 181c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov final Drawable drawableTop = new ColorDrawable(0xFF00FF00); 1824d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawableTop.setBounds(0, 0, 30, 25); 183c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov final Drawable drawableEnd = new ColorDrawable(0xFF0000FF); 1844d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawableEnd.setBounds(0, 0, 25, 20); 185c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov 18639e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov onView(withId(R.id.text_view)).perform(setText(R.string.test_text_medium)); 18739e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov onView(withId(R.id.text_view)).perform(setCompoundDrawablesRelative(drawableStart, 18839e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov drawableTop, drawableEnd, null)); 189c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov 190c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov // Check to see whether our text view is under RTL mode 191c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov if (ViewCompat.getLayoutDirection(mTextView) != ViewCompat.LAYOUT_DIRECTION_RTL) { 192c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov // This will happen on v17- devices 193c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov return; 194c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov } 195c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov 196c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov final Drawable[] drawablesAbsolute = mTextView.getCompoundDrawables(); 1974d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 198c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov // End drawable should be returned as left 199c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov assertEquals("Compound drawable: left", drawablesAbsolute[0], drawableEnd); 2004d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: left width", 2014d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[0].getBounds().width(), 25); 2024d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: left height", 2034d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[0].getBounds().height(), 20); 2044d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 205c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov assertEquals("Compound drawable: top", drawablesAbsolute[1], drawableTop); 2064d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: left width", 2074d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[1].getBounds().width(), 30); 2084d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: left height", 2094d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[1].getBounds().height(), 25); 2104d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 211c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov // Start drawable should be returned as right 212c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov assertEquals("Compound drawable: right", drawablesAbsolute[2], drawableStart); 2134d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: left width", 2144d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[2].getBounds().width(), 20); 2154d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: left height", 2164d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[2].getBounds().height(), 20); 2174d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 218c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov assertNull("Compound drawable: bottom", drawablesAbsolute[3]); 219c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov } 2204d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 22139e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov @Test 2224d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov public void testCompoundDrawablesRelativeWithIntrinsicBounds() throws Throwable { 2234d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov final Drawable drawableStart = new TestDrawable(0xFFFF0000, 30, 20); 2244d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov final Drawable drawableEnd = new TestDrawable(0xFF0000FF, 25, 45); 2254d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov final Drawable drawableBottom = new TestDrawable(0xFF00FF00, 15, 35); 2264d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 22739e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov onView(withId(R.id.text_view)).perform(setText(R.string.test_text_long)); 22839e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov onView(withId(R.id.text_view)).perform(setCompoundDrawablesRelativeWithIntrinsicBounds( 22939e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov drawableStart, null, drawableEnd, drawableBottom)); 2304d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 2314d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov final Drawable[] drawablesAbsolute = mTextView.getCompoundDrawables(); 2324d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 2334d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: left", drawablesAbsolute[0], drawableStart); 2344d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: left width", 2354d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[0].getBounds().width(), 30); 2364d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: left height", 2374d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[0].getBounds().height(), 20); 2384d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 2394d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertNull("Compound drawable: top", drawablesAbsolute[1]); 2404d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 2414d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: right", drawablesAbsolute[2], drawableEnd); 2424d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: right width", 2434d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[2].getBounds().width(), 25); 2444d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: right height", 2454d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[2].getBounds().height(), 45); 2464d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 2474d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: bottom", drawablesAbsolute[3], drawableBottom); 2484d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: bottom width", 2494d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[3].getBounds().width(), 15); 2504d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: bottom height", 2514d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[3].getBounds().height(), 35); 2524d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov } 2534d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 25439e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov @Test 2554d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov public void testCompoundDrawablesRelativeWithIntrinsicBoundsRtl() throws Throwable { 25639e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov onView(withId(R.id.text_view)).perform(setLayoutDirection(ViewCompat.LAYOUT_DIRECTION_RTL)); 2574d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 2584d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov final Drawable drawableStart = new TestDrawable(0xFFFF0000, 30, 20); 2594d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov final Drawable drawableEnd = new TestDrawable(0xFF0000FF, 25, 45); 2604d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov final Drawable drawableBottom = new TestDrawable(0xFF00FF00, 15, 35); 2614d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 26239e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov onView(withId(R.id.text_view)).perform(setText(R.string.test_text_long)); 26339e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov onView(withId(R.id.text_view)).perform(setCompoundDrawablesRelativeWithIntrinsicBounds( 26439e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov drawableStart, null, drawableEnd, drawableBottom)); 2654d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 2664d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov // Check to see whether our text view is under RTL mode 2674d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov if (ViewCompat.getLayoutDirection(mTextView) != ViewCompat.LAYOUT_DIRECTION_RTL) { 2684d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov // This will happen on v17- devices 2694d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov return; 2704d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov } 2714d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 2724d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov final Drawable[] drawablesAbsolute = mTextView.getCompoundDrawables(); 2734d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 2744d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov // End drawable should be returned as left 2754d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: left", drawablesAbsolute[0], drawableEnd); 2764d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: left width", 2774d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[0].getBounds().width(), 25); 2784d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: left height", 2794d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[0].getBounds().height(), 45); 2804d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 2814d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertNull("Compound drawable: top", drawablesAbsolute[1]); 2824d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 2834d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov // Start drawable should be returned as right 2844d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: right", drawablesAbsolute[2], drawableStart); 2854d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: right width", 2864d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[2].getBounds().width(), 30); 2874d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: right height", 2884d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[2].getBounds().height(), 20); 2894d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 2904d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: bottom", drawablesAbsolute[3], drawableBottom); 2914d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: bottom width", 2924d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[3].getBounds().width(), 15); 2934d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: bottom height", 2944d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[3].getBounds().height(), 35); 2954d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov } 2964d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 29739e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov @Test 2984d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov public void testCompoundDrawablesRelativeWithIntrinsicBoundsById() throws Throwable { 29939e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov onView(withId(R.id.text_view)).perform(setText(R.string.test_text_long)); 30039e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov onView(withId(R.id.text_view)).perform(setCompoundDrawablesRelativeWithIntrinsicBounds( 3014d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov R.drawable.test_drawable_red, 0, 30239e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov R.drawable.test_drawable_green, R.drawable.test_drawable_blue)); 3034d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 3044d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov final Drawable[] drawablesAbsolute = mTextView.getCompoundDrawables(); 30539e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov final Resources res = mActivityTestRule.getActivity().getResources(); 3064d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 3074d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov // The entire left drawable should be the specific red color 308bc927aa4ec8007a8faaa5672f4b3c7ef59c7e36fKirill Grouchnikov TestUtils.assertAllPixelsOfColor("Compound drawable: left color", 309bc927aa4ec8007a8faaa5672f4b3c7ef59c7e36fKirill Grouchnikov drawablesAbsolute[0], res.getColor(R.color.test_red)); 3104d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: left width", 3114d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[0].getBounds().width(), 3124d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov res.getDimensionPixelSize(R.dimen.drawable_small_size)); 3134d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: left height", 3144d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[0].getBounds().height(), 3154d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov res.getDimensionPixelSize(R.dimen.drawable_medium_size)); 3164d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 3174d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertNull("Compound drawable: top", drawablesAbsolute[1]); 3184d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 3194d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov // The entire right drawable should be the specific green color 320bc927aa4ec8007a8faaa5672f4b3c7ef59c7e36fKirill Grouchnikov TestUtils.assertAllPixelsOfColor("Compound drawable: right color", 321bc927aa4ec8007a8faaa5672f4b3c7ef59c7e36fKirill Grouchnikov drawablesAbsolute[2], res.getColor(R.color.test_green)); 3224d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: right width", 3234d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[2].getBounds().width(), 3244d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov res.getDimensionPixelSize(R.dimen.drawable_medium_size)); 3254d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: right height", 3264d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[2].getBounds().height(), 3274d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov res.getDimensionPixelSize(R.dimen.drawable_large_size)); 3284d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 3294d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov // The entire bottom drawable should be the specific blue color 330bc927aa4ec8007a8faaa5672f4b3c7ef59c7e36fKirill Grouchnikov TestUtils.assertAllPixelsOfColor("Compound drawable: bottom color", 331bc927aa4ec8007a8faaa5672f4b3c7ef59c7e36fKirill Grouchnikov drawablesAbsolute[3], res.getColor(R.color.test_blue)); 3324d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: bottom width", 3334d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[3].getBounds().width(), 3344d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov res.getDimensionPixelSize(R.dimen.drawable_large_size)); 3354d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: bottom height", 3364d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[3].getBounds().height(), 3374d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov res.getDimensionPixelSize(R.dimen.drawable_small_size)); 3384d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov } 3394d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 34039e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov @Test 3414d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov public void testCompoundDrawablesRelativeWithIntrinsicBoundsByIdRtl() throws Throwable { 34239e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov onView(withId(R.id.text_view)).perform(setLayoutDirection(ViewCompat.LAYOUT_DIRECTION_RTL)); 3434d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 34439e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov onView(withId(R.id.text_view)).perform(setText(R.string.test_text_long)); 34539e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov onView(withId(R.id.text_view)).perform(setCompoundDrawablesRelativeWithIntrinsicBounds( 3464d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov R.drawable.test_drawable_red, 0, 34739e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov R.drawable.test_drawable_green, R.drawable.test_drawable_blue)); 3484d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 3494d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov // Check to see whether our text view is under RTL mode 3504d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov if (ViewCompat.getLayoutDirection(mTextView) != ViewCompat.LAYOUT_DIRECTION_RTL) { 3514d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov // This will happen on v17- devices 3524d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov return; 3534d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov } 3544d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 3554d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov final Drawable[] drawablesAbsolute = mTextView.getCompoundDrawables(); 35639e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov final Resources res = mActivityTestRule.getActivity().getResources(); 3574d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 3584d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov // The entire left / end drawable should be the specific green color 359bc927aa4ec8007a8faaa5672f4b3c7ef59c7e36fKirill Grouchnikov TestUtils.assertAllPixelsOfColor("Compound drawable: left color", 360bc927aa4ec8007a8faaa5672f4b3c7ef59c7e36fKirill Grouchnikov drawablesAbsolute[0], res.getColor(R.color.test_green)); 3614d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: left width", 3624d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[0].getBounds().width(), 3634d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov res.getDimensionPixelSize(R.dimen.drawable_medium_size)); 3644d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: left height", 3654d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[0].getBounds().height(), 3664d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov res.getDimensionPixelSize(R.dimen.drawable_large_size)); 3674d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 3684d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertNull("Compound drawable: top", drawablesAbsolute[1]); 3694d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 3704d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov // The entire right drawable should be the specific red color 371bc927aa4ec8007a8faaa5672f4b3c7ef59c7e36fKirill Grouchnikov TestUtils.assertAllPixelsOfColor("Compound drawable: right color", 372bc927aa4ec8007a8faaa5672f4b3c7ef59c7e36fKirill Grouchnikov drawablesAbsolute[2], res.getColor(R.color.test_red)); 3734d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: right width", 3744d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[2].getBounds().width(), 3754d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov res.getDimensionPixelSize(R.dimen.drawable_small_size)); 3764d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: right height", 3774d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[2].getBounds().height(), 3784d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov res.getDimensionPixelSize(R.dimen.drawable_medium_size)); 3794d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov 3804d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov // The entire bottom drawable should be the specific blue color 381bc927aa4ec8007a8faaa5672f4b3c7ef59c7e36fKirill Grouchnikov TestUtils.assertAllPixelsOfColor("Compound drawable: bottom color", 382bc927aa4ec8007a8faaa5672f4b3c7ef59c7e36fKirill Grouchnikov drawablesAbsolute[3], res.getColor(R.color.test_blue)); 3834d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: bottom width", 3844d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[3].getBounds().width(), 3854d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov res.getDimensionPixelSize(R.dimen.drawable_large_size)); 3864d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov assertEquals("Compound drawable: bottom height", 3874d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov drawablesAbsolute[3].getBounds().height(), 3884d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov res.getDimensionPixelSize(R.dimen.drawable_small_size)); 3894d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov } 390bf14265885d1cb7ecd6db9b0109a8b033181747bAndrei Stingaceanu 391bf14265885d1cb7ecd6db9b0109a8b033181747bAndrei Stingaceanu @Test 392bf14265885d1cb7ecd6db9b0109a8b033181747bAndrei Stingaceanu public void testCompoundDrawablesRelativeGetterAndSetter() { 393bf14265885d1cb7ecd6db9b0109a8b033181747bAndrei Stingaceanu final Drawable drawableStart = new TestDrawable(0xFFFF0000, 20, 20); 394bf14265885d1cb7ecd6db9b0109a8b033181747bAndrei Stingaceanu final Drawable drawableTop = new TestDrawable(0xFFFFFF00, 20, 20); 395bf14265885d1cb7ecd6db9b0109a8b033181747bAndrei Stingaceanu final Drawable drawableEnd = new TestDrawable(0xFF0000FF, 20, 20); 396bf14265885d1cb7ecd6db9b0109a8b033181747bAndrei Stingaceanu final Drawable drawableBottom = new TestDrawable(0xFF00FF00, 20, 20); 397bf14265885d1cb7ecd6db9b0109a8b033181747bAndrei Stingaceanu 398bf14265885d1cb7ecd6db9b0109a8b033181747bAndrei Stingaceanu onView(withId(R.id.text_view)).perform(setLayoutDirection(ViewCompat.LAYOUT_DIRECTION_RTL)); 399bf14265885d1cb7ecd6db9b0109a8b033181747bAndrei Stingaceanu onView(withId(R.id.text_view)).perform(setCompoundDrawablesRelative(drawableStart, 400bf14265885d1cb7ecd6db9b0109a8b033181747bAndrei Stingaceanu drawableTop, drawableEnd, drawableBottom)); 401bf14265885d1cb7ecd6db9b0109a8b033181747bAndrei Stingaceanu 402bf14265885d1cb7ecd6db9b0109a8b033181747bAndrei Stingaceanu // Check to see whether our text view is under RTL mode 403bf14265885d1cb7ecd6db9b0109a8b033181747bAndrei Stingaceanu if (ViewCompat.getLayoutDirection(mTextView) != ViewCompat.LAYOUT_DIRECTION_RTL) { 404bf14265885d1cb7ecd6db9b0109a8b033181747bAndrei Stingaceanu // This will happen on v17- devices 405bf14265885d1cb7ecd6db9b0109a8b033181747bAndrei Stingaceanu return; 406bf14265885d1cb7ecd6db9b0109a8b033181747bAndrei Stingaceanu } 407bf14265885d1cb7ecd6db9b0109a8b033181747bAndrei Stingaceanu 408bf14265885d1cb7ecd6db9b0109a8b033181747bAndrei Stingaceanu final Drawable[] drawablesRelative = TextViewCompat.getCompoundDrawablesRelative(mTextView); 409bf14265885d1cb7ecd6db9b0109a8b033181747bAndrei Stingaceanu assertEquals(drawableStart, drawablesRelative[0]); 410bf14265885d1cb7ecd6db9b0109a8b033181747bAndrei Stingaceanu assertEquals(drawableTop, drawablesRelative[1]); 411bf14265885d1cb7ecd6db9b0109a8b033181747bAndrei Stingaceanu assertEquals(drawableEnd, drawablesRelative[2]); 412bf14265885d1cb7ecd6db9b0109a8b033181747bAndrei Stingaceanu assertEquals(drawableBottom, drawablesRelative[3]); 413bf14265885d1cb7ecd6db9b0109a8b033181747bAndrei Stingaceanu } 414d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov} 415