1 package com.android.systemui.statusbar
2 
3 import org.mockito.Mockito.`when` as whenever
4 import android.testing.AndroidTestingRunner
5 import androidx.test.filters.SmallTest
6 import com.android.systemui.SysuiTestCase
7 import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController
8 import com.android.systemui.statusbar.policy.FakeConfigurationController
9 import org.junit.Before
10 import org.junit.Test
11 import org.junit.runner.RunWith
12 import org.mockito.Mock
13 import org.mockito.Mockito.intThat
14 import org.mockito.Mockito.verify
15 import org.mockito.MockitoAnnotations
16 
17 @RunWith(AndroidTestingRunner::class)
18 @SmallTest
19 class SingleShadeLockScreenOverScrollerTest : SysuiTestCase() {
20 
21     @Mock private lateinit var statusBarStateController: SysuiStatusBarStateController
22     @Mock private lateinit var nsslController: NotificationStackScrollLayoutController
23 
24     private lateinit var overScroller: SingleShadeLockScreenOverScroller
25 
26     @Before
27     fun setUp() {
28         MockitoAnnotations.initMocks(this)
29         whenever(nsslController.height).thenReturn(1800)
30         overScroller =
31             SingleShadeLockScreenOverScroller(
32                 FakeConfigurationController(),
33                 context,
34                 statusBarStateController,
35                 nsslController
36             )
37     }
38 
39     @Test
40     fun setDragDownAmount_onKeyguard_overScrolls() {
41         whenever(statusBarStateController.state).thenReturn(StatusBarState.KEYGUARD)
42 
43         overScroller.expansionDragDownAmount = 10f
44 
45         verify(nsslController).setOverScrollAmount(intThat { it > 0 })
46     }
47 
48     @Test
49     fun setDragDownAmount_notOnKeyguard_doesNotOverScroll() {
50         whenever(statusBarStateController.state).thenReturn(StatusBarState.SHADE)
51 
52         overScroller.expansionDragDownAmount = 10f
53 
54         verify(nsslController).setOverScrollAmount(0)
55     }
56 }
57