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 Grouchnikov
18d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikovpackage android.support.v4.widget;
19d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov
2092ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikovimport android.content.res.Resources;
21156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikovimport android.graphics.drawable.ColorDrawable;
2239e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikovimport android.graphics.drawable.Drawable;
234d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikovimport android.support.annotation.ColorInt;
2439e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikovimport android.support.v4.BaseInstrumentationTestCase;
2592ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikovimport android.support.v4.test.R;
264d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikovimport android.support.v4.testutils.TestUtils;
2739e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikovimport android.support.v4.view.ViewCompat;
2839e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikovimport android.test.suitebuilder.annotation.MediumTest;
2939e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikovimport android.test.suitebuilder.annotation.SmallTest;
30d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikovimport android.widget.TextView;
3139e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikovimport org.junit.Before;
3239e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikovimport org.junit.Test;
33d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov
3439e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikovimport static android.support.test.espresso.Espresso.onView;
3539e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikovimport static android.support.test.espresso.matcher.ViewMatchers.withId;
3639e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikovimport static android.support.v4.testutils.LayoutDirectionActions.setLayoutDirection;
3739e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikovimport static android.support.v4.testutils.TextViewActions.*;
3839e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikovimport static org.junit.Assert.*;
3939e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov
4039e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikovpublic class TextViewCompatTest extends BaseInstrumentationTestCase<TextViewTestActivity> {
4192ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov    private static final String TAG = "TextViewCompatTest";
42d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov
4392ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov    private TextView mTextView;
44d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov
454d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov    private class TestDrawable extends ColorDrawable {
464d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        private int mWidth;
474d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        private int mHeight;
484d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
494d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        public TestDrawable(@ColorInt int color, int width, int height) {
504d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov            super(color);
514d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov            mWidth = width;
524d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov            mHeight = height;
534d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        }
544d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
554d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        @Override
564d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        public int getIntrinsicWidth() {
574d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov            return mWidth;
584d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        }
594d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
604d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        @Override
614d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        public int getIntrinsicHeight() {
624d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov            return mHeight;
634d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        }
644d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov    }
654d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
66d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov    public TextViewCompatTest() {
6739e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov        super(TextViewTestActivity.class);
68d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov    }
69d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov
7039e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov    @Before
7139e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov    public void setUp() {
7239e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov        mTextView = (TextView) mActivityTestRule.getActivity().findViewById(R.id.text_view);
73d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov    }
74d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov
7539e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov    @Test
7692ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov    @SmallTest
77d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov    public void testMaxLines() throws Throwable {
7892ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov        final int maxLinesCount = 4;
7939e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov        onView(withId(R.id.text_view)).perform(setMaxLines(maxLinesCount));
8092ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov
8192ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov        assertEquals("Empty view: Max lines must match", TextViewCompat.getMaxLines(mTextView),
8292ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov                maxLinesCount);
8392ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov
8439e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov        onView(withId(R.id.text_view)).perform(setText(R.string.test_text_short));
8592ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov        assertEquals("Short text: Max lines must match", TextViewCompat.getMaxLines(mTextView),
8692ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov                maxLinesCount);
8792ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov
8839e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov        onView(withId(R.id.text_view)).perform(setText(R.string.test_text_medium));
8992ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov        assertEquals("Medium text: 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_long));
9392ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov        assertEquals("Long text: Max lines must match", TextViewCompat.getMaxLines(mTextView),
9492ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov                maxLinesCount);
9592ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov    }
9692ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov
9739e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov    @Test
9892ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov    @SmallTest
9992ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov    public void testMinLines() throws Throwable {
10092ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov        final int minLinesCount = 3;
10139e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov        onView(withId(R.id.text_view)).perform(setMinLines(minLinesCount));
10292ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov
10392ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov        assertEquals("Empty view: Min lines must match", TextViewCompat.getMinLines(mTextView),
10492ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov                minLinesCount);
10592ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov
10639e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov        onView(withId(R.id.text_view)).perform(setText(R.string.test_text_short));
10792ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov        assertEquals("Short text: Min lines must match", TextViewCompat.getMinLines(mTextView),
10892ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov                minLinesCount);
10992ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov
11039e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov        onView(withId(R.id.text_view)).perform(setText(R.string.test_text_medium));
11192ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov        assertEquals("Medium text: Min lines must match", TextViewCompat.getMinLines(mTextView),
11292ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov                minLinesCount);
11392ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov
11439e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov        onView(withId(R.id.text_view)).perform(setText(R.string.test_text_long));
11592ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov        assertEquals("Long text: Min lines must match", TextViewCompat.getMinLines(mTextView),
11692ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov                minLinesCount);
11792ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov    }
11892ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov
11939e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov    @Test
12092ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov    @SmallTest
12192ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov    public void testStyle() throws Throwable {
12239e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov        onView(withId(R.id.text_view)).perform(setTextAppearance(R.style.TextMediumStyle));
123d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov
12439e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov        final Resources res = mActivityTestRule.getActivity().getResources();
1259176979f5317552e473fff0cf1ea9e87bf59d7d3Kirill Grouchnikov        assertTrue("Styled text view: style",
1269176979f5317552e473fff0cf1ea9e87bf59d7d3Kirill Grouchnikov                mTextView.getTypeface().isItalic() || (mTextView.getPaint().getTextSkewX() < 0));
12792ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov        assertEquals("Styled text view: color", mTextView.getTextColors().getDefaultColor(),
12892ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov                res.getColor(R.color.text_color));
12992ad16973b68f0586c585da428946d851a7611bbKirill Grouchnikov        assertEquals("Styled text view: size", mTextView.getTextSize(),
13039e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov                (float) res.getDimensionPixelSize(R.dimen.text_medium_size), 1.0f);
131d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov    }
132156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikov
13339e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov    @Test
134156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikov    @SmallTest
135156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikov    public void testCompoundDrawablesRelative() throws Throwable {
136156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikov        final Drawable drawableStart = new ColorDrawable(0xFFFF0000);
137156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikov        drawableStart.setBounds(0, 0, 20, 20);
138156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikov        final Drawable drawableTop = new ColorDrawable(0xFF00FF00);
1394d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        drawableTop.setBounds(0, 0, 30, 25);
140156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikov        final Drawable drawableEnd = new ColorDrawable(0xFF0000FF);
1414d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        drawableEnd.setBounds(0, 0, 25, 20);
142156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikov
14339e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov        onView(withId(R.id.text_view)).perform(setText(R.string.test_text_medium));
14439e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov        onView(withId(R.id.text_view)).perform(setCompoundDrawablesRelative(drawableStart,
14539e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov                drawableTop, drawableEnd, null));
146156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikov
147156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikov        final Drawable[] drawablesAbsolute = mTextView.getCompoundDrawables();
1484d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
149156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikov        assertEquals("Compound drawable: left", drawablesAbsolute[0], drawableStart);
1504d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: left width",
1514d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                drawablesAbsolute[0].getBounds().width(), 20);
1524d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: left height",
1534d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                drawablesAbsolute[0].getBounds().height(), 20);
1544d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
155156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikov        assertEquals("Compound drawable: top", drawablesAbsolute[1], drawableTop);
1564d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: top width",
1574d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                drawablesAbsolute[1].getBounds().width(), 30);
1584d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: top height",
1594d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                drawablesAbsolute[1].getBounds().height(), 25);
1604d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
161156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikov        assertEquals("Compound drawable: right", drawablesAbsolute[2], drawableEnd);
1624d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: right width",
1634d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                drawablesAbsolute[2].getBounds().width(), 25);
1644d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: right height",
1654d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                drawablesAbsolute[2].getBounds().height(), 20);
1664d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
167156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikov        assertNull("Compound drawable: bottom", drawablesAbsolute[3]);
168156b807bb159a532412685e6b7cfd4f0a61d1b5eKirill Grouchnikov    }
169c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov
17039e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov    @Test
171c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov    @SmallTest
172c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov    public void testCompoundDrawablesRelativeRtl() throws Throwable {
17339e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov        onView(withId(R.id.text_view)).perform(setLayoutDirection(ViewCompat.LAYOUT_DIRECTION_RTL));
174c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov
175c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov        final Drawable drawableStart = new ColorDrawable(0xFFFF0000);
176c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov        drawableStart.setBounds(0, 0, 20, 20);
177c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov        final Drawable drawableTop = new ColorDrawable(0xFF00FF00);
1784d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        drawableTop.setBounds(0, 0, 30, 25);
179c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov        final Drawable drawableEnd = new ColorDrawable(0xFF0000FF);
1804d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        drawableEnd.setBounds(0, 0, 25, 20);
181c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov
18239e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov        onView(withId(R.id.text_view)).perform(setText(R.string.test_text_medium));
18339e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov        onView(withId(R.id.text_view)).perform(setCompoundDrawablesRelative(drawableStart,
18439e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov                drawableTop, drawableEnd, null));
185c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov
186c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov        // Check to see whether our text view is under RTL mode
187c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov        if (ViewCompat.getLayoutDirection(mTextView) != ViewCompat.LAYOUT_DIRECTION_RTL) {
188c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov            // This will happen on v17- devices
189c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov            return;
190c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov        }
191c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov
192c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov        final Drawable[] drawablesAbsolute = mTextView.getCompoundDrawables();
1934d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
194c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov        // End drawable should be returned as left
195c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov        assertEquals("Compound drawable: left", drawablesAbsolute[0], drawableEnd);
1964d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: left width",
1974d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                drawablesAbsolute[0].getBounds().width(), 25);
1984d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: left height",
1994d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                drawablesAbsolute[0].getBounds().height(), 20);
2004d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
201c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov        assertEquals("Compound drawable: top", drawablesAbsolute[1], drawableTop);
2024d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: left width",
2034d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                drawablesAbsolute[1].getBounds().width(), 30);
2044d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: left height",
2054d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                drawablesAbsolute[1].getBounds().height(), 25);
2064d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
207c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov        // Start drawable should be returned as right
208c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov        assertEquals("Compound drawable: right", drawablesAbsolute[2], drawableStart);
2094d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: left width",
2104d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                drawablesAbsolute[2].getBounds().width(), 20);
2114d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: left height",
2124d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                drawablesAbsolute[2].getBounds().height(), 20);
2134d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
214c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov        assertNull("Compound drawable: bottom", drawablesAbsolute[3]);
215c5b4d17e3c2877bd2888cd5314d0a624fff9b49dKirill Grouchnikov    }
2164d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
21739e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov    @Test
2184d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov    @SmallTest
2194d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov    public void testCompoundDrawablesRelativeWithIntrinsicBounds() throws Throwable {
2204d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        final Drawable drawableStart = new TestDrawable(0xFFFF0000, 30, 20);
2214d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        final Drawable drawableEnd = new TestDrawable(0xFF0000FF, 25, 45);
2224d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        final Drawable drawableBottom = new TestDrawable(0xFF00FF00, 15, 35);
2234d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
22439e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov        onView(withId(R.id.text_view)).perform(setText(R.string.test_text_long));
22539e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov        onView(withId(R.id.text_view)).perform(setCompoundDrawablesRelativeWithIntrinsicBounds(
22639e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov                drawableStart, null, drawableEnd, drawableBottom));
2274d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
2284d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        final Drawable[] drawablesAbsolute = mTextView.getCompoundDrawables();
2294d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
2304d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: left", drawablesAbsolute[0], drawableStart);
2314d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: left width",
2324d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                drawablesAbsolute[0].getBounds().width(), 30);
2334d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: left height",
2344d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                drawablesAbsolute[0].getBounds().height(), 20);
2354d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
2364d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertNull("Compound drawable: top", drawablesAbsolute[1]);
2374d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
2384d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: right", drawablesAbsolute[2], drawableEnd);
2394d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: right width",
2404d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                drawablesAbsolute[2].getBounds().width(), 25);
2414d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: right height",
2424d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                drawablesAbsolute[2].getBounds().height(), 45);
2434d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
2444d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: bottom", drawablesAbsolute[3], drawableBottom);
2454d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: bottom width",
2464d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                drawablesAbsolute[3].getBounds().width(), 15);
2474d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: bottom height",
2484d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                drawablesAbsolute[3].getBounds().height(), 35);
2494d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov    }
2504d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
25139e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov    @Test
2524d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov    @SmallTest
2534d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov    public void testCompoundDrawablesRelativeWithIntrinsicBoundsRtl() throws Throwable {
25439e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov        onView(withId(R.id.text_view)).perform(setLayoutDirection(ViewCompat.LAYOUT_DIRECTION_RTL));
2554d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
2564d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        final Drawable drawableStart = new TestDrawable(0xFFFF0000, 30, 20);
2574d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        final Drawable drawableEnd = new TestDrawable(0xFF0000FF, 25, 45);
2584d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        final Drawable drawableBottom = new TestDrawable(0xFF00FF00, 15, 35);
2594d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
26039e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov        onView(withId(R.id.text_view)).perform(setText(R.string.test_text_long));
26139e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov        onView(withId(R.id.text_view)).perform(setCompoundDrawablesRelativeWithIntrinsicBounds(
26239e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov                drawableStart, null, drawableEnd, drawableBottom));
2634d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
2644d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        // Check to see whether our text view is under RTL mode
2654d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        if (ViewCompat.getLayoutDirection(mTextView) != ViewCompat.LAYOUT_DIRECTION_RTL) {
2664d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov            // This will happen on v17- devices
2674d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov            return;
2684d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        }
2694d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
2704d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        final Drawable[] drawablesAbsolute = mTextView.getCompoundDrawables();
2714d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
2724d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        // End drawable should be returned as left
2734d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: left", drawablesAbsolute[0], drawableEnd);
2744d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: left width",
2754d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                drawablesAbsolute[0].getBounds().width(), 25);
2764d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: left height",
2774d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                drawablesAbsolute[0].getBounds().height(), 45);
2784d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
2794d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertNull("Compound drawable: top", drawablesAbsolute[1]);
2804d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
2814d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        // Start drawable should be returned as right
2824d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: right", drawablesAbsolute[2], drawableStart);
2834d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: right width",
2844d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                drawablesAbsolute[2].getBounds().width(), 30);
2854d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: right height",
2864d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                drawablesAbsolute[2].getBounds().height(), 20);
2874d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
2884d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: bottom", drawablesAbsolute[3], drawableBottom);
2894d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: bottom width",
2904d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                drawablesAbsolute[3].getBounds().width(), 15);
2914d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: bottom height",
2924d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                drawablesAbsolute[3].getBounds().height(), 35);
2934d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov    }
2944d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
29539e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov    @Test
2964d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov    @MediumTest
2974d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov    public void testCompoundDrawablesRelativeWithIntrinsicBoundsById() throws Throwable {
29839e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov        onView(withId(R.id.text_view)).perform(setText(R.string.test_text_long));
29939e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov        onView(withId(R.id.text_view)).perform(setCompoundDrawablesRelativeWithIntrinsicBounds(
3004d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                R.drawable.test_drawable_red, 0,
30139e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov                R.drawable.test_drawable_green, R.drawable.test_drawable_blue));
3024d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
3034d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        final Drawable[] drawablesAbsolute = mTextView.getCompoundDrawables();
30439e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov        final Resources res = mActivityTestRule.getActivity().getResources();
3054d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
3064d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        // The entire left drawable should be the specific red color
307bc927aa4ec8007a8faaa5672f4b3c7ef59c7e36fKirill Grouchnikov        TestUtils.assertAllPixelsOfColor("Compound drawable: left color",
308bc927aa4ec8007a8faaa5672f4b3c7ef59c7e36fKirill Grouchnikov                drawablesAbsolute[0], res.getColor(R.color.test_red));
3094d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: left width",
3104d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                drawablesAbsolute[0].getBounds().width(),
3114d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                res.getDimensionPixelSize(R.dimen.drawable_small_size));
3124d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: left height",
3134d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                drawablesAbsolute[0].getBounds().height(),
3144d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                res.getDimensionPixelSize(R.dimen.drawable_medium_size));
3154d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
3164d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertNull("Compound drawable: top", drawablesAbsolute[1]);
3174d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
3184d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        // The entire right drawable should be the specific green color
319bc927aa4ec8007a8faaa5672f4b3c7ef59c7e36fKirill Grouchnikov        TestUtils.assertAllPixelsOfColor("Compound drawable: right color",
320bc927aa4ec8007a8faaa5672f4b3c7ef59c7e36fKirill Grouchnikov                drawablesAbsolute[2], res.getColor(R.color.test_green));
3214d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: right width",
3224d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                drawablesAbsolute[2].getBounds().width(),
3234d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                res.getDimensionPixelSize(R.dimen.drawable_medium_size));
3244d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: right height",
3254d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                drawablesAbsolute[2].getBounds().height(),
3264d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                res.getDimensionPixelSize(R.dimen.drawable_large_size));
3274d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
3284d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        // The entire bottom drawable should be the specific blue color
329bc927aa4ec8007a8faaa5672f4b3c7ef59c7e36fKirill Grouchnikov        TestUtils.assertAllPixelsOfColor("Compound drawable: bottom color",
330bc927aa4ec8007a8faaa5672f4b3c7ef59c7e36fKirill Grouchnikov                drawablesAbsolute[3], res.getColor(R.color.test_blue));
3314d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: bottom width",
3324d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                drawablesAbsolute[3].getBounds().width(),
3334d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                res.getDimensionPixelSize(R.dimen.drawable_large_size));
3344d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov        assertEquals("Compound drawable: bottom height",
3354d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                drawablesAbsolute[3].getBounds().height(),
3364d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov                res.getDimensionPixelSize(R.dimen.drawable_small_size));
3374d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov    }
3384d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov
33939e84476b45f10ed4929e307372d6f7a2103e9d5Kirill Grouchnikov    @Test
3404d83305f6b84175b5167d16e64cee01c4d3e1176Kirill Grouchnikov    @MediumTest
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    }
390d9d9aec0e671cf0db89a8b58a81b1980834f1dc2Kirill Grouchnikov}
391