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