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