1 package com.android.systemui.qs 2 3 import android.testing.AndroidTestingRunner 4 import android.testing.TestableLooper 5 import android.view.ViewGroup 6 import android.view.accessibility.AccessibilityNodeInfo 7 import android.widget.FrameLayout 8 import androidx.test.filters.SmallTest 9 import com.android.systemui.SysuiTestCase 10 import com.android.systemui.qs.logging.QSLogger 11 import com.google.common.truth.Truth 12 import org.junit.Before 13 import org.junit.Test 14 import org.junit.runner.RunWith 15 import org.mockito.Mock 16 import org.mockito.Mockito 17 import org.mockito.MockitoAnnotations 18 19 @RunWith(AndroidTestingRunner::class) 20 @TestableLooper.RunWithLooper 21 @SmallTest 22 class QuickQSPanelTest : SysuiTestCase() { 23 24 @Mock private lateinit var qsLogger: QSLogger 25 26 private lateinit var testableLooper: TestableLooper 27 private lateinit var quickQSPanel: QuickQSPanel 28 29 private lateinit var parentView: ViewGroup 30 31 @Before 32 @Throws(Exception::class) 33 fun setup() { 34 MockitoAnnotations.initMocks(this) 35 testableLooper = TestableLooper.get(this) 36 37 testableLooper.runWithLooper { 38 quickQSPanel = QuickQSPanel(mContext, null) 39 quickQSPanel.initialize(qsLogger) 40 41 quickQSPanel.onFinishInflate() 42 // Provides a parent with non-zero size for QSPanel 43 parentView = FrameLayout(mContext).apply { 44 addView(quickQSPanel) 45 } 46 } 47 } 48 49 @Test 50 fun testHasExpandAccessibilityAction() { 51 val info = AccessibilityNodeInfo(quickQSPanel) 52 quickQSPanel.onInitializeAccessibilityNodeInfo(info) 53 54 Truth.assertThat(info.actions and AccessibilityNodeInfo.ACTION_EXPAND).isNotEqualTo(0) 55 Truth.assertThat(info.actions and AccessibilityNodeInfo.ACTION_COLLAPSE).isEqualTo(0) 56 } 57 58 @Test 59 fun testExpandActionCallsRunnable() { 60 val mockRunnable = Mockito.mock(Runnable::class.java) 61 quickQSPanel.setCollapseExpandAction(mockRunnable) 62 63 quickQSPanel.performAccessibilityAction(AccessibilityNodeInfo.ACTION_EXPAND, null) 64 Mockito.verify(mockRunnable).run() 65 } 66 }