blob: 093749adf1c37a4fd9c9d7d6672256d9d97a1d24 [file] [log] [blame]
Charles Chenaa94d95b2019-02-19 14:18:19 +08001/*
2 * Copyright (C) 2019 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.android.systemui.statusbar.phone;
18
19import static org.junit.Assert.assertEquals;
20import static org.mockito.Mockito.doNothing;
21import static org.mockito.Mockito.doReturn;
22import static org.mockito.Mockito.mock;
23import static org.mockito.Mockito.spy;
24
25import android.support.test.filters.SmallTest;
26import android.testing.AndroidTestingRunner;
27import android.testing.TestableLooper.RunWithLooper;
28import android.util.SparseArray;
29import android.view.View;
30import android.widget.FrameLayout;
31
32import com.android.systemui.SysuiTestCase;
33import com.android.systemui.statusbar.CommandQueue;
34
35import org.junit.After;
36import org.junit.Before;
37import org.junit.Test;
38import org.junit.runner.RunWith;
39
40/** atest NavigationBarInflaterViewTest */
41@RunWith(AndroidTestingRunner.class)
42@RunWithLooper
43@SmallTest
44public class NavigationBarInflaterViewTest extends SysuiTestCase {
45
46 private NavigationBarInflaterView mNavBarInflaterView;
47
48 private static final int BUTTON_ID = 0;
49
50 @Before
51 public void setUp() {
52 mContext.putComponent(CommandQueue.class, mock(CommandQueue.class));
53
54 mNavBarInflaterView = spy(new NavigationBarInflaterView(mContext, null));
55 doNothing().when(mNavBarInflaterView).createInflaters();
56
57 mNavBarInflaterView.mButtonDispatchers = new SparseArray<>(1);
58 mNavBarInflaterView.mButtonDispatchers.put(BUTTON_ID, new ButtonDispatcher(BUTTON_ID));
59
60 initializeViews();
61 }
62
63 private void initializeViews() {
64 mNavBarInflaterView.mVertical = mock(FrameLayout.class);
65 mNavBarInflaterView.mHorizontal = mock(FrameLayout.class);
66 initializeLayout(mNavBarInflaterView.mVertical);
67 initializeLayout(mNavBarInflaterView.mHorizontal);
68 }
69
70 private void initializeLayout(FrameLayout layout) {
71 View verticalChildView = mock(View.class);
72 verticalChildView.setId(BUTTON_ID);
73 doReturn(layout).when(verticalChildView).getParent();
74 doReturn(verticalChildView).when(layout).findViewById(BUTTON_ID);
75 }
76
77 @After
78 public void tearDown() {
79 mNavBarInflaterView = null;
80 }
81
82 @Test
83 public void testUpdateButtonDispatchersCurrentView_isVerticalTrue() {
84 mNavBarInflaterView.setVertical(true);
85
86 mNavBarInflaterView.updateButtonDispatchersCurrentView();
87
88 ButtonDispatcher button = mNavBarInflaterView.mButtonDispatchers.get(BUTTON_ID);
89 assertEquals("Buttons need to be set to vertical layout",
90 mNavBarInflaterView.mVertical.getId(),
91 ((View) button.getCurrentView().getParent()).getId());
92 }
93
94 @Test
95 public void testUpdateButtonDispatchersCurrentView_isVerticalFalse() {
96 mNavBarInflaterView.setVertical(false);
97
98 mNavBarInflaterView.updateButtonDispatchersCurrentView();
99
100 ButtonDispatcher button = mNavBarInflaterView.mButtonDispatchers.get(BUTTON_ID);
101 assertEquals("Buttons need to be set to horizon layout",
102 mNavBarInflaterView.mHorizontal.getId(),
103 ((View) button.getCurrentView().getParent()).getId());
104 }
105}