• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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