1 package org.robolectric.shadows;
2 
3 import static android.os.Build.VERSION_CODES.P;
4 import static com.google.common.truth.Truth.assertThat;
5 import static org.robolectric.Shadows.shadowOf;
6 
7 import android.accessibilityservice.AccessibilityButtonController;
8 import android.accessibilityservice.AccessibilityService;
9 import android.view.accessibility.AccessibilityEvent;
10 import androidx.test.ext.junit.runners.AndroidJUnit4;
11 import org.junit.Before;
12 import org.junit.Test;
13 import org.junit.runner.RunWith;
14 import org.robolectric.annotation.Config;
15 
16 /** Unit tests for {@link ShadowAccessibilityButtonController}. */
17 @RunWith(AndroidJUnit4.class)
18 @Config(minSdk = P)
19 public class ShadowAccessibilityButtonControllerTest {
20 
21   private AccessibilityButtonController accessibilityButtonController;
22   private AccessibilityButtonController.AccessibilityButtonCallback accessibilityButtonCallback;
23 
24   private boolean isClicked;
25 
26   private MyService service;
27 
28   @Before
setUp()29   public void setUp() {
30     service = new MyService();
31     accessibilityButtonController = service.getAccessibilityButtonController();
32   }
33 
34   @Test
shouldAccessibilityButtonClickedTriggered()35   public void shouldAccessibilityButtonClickedTriggered() {
36     createAndRegisterAccessibilityButtonCallback();
37     shadowOf(accessibilityButtonController).performAccessibilityButtonClick();
38     assertThat(isClicked).isTrue();
39   }
40 
createAndRegisterAccessibilityButtonCallback()41   private void createAndRegisterAccessibilityButtonCallback() {
42     isClicked = false;
43     accessibilityButtonCallback =
44         new AccessibilityButtonController.AccessibilityButtonCallback() {
45           @Override
46           public void onClicked(AccessibilityButtonController controller) {
47             isClicked = true;
48           }
49         };
50     accessibilityButtonController.registerAccessibilityButtonCallback(accessibilityButtonCallback);
51   }
52 
53   /** AccessibilityService for {@link ShadowAccessibilityButtonControllerTest} */
54   public static class MyService extends AccessibilityService {
55     @Override
onDestroy()56     public void onDestroy() {
57       super.onDestroy();
58     }
59 
60     @Override
onAccessibilityEvent(AccessibilityEvent arg0)61     public void onAccessibilityEvent(AccessibilityEvent arg0) {
62       // Do nothing
63     }
64 
65     @Override
onInterrupt()66     public void onInterrupt() {
67       // Do nothing
68     }
69   }
70 }
71