diff options
author | Chihhang Chuang <chihhangchuang@google.com> | 2019-12-20 16:40:38 +0800 |
---|---|---|
committer | Chihhang Chuang <chihhangchuang@google.com> | 2019-12-23 11:56:24 +0800 |
commit | 5eccd03ece6b364b207ced9888dcb8c611f633b7 (patch) | |
tree | 5bf87faf87997b1a426c2dafc9fcc04a3b623969 /tests/src/com/android/customization/testing | |
parent | ae50661c59614d2c438f35da7f84026e6f17c265 (diff) | |
download | ThemePicker-5eccd03ece6b364b207ced9888dcb8c611f633b7.tar.gz |
[1/2] Add Espresso test for CustomizationPickerActivity
Change-Id: I437eacd0abb7f153c94a826b35aa6c62837f0e29
Diffstat (limited to 'tests/src/com/android/customization/testing')
6 files changed, 227 insertions, 0 deletions
diff --git a/tests/src/com/android/customization/testing/TestCustomizationInjector.java b/tests/src/com/android/customization/testing/TestCustomizationInjector.java new file mode 100644 index 00000000..10b59343 --- /dev/null +++ b/tests/src/com/android/customization/testing/TestCustomizationInjector.java @@ -0,0 +1,74 @@ +package com.android.customization.testing; + +import android.content.Context; + +import androidx.fragment.app.FragmentActivity; + +import com.android.customization.model.theme.OverlayManagerCompat; +import com.android.customization.model.theme.ThemeBundleProvider; +import com.android.customization.model.theme.ThemeManager; +import com.android.customization.module.CustomizationInjector; +import com.android.customization.module.CustomizationPreferences; +import com.android.customization.module.ThemesUserEventLogger; +import com.android.wallpaper.module.DrawableLayerResolver; +import com.android.wallpaper.module.PackageStatusNotifier; +import com.android.wallpaper.module.UserEventLogger; +import com.android.wallpaper.module.WallpaperSetter; +import com.android.wallpaper.testing.TestInjector; + +/** + * Test implementation of the dependency injector. + */ +public class TestCustomizationInjector extends TestInjector implements CustomizationInjector { + private CustomizationPreferences mCustomizationPreferences; + private ThemeManager mThemeManager; + private PackageStatusNotifier mPackageStatusNotifier; + private DrawableLayerResolver mDrawableLayerResolver; + private UserEventLogger mUserEventLogger; + + @Override + public CustomizationPreferences getCustomizationPreferences(Context context) { + if (mCustomizationPreferences == null) { + mCustomizationPreferences = new TestDefaultCustomizationPreferences(context); + } + return mCustomizationPreferences; + } + + @Override + public ThemeManager getThemeManager( + ThemeBundleProvider provider, + FragmentActivity activity, + WallpaperSetter wallpaperSetter, + OverlayManagerCompat overlayManagerCompat, + ThemesUserEventLogger logger) { + if (mThemeManager == null) { + mThemeManager = new TestThemeManager(provider, activity, wallpaperSetter, + overlayManagerCompat, logger); + } + return mThemeManager; + } + + @Override + public PackageStatusNotifier getPackageStatusNotifier(Context context) { + if (mPackageStatusNotifier == null) { + mPackageStatusNotifier = new TestPackageStatusNotifier(); + } + return mPackageStatusNotifier; + } + + @Override + public DrawableLayerResolver getDrawableLayerResolver() { + if (mDrawableLayerResolver == null) { + mDrawableLayerResolver = new TestDrawableLayerResolver(); + } + return mDrawableLayerResolver; + } + + @Override + public UserEventLogger getUserEventLogger(Context unused) { + if (mUserEventLogger == null) { + mUserEventLogger = new TestThemesUserEventLogger(); + } + return mUserEventLogger; + } +} diff --git a/tests/src/com/android/customization/testing/TestDefaultCustomizationPreferences.java b/tests/src/com/android/customization/testing/TestDefaultCustomizationPreferences.java new file mode 100644 index 00000000..bcf5a5f4 --- /dev/null +++ b/tests/src/com/android/customization/testing/TestDefaultCustomizationPreferences.java @@ -0,0 +1,41 @@ +package com.android.customization.testing; + +import android.content.Context; + +import com.android.customization.module.DefaultCustomizationPreferences; + +import java.util.HashSet; +import java.util.Set; + +/** + * Test implementation of {@link DefaultCustomizationPreferences}. + */ +public class TestDefaultCustomizationPreferences extends DefaultCustomizationPreferences { + + private String mCustomThemes; + private final Set<String> mTabVisited = new HashSet<>(); + + public TestDefaultCustomizationPreferences(Context context) { + super(context); + } + + @Override + public String getSerializedCustomThemes() { + return mCustomThemes; + } + + @Override + public void storeCustomThemes(String serializedCustomThemes) { + mCustomThemes = serializedCustomThemes; + } + + @Override + public boolean getTabVisited(String id) { + return mTabVisited.contains(id); + } + + @Override + public void setTabVisited(String id) { + mTabVisited.add(id); + } +} diff --git a/tests/src/com/android/customization/testing/TestDrawableLayerResolver.java b/tests/src/com/android/customization/testing/TestDrawableLayerResolver.java new file mode 100644 index 00000000..e507221e --- /dev/null +++ b/tests/src/com/android/customization/testing/TestDrawableLayerResolver.java @@ -0,0 +1,16 @@ +package com.android.customization.testing; + +import android.graphics.drawable.Drawable; +import android.graphics.drawable.LayerDrawable; + +import com.android.wallpaper.module.DrawableLayerResolver; + +/** + * Test implementation of {@link DrawableLayerResolver}. + */ +public class TestDrawableLayerResolver implements DrawableLayerResolver { + @Override + public Drawable resolveLayer(LayerDrawable layerDrawable) { + return layerDrawable.getDrawable(0); + } +} diff --git a/tests/src/com/android/customization/testing/TestPackageStatusNotifier.java b/tests/src/com/android/customization/testing/TestPackageStatusNotifier.java new file mode 100644 index 00000000..1e6a1a27 --- /dev/null +++ b/tests/src/com/android/customization/testing/TestPackageStatusNotifier.java @@ -0,0 +1,18 @@ +package com.android.customization.testing; + +import com.android.wallpaper.module.PackageStatusNotifier; + +/** + * Test implementation of {@link PackageStatusNotifier}. + */ +public class TestPackageStatusNotifier implements PackageStatusNotifier { + @Override + public void addListener(Listener listener, String action) { + // Do nothing + } + + @Override + public void removeListener(Listener listener) { + // Do nothing + } +} diff --git a/tests/src/com/android/customization/testing/TestThemeManager.java b/tests/src/com/android/customization/testing/TestThemeManager.java new file mode 100644 index 00000000..cc8567f1 --- /dev/null +++ b/tests/src/com/android/customization/testing/TestThemeManager.java @@ -0,0 +1,35 @@ +package com.android.customization.testing; + +import androidx.fragment.app.FragmentActivity; + +import com.android.customization.model.theme.OverlayManagerCompat; +import com.android.customization.model.theme.ThemeBundleProvider; +import com.android.customization.model.theme.ThemeManager; +import com.android.customization.module.ThemesUserEventLogger; +import com.android.wallpaper.module.WallpaperSetter; + +/** + * Test implementation of {@link ThemeManager}. + */ +public class TestThemeManager extends ThemeManager { + + private static boolean sIsAvailable; + + public TestThemeManager( + ThemeBundleProvider provider, + FragmentActivity activity, + WallpaperSetter wallpaperSetter, + OverlayManagerCompat overlayManagerCompat, + ThemesUserEventLogger logger) { + super(provider, activity, wallpaperSetter, overlayManagerCompat, logger); + } + + @Override + public boolean isAvailable() { + return sIsAvailable; + } + + public static void setAvailable(boolean available) { + sIsAvailable = available; + } +} diff --git a/tests/src/com/android/customization/testing/TestThemesUserEventLogger.java b/tests/src/com/android/customization/testing/TestThemesUserEventLogger.java new file mode 100644 index 00000000..36001920 --- /dev/null +++ b/tests/src/com/android/customization/testing/TestThemesUserEventLogger.java @@ -0,0 +1,43 @@ +package com.android.customization.testing; + +import com.android.customization.model.clock.Clockface; +import com.android.customization.model.grid.GridOption; +import com.android.customization.model.theme.ThemeBundle; +import com.android.customization.module.ThemesUserEventLogger; +import com.android.wallpaper.testing.TestUserEventLogger; + +/** + * Test implementation of {@link ThemesUserEventLogger}. + */ +public class TestThemesUserEventLogger extends TestUserEventLogger + implements ThemesUserEventLogger { + @Override + public void logThemeSelected(ThemeBundle theme, boolean isCustomTheme) { + // Do nothing. + } + + @Override + public void logThemeApplied(ThemeBundle theme, boolean isCustomTheme) { + // Do nothing. + } + + @Override + public void logClockSelected(Clockface clock) { + // Do nothing. + } + + @Override + public void logClockApplied(Clockface clock) { + // Do nothing. + } + + @Override + public void logGridSelected(GridOption grid) { + // Do nothing. + } + + @Override + public void logGridApplied(GridOption grid) { + // Do nothing. + } +} |