ConsistencyTest.java revision 434696ff29b2680bff5cb9e0ab98c7b20f5ea5b2
1f78a300c82748e29a3890c8f17a13726aacf33beChris Banes/*
2f78a300c82748e29a3890c8f17a13726aacf33beChris Banes * Copyright (C) 2015 The Android Open Source Project
3f78a300c82748e29a3890c8f17a13726aacf33beChris Banes *
4f78a300c82748e29a3890c8f17a13726aacf33beChris Banes * Licensed under the Apache License, Version 2.0 (the "License");
5f78a300c82748e29a3890c8f17a13726aacf33beChris Banes * you may not use this file except in compliance with the License.
6f78a300c82748e29a3890c8f17a13726aacf33beChris Banes * You may obtain a copy of the License at
7f78a300c82748e29a3890c8f17a13726aacf33beChris Banes *
8f78a300c82748e29a3890c8f17a13726aacf33beChris Banes *      http://www.apache.org/licenses/LICENSE-2.0
9f78a300c82748e29a3890c8f17a13726aacf33beChris Banes *
10f78a300c82748e29a3890c8f17a13726aacf33beChris Banes * Unless required by applicable law or agreed to in writing, software
11f78a300c82748e29a3890c8f17a13726aacf33beChris Banes * distributed under the License is distributed on an "AS IS" BASIS,
12f78a300c82748e29a3890c8f17a13726aacf33beChris Banes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f78a300c82748e29a3890c8f17a13726aacf33beChris Banes * See the License for the specific language governing permissions and
14f78a300c82748e29a3890c8f17a13726aacf33beChris Banes * limitations under the License.
15f78a300c82748e29a3890c8f17a13726aacf33beChris Banes */
16f78a300c82748e29a3890c8f17a13726aacf33beChris Banes
17f78a300c82748e29a3890c8f17a13726aacf33beChris Banespackage android.support.v7.graphics;
18f78a300c82748e29a3890c8f17a13726aacf33beChris Banes
19434696ff29b2680bff5cb9e0ab98c7b20f5ea5b2Chris Banesimport org.junit.Test;
20434696ff29b2680bff5cb9e0ab98c7b20f5ea5b2Chris Banesimport org.junit.runner.RunWith;
21434696ff29b2680bff5cb9e0ab98c7b20f5ea5b2Chris Banes
22f78a300c82748e29a3890c8f17a13726aacf33beChris Banesimport android.graphics.Bitmap;
23f78a300c82748e29a3890c8f17a13726aacf33beChris Banesimport android.graphics.BitmapFactory;
24434696ff29b2680bff5cb9e0ab98c7b20f5ea5b2Chris Banesimport android.support.test.runner.AndroidJUnit4;
25f78a300c82748e29a3890c8f17a13726aacf33beChris Banesimport android.test.InstrumentationTestCase;
26434696ff29b2680bff5cb9e0ab98c7b20f5ea5b2Chris Banesimport android.test.suitebuilder.annotation.MediumTest;
27f78a300c82748e29a3890c8f17a13726aacf33beChris Banes
28434696ff29b2680bff5cb9e0ab98c7b20f5ea5b2Chris Banesimport static android.support.v7.graphics.TestUtils.loadSampleBitmap;
29434696ff29b2680bff5cb9e0ab98c7b20f5ea5b2Chris Banesimport static org.junit.Assert.assertEquals;
30434696ff29b2680bff5cb9e0ab98c7b20f5ea5b2Chris Banes
31434696ff29b2680bff5cb9e0ab98c7b20f5ea5b2Chris Banes@RunWith(AndroidJUnit4.class)
32434696ff29b2680bff5cb9e0ab98c7b20f5ea5b2Chris Banespublic class ConsistencyTest {
33f78a300c82748e29a3890c8f17a13726aacf33beChris Banes
34f78a300c82748e29a3890c8f17a13726aacf33beChris Banes    private static final int NUMBER_TRIALS = 10;
35f78a300c82748e29a3890c8f17a13726aacf33beChris Banes
36434696ff29b2680bff5cb9e0ab98c7b20f5ea5b2Chris Banes    @Test
37434696ff29b2680bff5cb9e0ab98c7b20f5ea5b2Chris Banes    @MediumTest
38f78a300c82748e29a3890c8f17a13726aacf33beChris Banes    public void testConsistency() {
39f78a300c82748e29a3890c8f17a13726aacf33beChris Banes        Palette lastPalette = null;
40434696ff29b2680bff5cb9e0ab98c7b20f5ea5b2Chris Banes        final Bitmap bitmap = loadSampleBitmap();
41f78a300c82748e29a3890c8f17a13726aacf33beChris Banes
42f78a300c82748e29a3890c8f17a13726aacf33beChris Banes        for (int i = 0; i < NUMBER_TRIALS; i++) {
43f78a300c82748e29a3890c8f17a13726aacf33beChris Banes            Palette newPalette = Palette.from(bitmap).generate();
44f78a300c82748e29a3890c8f17a13726aacf33beChris Banes            if (lastPalette != null) {
45f78a300c82748e29a3890c8f17a13726aacf33beChris Banes                assetPalettesEqual(lastPalette, newPalette);
46f78a300c82748e29a3890c8f17a13726aacf33beChris Banes            }
47f78a300c82748e29a3890c8f17a13726aacf33beChris Banes            lastPalette = newPalette;
48f78a300c82748e29a3890c8f17a13726aacf33beChris Banes        }
49f78a300c82748e29a3890c8f17a13726aacf33beChris Banes    }
50f78a300c82748e29a3890c8f17a13726aacf33beChris Banes
51f78a300c82748e29a3890c8f17a13726aacf33beChris Banes    private static void assetPalettesEqual(Palette p1, Palette p2) {
52f78a300c82748e29a3890c8f17a13726aacf33beChris Banes        assertEquals(p1.getVibrantSwatch(), p2.getVibrantSwatch());
53f78a300c82748e29a3890c8f17a13726aacf33beChris Banes        assertEquals(p1.getLightVibrantSwatch(), p2.getLightVibrantSwatch());
54f78a300c82748e29a3890c8f17a13726aacf33beChris Banes        assertEquals(p1.getDarkVibrantSwatch(), p2.getDarkVibrantSwatch());
55f78a300c82748e29a3890c8f17a13726aacf33beChris Banes        assertEquals(p1.getMutedSwatch(), p2.getMutedSwatch());
56f78a300c82748e29a3890c8f17a13726aacf33beChris Banes        assertEquals(p1.getLightMutedSwatch(), p2.getLightMutedSwatch());
57f78a300c82748e29a3890c8f17a13726aacf33beChris Banes        assertEquals(p1.getDarkMutedSwatch(), p2.getDarkMutedSwatch());
58f78a300c82748e29a3890c8f17a13726aacf33beChris Banes    }
59f78a300c82748e29a3890c8f17a13726aacf33beChris Banes}
60