1 package android.app; 2 3 import static com.google.common.truth.Truth.assertThat; 4 import static org.junit.Assume.assumeTrue; 5 6 import android.content.Context; 7 import android.os.Build; 8 import android.view.translation.TranslationCapability; 9 import android.view.translation.TranslationManager; 10 import androidx.test.core.app.ActivityScenario; 11 import androidx.test.core.app.ApplicationProvider; 12 import androidx.test.ext.junit.runners.AndroidJUnit4; 13 import androidx.test.filters.SdkSuppress; 14 import java.util.Set; 15 import org.junit.Before; 16 import org.junit.Test; 17 import org.junit.runner.RunWith; 18 import org.robolectric.testapp.TestActivity; 19 20 /** Compatibility test for {@link TranslationManager}. */ 21 @RunWith(AndroidJUnit4.class) 22 @SdkSuppress(minSdkVersion = Build.VERSION_CODES.S) 23 public class TranslationManagerTest { 24 private final Context application = ApplicationProvider.getApplicationContext(); 25 private boolean hasTranslationManager = false; 26 27 @Before setUp()28 public void setUp() { 29 // TranslationManager is not always bound into Android device. 30 hasTranslationManager = application.getSystemService(TranslationManager.class) != null; 31 } 32 33 @Test translationManager_applicationInstance_isNotSameAsActivityInstance()34 public void translationManager_applicationInstance_isNotSameAsActivityInstance() { 35 assumeTrue(hasTranslationManager); 36 TranslationManager applicationTranslationManager = 37 application.getSystemService(TranslationManager.class); 38 assertThat(applicationTranslationManager).isNotNull(); 39 try (ActivityScenario<TestActivity> scenario = ActivityScenario.launch(TestActivity.class)) { 40 scenario.onActivity( 41 activity -> { 42 TranslationManager activityTranslationManager = 43 activity.getSystemService(TranslationManager.class); 44 assertThat(applicationTranslationManager) 45 .isNotSameInstanceAs(activityTranslationManager); 46 }); 47 } 48 } 49 50 @Test translationManager_activityInstance_isSameAsActivityInstance()51 public void translationManager_activityInstance_isSameAsActivityInstance() { 52 assumeTrue(hasTranslationManager); 53 try (ActivityScenario<TestActivity> scenario = ActivityScenario.launch(TestActivity.class)) { 54 scenario.onActivity( 55 activity -> { 56 TranslationManager activityTranslationManager = 57 activity.getSystemService(TranslationManager.class); 58 TranslationManager anotherActivityTranslationManager = 59 activity.getSystemService(TranslationManager.class); 60 assertThat(anotherActivityTranslationManager) 61 .isSameInstanceAs(activityTranslationManager); 62 }); 63 } 64 } 65 66 @Test translationManager_instance_retrievesSameCapabilities()67 public void translationManager_instance_retrievesSameCapabilities() { 68 assumeTrue(hasTranslationManager); 69 TranslationManager applicationTranslationManager = 70 application.getSystemService(TranslationManager.class); 71 try (ActivityScenario<TestActivity> scenario = ActivityScenario.launch(TestActivity.class)) { 72 scenario.onActivity( 73 activity -> { 74 TranslationManager activityTranslationManager = 75 activity.getSystemService(TranslationManager.class); 76 77 Set<TranslationCapability> applicationCapabilities = 78 applicationTranslationManager.getOnDeviceTranslationCapabilities(1, 2); 79 Set<TranslationCapability> activityCapabilities = 80 activityTranslationManager.getOnDeviceTranslationCapabilities(1, 2); 81 82 assertThat(activityCapabilities).isEqualTo(applicationCapabilities); 83 }); 84 } 85 } 86 } 87