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