1ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev/* 2ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev * Copyright (C) 2016 The Android Open Source Project 3ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev * 4ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev * Licensed under the Apache License, Version 2.0 (the "License"); 5ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev * you may not use this file except in compliance with the License. 6ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev * You may obtain a copy of the License at 7ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev * 8ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev * http://www.apache.org/licenses/LICENSE-2.0 9ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev * 10ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev * Unless required by applicable law or agreed to in writing, software 11ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev * distributed under the License is distributed on an "AS IS" BASIS, 12ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev * See the License for the specific language governing permissions and 14ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev * limitations under the License. 15ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev */ 16ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheevpackage android.support.v4.view; 17ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev 18ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheevimport static org.junit.Assert.assertEquals; 19ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheevimport static org.junit.Assert.assertNotNull; 20ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheevimport static org.junit.Assert.assertNull; 21ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev 22ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheevimport android.app.Activity; 23ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheevimport android.graphics.Bitmap; 24ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheevimport android.os.Build; 25ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheevimport android.support.compat.test.R; 26ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheevimport android.support.test.annotation.UiThreadTest; 27ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheevimport android.support.test.filters.SdkSuppress; 28ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheevimport android.support.test.filters.SmallTest; 29ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheevimport android.support.test.runner.AndroidJUnit4; 30ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheevimport android.support.v4.BaseInstrumentationTestCase; 31ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheevimport android.view.PointerIcon; 32ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheevimport android.view.View; 33ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev 34ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheevimport org.junit.Before; 35ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheevimport org.junit.Test; 36ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheevimport org.junit.runner.RunWith; 37ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev 38ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev 39ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev@RunWith(AndroidJUnit4.class) 40ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev@SmallTest 41ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev@SdkSuppress(minSdkVersion = Build.VERSION_CODES.N) 42ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheevpublic class PointerIconCompatTest extends BaseInstrumentationTestCase<ViewCompatActivity> { 43ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev 44ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev private View mView; 45ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev private Activity mActivity; 46ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev 47ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev public PointerIconCompatTest() { 48ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev super(ViewCompatActivity.class); 49ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev } 50ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev 51ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev @Before 52ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev public void setUp() { 53ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev mActivity = mActivityTestRule.getActivity(); 54ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev mView = mActivity.findViewById(R.id.view); 55ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev } 56ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev 57ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev private void compareSystemIcon(int type, int compatType) { 58ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev ViewCompat.setPointerIcon(mView, PointerIconCompat.getSystemIcon(mActivity, compatType)); 59ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev assertEquals(PointerIcon.getSystemIcon(mActivity, type), mView.getPointerIcon()); 60ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev } 61ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev 62ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev @Test 63ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev @UiThreadTest 64ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev public void testSystemIcon() { 65ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev compareSystemIcon(PointerIcon.TYPE_ALIAS, PointerIconCompat.TYPE_ALIAS); 66ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev compareSystemIcon(PointerIcon.TYPE_ALL_SCROLL, PointerIconCompat.TYPE_ALL_SCROLL); 67ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev compareSystemIcon(PointerIcon.TYPE_ARROW, PointerIconCompat.TYPE_ARROW); 68ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev compareSystemIcon(PointerIcon.TYPE_CELL, PointerIconCompat.TYPE_CELL); 69ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev compareSystemIcon(PointerIcon.TYPE_CONTEXT_MENU, PointerIconCompat.TYPE_CONTEXT_MENU); 70ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev compareSystemIcon(PointerIcon.TYPE_COPY, PointerIconCompat.TYPE_COPY); 71ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev compareSystemIcon(PointerIcon.TYPE_CROSSHAIR, PointerIconCompat.TYPE_CROSSHAIR); 72ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev compareSystemIcon(PointerIcon.TYPE_DEFAULT, PointerIconCompat.TYPE_DEFAULT); 73ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev compareSystemIcon(PointerIcon.TYPE_GRAB, PointerIconCompat.TYPE_GRAB); 74ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev compareSystemIcon(PointerIcon.TYPE_GRABBING, PointerIconCompat.TYPE_GRABBING); 75ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev compareSystemIcon(PointerIcon.TYPE_HAND, PointerIconCompat.TYPE_HAND); 76ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev compareSystemIcon(PointerIcon.TYPE_HELP, PointerIconCompat.TYPE_HELP); 77ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev compareSystemIcon(PointerIcon.TYPE_HORIZONTAL_DOUBLE_ARROW, 78ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev PointerIconCompat.TYPE_HORIZONTAL_DOUBLE_ARROW); 79ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev compareSystemIcon(PointerIcon.TYPE_NO_DROP, PointerIconCompat.TYPE_NO_DROP); 80ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev compareSystemIcon(PointerIcon.TYPE_NULL, PointerIconCompat.TYPE_NULL); 81ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev compareSystemIcon(PointerIcon.TYPE_TEXT, PointerIconCompat.TYPE_TEXT); 82ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev compareSystemIcon(PointerIcon.TYPE_TOP_LEFT_DIAGONAL_DOUBLE_ARROW, 83ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev PointerIconCompat.TYPE_TOP_LEFT_DIAGONAL_DOUBLE_ARROW); 84ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev compareSystemIcon(PointerIcon.TYPE_TOP_RIGHT_DIAGONAL_DOUBLE_ARROW, 85ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev PointerIconCompat.TYPE_TOP_RIGHT_DIAGONAL_DOUBLE_ARROW); 86ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev compareSystemIcon(PointerIcon.TYPE_VERTICAL_DOUBLE_ARROW, 87ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev PointerIconCompat.TYPE_VERTICAL_DOUBLE_ARROW); 88ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev compareSystemIcon(PointerIcon.TYPE_VERTICAL_TEXT, 89ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev PointerIconCompat.TYPE_VERTICAL_TEXT); 90ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev compareSystemIcon(PointerIcon.TYPE_WAIT, PointerIconCompat.TYPE_WAIT); 91ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev compareSystemIcon(PointerIcon.TYPE_ZOOM_IN, PointerIconCompat.TYPE_ZOOM_IN); 92ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev compareSystemIcon(PointerIcon.TYPE_ZOOM_OUT, PointerIconCompat.TYPE_ZOOM_OUT); 93ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev } 94ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev 95ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev @Test 96ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev @UiThreadTest 97ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev public void testNullIcon() { 98ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev ViewCompat.setPointerIcon(mView, null); 99ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev assertNull(mView.getPointerIcon()); 100ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev } 101ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev 102ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev @Test 103ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev @UiThreadTest 104ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev public void testBitmapIcon() { 105ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev Bitmap bitmap = Bitmap.createBitmap(16, 16, Bitmap.Config.ARGB_8888); 106ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev ViewCompat.setPointerIcon(mView, PointerIconCompat.create(bitmap, 0, 0)); 107ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev assertNotNull(mView.getPointerIcon()); 108ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev } 109ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev 110ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev @Test 111ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev @UiThreadTest 112ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev public void testResourceIcon() { 113ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev ViewCompat.setPointerIcon(mView, 114ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev PointerIconCompat.load(mActivity.getResources(), R.drawable.pointer_icon)); 115ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev assertNotNull(mView.getPointerIcon()); 116ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev } 117ee6c89547f0f0321b66c7c21e1990e7870a45b3cVladislav Kaznacheev} 118