WallpaperColorsTest.java revision 4bd24f36c5c4845bc9fda9c7211d1be2937a748a
14bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin/*
24bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin * Copyright (C) 2017 The Android Open Source Project
34bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin *
44bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin * Licensed under the Apache License, Version 2.0 (the "License");
54bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin * you may not use this file except in compliance with the License.
64bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin * You may obtain a copy of the License at
74bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin *
84bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin *      http://www.apache.org/licenses/LICENSE-2.0
94bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin *
104bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin * Unless required by applicable law or agreed to in writing, software
114bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin * distributed under the License is distributed on an "AS IS" BASIS,
124bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin * See the License for the specific language governing permissions and
144bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin * limitations under the License
154bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin */
164bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin
174bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupinpackage android.app;
184bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin
194bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupinimport android.graphics.Bitmap;
204bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupinimport android.graphics.Canvas;
214bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupinimport android.graphics.Color;
224bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupinimport android.graphics.Paint;
234bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupinimport android.support.test.filters.SmallTest;
244bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupinimport android.support.test.runner.AndroidJUnit4;
254bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin
264bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupinimport org.junit.Assert;
274bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupinimport org.junit.Test;
284bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupinimport org.junit.runner.RunWith;
294bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin
304bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin@SmallTest
314bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin@RunWith(AndroidJUnit4.class)
324bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupinpublic class WallpaperColorsTest {
334bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin
344bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin    @Test
354bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin    public void supportsDarkTextOverrideTest() {
364bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin        final Color color = Color.valueOf(Color.WHITE);
374bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin        // Default should not support dark text!
384bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin        WallpaperColors colors = new WallpaperColors(color, null, null, 0);
394bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin        Assert.assertTrue("Default behavior is not to support dark text",
404bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin                (colors.getColorHints() & WallpaperColors.HINT_SUPPORTS_DARK_TEXT) == 0);
414bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin
424bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin        // Override it
434bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin        colors = new WallpaperColors(color, null, null, WallpaperColors.HINT_SUPPORTS_DARK_TEXT);
444bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin        Assert.assertFalse("Forcing dark text support doesn't work",
454bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin                (colors.getColorHints() & WallpaperColors.HINT_SUPPORTS_DARK_TEXT) == 0);
464bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin    }
474bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin
484bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin    /**
494bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin     * Sanity check to guarantee that white supports dark text and black doesn't
504bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin     */
514bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin    @Test
524bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin    public void colorHintsTest() {
534bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin        Bitmap image = Bitmap.createBitmap(30, 30, Bitmap.Config.ARGB_8888);
544bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin        Canvas canvas = new Canvas(image);
554bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin
564bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin        canvas.drawColor(Color.WHITE);
574bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin        int hints = WallpaperColors.fromBitmap(image).getColorHints();
584bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin        boolean supportsDarkText = (hints & WallpaperColors.HINT_SUPPORTS_DARK_TEXT) != 0;
594bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin        boolean supportsDarkTheme = (hints & WallpaperColors.HINT_SUPPORTS_DARK_THEME) != 0;
604bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin        Assert.assertTrue("White surface should support dark text", supportsDarkText);
614bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin        Assert.assertFalse("White surface shouldn't support dark theme", supportsDarkTheme);
624bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin
634bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin        canvas.drawColor(Color.BLACK);
644bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin        hints = WallpaperColors.fromBitmap(image).getColorHints();
654bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin        supportsDarkText = (hints & WallpaperColors.HINT_SUPPORTS_DARK_TEXT) != 0;
664bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin        supportsDarkTheme = (hints & WallpaperColors.HINT_SUPPORTS_DARK_THEME) != 0;
674bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin        Assert.assertFalse("Black surface shouldn't support dark text", supportsDarkText);
684bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin        Assert.assertTrue("Black surface should support dark theme", supportsDarkTheme);
694bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin
704bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin        Paint paint = new Paint();
714bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin        paint.setStyle(Paint.Style.FILL);
724bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin        paint.setColor(Color.BLACK);
734bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin        canvas.drawColor(Color.WHITE);
744bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin        canvas.drawRect(0, 0, 8, 8, paint);
754bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin        supportsDarkText = (WallpaperColors.fromBitmap(image)
764bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin                .getColorHints() & WallpaperColors.HINT_SUPPORTS_DARK_TEXT) != 0;
774bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin        Assert.assertFalse("Light surface shouldn't support dark text "
784bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin                + "when it contains dark pixels", supportsDarkText);
794bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin    }
804bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin}
81