4
4
package com .microsoft .accessibilityinsightsforandroidservice ;
5
5
6
6
import static org .mockito .ArgumentMatchers .any ;
7
+ import static org .mockito .Mockito .reset ;
7
8
import static org .mockito .Mockito .times ;
8
9
import static org .mockito .Mockito .verify ;
9
10
import static org .mockito .Mockito .when ;
12
13
import android .view .WindowManager ;
13
14
import android .view .accessibility .AccessibilityEvent ;
14
15
import android .view .accessibility .AccessibilityNodeInfo ;
15
- import java .util .concurrent .Executors ;
16
- import java .util .concurrent .ScheduledExecutorService ;
16
+ import java .util .Date ;
17
17
import java .util .function .Consumer ;
18
18
import org .junit .Assert ;
19
19
import org .junit .Before ;
25
25
@ RunWith (PowerMockRunner .class )
26
26
public class FocusVisualizerControllerTest {
27
27
28
- private static final ScheduledExecutorService mainThread =
29
- Executors .newSingleThreadScheduledExecutor ();
30
28
@ Mock FocusVisualizer focusVisualizerMock ;
31
29
@ Mock FocusVisualizationStateManager focusVisualizationStateManagerMock ;
32
30
@ Mock AccessibilityEvent accessibilityEventMock ;
@@ -36,6 +34,9 @@ public class FocusVisualizerControllerTest {
36
34
@ Mock FocusVisualizationCanvas focusVisualizationCanvas ;
37
35
@ Mock WindowManager .LayoutParams layoutParams ;
38
36
@ Mock AccessibilityNodeInfo accessibilityNodeInfo ;
37
+ @ Mock DateProvider dateProvider ;
38
+ @ Mock Date oldDateMock ;
39
+ @ Mock Date newDateMock ;
39
40
40
41
Consumer <Boolean > listener ;
41
42
FocusVisualizerController testSubject ;
@@ -44,14 +45,16 @@ public class FocusVisualizerControllerTest {
44
45
public void prepare () {
45
46
when (layoutParamGenerator .get ()).thenReturn (layoutParams );
46
47
listener = null ;
48
+ when (dateProvider .get ()).thenReturn (oldDateMock );
47
49
testSubject =
48
50
new FocusVisualizerController (
49
51
focusVisualizerMock ,
50
52
focusVisualizationStateManagerMock ,
51
53
uiThreadRunner ,
52
54
windowManager ,
53
55
layoutParamGenerator ,
54
- focusVisualizationCanvas );
56
+ focusVisualizationCanvas ,
57
+ dateProvider );
55
58
}
56
59
57
60
@ Test
@@ -67,9 +70,25 @@ public void onFocusEventDoesNotCallVisualizerIfStateIsFalse() {
67
70
}
68
71
69
72
@ Test
70
- public void onFocusEventCallsVisualizerIfStateIsTrue () {
73
+ public void onFocusEventDoesNotCallVisualizerIfOrientationChangedRecently () {
74
+ reset (dateProvider );
75
+ when (dateProvider .get ()).thenReturn (newDateMock );
76
+ when (focusVisualizationStateManagerMock .getState ()).thenReturn (true );
77
+ when (oldDateMock .getTime ()).thenReturn ((long ) 500 );
78
+ when (newDateMock .getTime ()).thenReturn ((long ) 501 );
79
+ testSubject .onFocusEvent (accessibilityEventMock );
80
+ verify (focusVisualizerMock , times (0 )).addNewFocusedElement (accessibilityNodeInfo );
81
+ }
82
+
83
+ @ Test
84
+ public void onFocusEventCallsVisualizerIfStateIsTrueAndOrientationHasNotChangedRecently ()
85
+ throws Exception {
86
+ reset (dateProvider );
87
+ when (dateProvider .get ()).thenReturn (newDateMock );
71
88
when (focusVisualizationStateManagerMock .getState ()).thenReturn (true );
72
89
when (accessibilityEventMock .getSource ()).thenReturn (accessibilityNodeInfo );
90
+ when (oldDateMock .getTime ()).thenReturn ((long ) 500 );
91
+ when (newDateMock .getTime ()).thenReturn ((long ) 10000 );
73
92
testSubject .onFocusEvent (accessibilityEventMock );
74
93
verify (focusVisualizerMock , times (1 )).addNewFocusedElement (accessibilityNodeInfo );
75
94
}
@@ -145,7 +164,8 @@ public void onFocusVisualizationStateChangeToEnabledAddsVisualization() {
145
164
uiThreadRunner ,
146
165
windowManager ,
147
166
layoutParamGenerator ,
148
- focusVisualizationCanvas );
167
+ focusVisualizationCanvas ,
168
+ dateProvider );
149
169
150
170
verify (windowManager ).addView (focusVisualizationCanvas , layoutParams );
151
171
}
@@ -178,7 +198,8 @@ public void onFocusVisualizationStateChangeToEnabledAddsVisualizationWithLastEve
178
198
uiThreadRunner ,
179
199
windowManager ,
180
200
layoutParamGenerator ,
181
- focusVisualizationCanvas );
201
+ focusVisualizationCanvas ,
202
+ dateProvider );
182
203
183
204
testSubject .onFocusEvent (accessibilityEventMock );
184
205
listener .accept (true );
@@ -214,7 +235,8 @@ public void onFocusVisualizationStateChangToDisabledRemovesVisualizations() {
214
235
uiThreadRunner ,
215
236
windowManager ,
216
237
layoutParamGenerator ,
217
- focusVisualizationCanvas );
238
+ focusVisualizationCanvas ,
239
+ dateProvider );
218
240
219
241
verify (focusVisualizerMock ).resetVisualizations ();
220
242
}
0 commit comments