BucketTests.java revision 039044aee1fc6dbd42b8b472c54122d268656939
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 19f78a300c82748e29a3890c8f17a13726aacf33beChris Banesimport android.graphics.Bitmap; 20f78a300c82748e29a3890c8f17a13726aacf33beChris Banesimport android.graphics.BitmapFactory; 21f78a300c82748e29a3890c8f17a13726aacf33beChris Banesimport android.graphics.Color; 22f78a300c82748e29a3890c8f17a13726aacf33beChris Banesimport android.test.InstrumentationTestCase; 23f78a300c82748e29a3890c8f17a13726aacf33beChris Banes 24f78a300c82748e29a3890c8f17a13726aacf33beChris Banesimport java.util.ArrayList; 25f78a300c82748e29a3890c8f17a13726aacf33beChris Banes 26f78a300c82748e29a3890c8f17a13726aacf33beChris Banes/** 27f78a300c82748e29a3890c8f17a13726aacf33beChris Banes * @hide 28f78a300c82748e29a3890c8f17a13726aacf33beChris Banes */ 29f78a300c82748e29a3890c8f17a13726aacf33beChris Banespublic class BucketTests extends InstrumentationTestCase { 30f78a300c82748e29a3890c8f17a13726aacf33beChris Banes 31f78a300c82748e29a3890c8f17a13726aacf33beChris Banes private Bitmap mSource; 32f78a300c82748e29a3890c8f17a13726aacf33beChris Banes 33f78a300c82748e29a3890c8f17a13726aacf33beChris Banes @Override 34f78a300c82748e29a3890c8f17a13726aacf33beChris Banes protected void setUp() throws Exception { 35f78a300c82748e29a3890c8f17a13726aacf33beChris Banes super.setUp(); 36f78a300c82748e29a3890c8f17a13726aacf33beChris Banes 37f78a300c82748e29a3890c8f17a13726aacf33beChris Banes mSource = BitmapFactory.decodeResource(getInstrumentation().getContext().getResources(), 38f78a300c82748e29a3890c8f17a13726aacf33beChris Banes android.R.drawable.sym_def_app_icon); 39f78a300c82748e29a3890c8f17a13726aacf33beChris Banes } 40f78a300c82748e29a3890c8f17a13726aacf33beChris Banes 41f78a300c82748e29a3890c8f17a13726aacf33beChris Banes public void testSourceBitmapNotRecycled() { 42f78a300c82748e29a3890c8f17a13726aacf33beChris Banes Palette.from(mSource).generate(); 43f78a300c82748e29a3890c8f17a13726aacf33beChris Banes assertFalse(mSource.isRecycled()); 44f78a300c82748e29a3890c8f17a13726aacf33beChris Banes } 45f78a300c82748e29a3890c8f17a13726aacf33beChris Banes 46f78a300c82748e29a3890c8f17a13726aacf33beChris Banes public void testSwatchesUnmodifiable() { 47f78a300c82748e29a3890c8f17a13726aacf33beChris Banes Palette p = Palette.from(mSource).generate(); 48f78a300c82748e29a3890c8f17a13726aacf33beChris Banes boolean thrown = false; 49f78a300c82748e29a3890c8f17a13726aacf33beChris Banes 50f78a300c82748e29a3890c8f17a13726aacf33beChris Banes try { 51f78a300c82748e29a3890c8f17a13726aacf33beChris Banes p.getSwatches().remove(0); 52f78a300c82748e29a3890c8f17a13726aacf33beChris Banes } catch (UnsupportedOperationException e) { 53f78a300c82748e29a3890c8f17a13726aacf33beChris Banes thrown = true; 54f78a300c82748e29a3890c8f17a13726aacf33beChris Banes } 55f78a300c82748e29a3890c8f17a13726aacf33beChris Banes 56f78a300c82748e29a3890c8f17a13726aacf33beChris Banes assertTrue(thrown); 57f78a300c82748e29a3890c8f17a13726aacf33beChris Banes } 58f78a300c82748e29a3890c8f17a13726aacf33beChris Banes 59f78a300c82748e29a3890c8f17a13726aacf33beChris Banes public void testSwatchesBuilder() { 60f78a300c82748e29a3890c8f17a13726aacf33beChris Banes ArrayList<Palette.Swatch> swatches = new ArrayList<>(); 61f78a300c82748e29a3890c8f17a13726aacf33beChris Banes swatches.add(new Palette.Swatch(Color.BLACK, 40)); 62f78a300c82748e29a3890c8f17a13726aacf33beChris Banes swatches.add(new Palette.Swatch(Color.GREEN, 60)); 63f78a300c82748e29a3890c8f17a13726aacf33beChris Banes swatches.add(new Palette.Swatch(Color.BLUE, 10)); 64f78a300c82748e29a3890c8f17a13726aacf33beChris Banes 65f78a300c82748e29a3890c8f17a13726aacf33beChris Banes Palette p = Palette.from(swatches); 66f78a300c82748e29a3890c8f17a13726aacf33beChris Banes 67f78a300c82748e29a3890c8f17a13726aacf33beChris Banes assertEquals(swatches, p.getSwatches()); 68f78a300c82748e29a3890c8f17a13726aacf33beChris Banes } 69d27ec041be0a4251176e5daaea526f231b03f38eChris Banes 70d27ec041be0a4251176e5daaea526f231b03f38eChris Banes public void testRegionWhole() { 71d27ec041be0a4251176e5daaea526f231b03f38eChris Banes Palette.Builder b = new Palette.Builder(mSource); 72d27ec041be0a4251176e5daaea526f231b03f38eChris Banes b.setRegion(0, 0, mSource.getWidth(), mSource.getHeight()); 73d27ec041be0a4251176e5daaea526f231b03f38eChris Banes 74d27ec041be0a4251176e5daaea526f231b03f38eChris Banes Throwable thrown = null; 75d27ec041be0a4251176e5daaea526f231b03f38eChris Banes try { 76d27ec041be0a4251176e5daaea526f231b03f38eChris Banes b.generate(); 77d27ec041be0a4251176e5daaea526f231b03f38eChris Banes } catch (Exception e) { 78d27ec041be0a4251176e5daaea526f231b03f38eChris Banes thrown = e; 79d27ec041be0a4251176e5daaea526f231b03f38eChris Banes } 80d27ec041be0a4251176e5daaea526f231b03f38eChris Banes assertNull(thrown); 81d27ec041be0a4251176e5daaea526f231b03f38eChris Banes } 82d27ec041be0a4251176e5daaea526f231b03f38eChris Banes 83d27ec041be0a4251176e5daaea526f231b03f38eChris Banes public void testRegionUpperLeft() { 84d27ec041be0a4251176e5daaea526f231b03f38eChris Banes Palette.Builder b = new Palette.Builder(mSource); 85d27ec041be0a4251176e5daaea526f231b03f38eChris Banes b.setRegion(0, 0, mSource.getWidth() / 2, mSource.getHeight() / 2); 86d27ec041be0a4251176e5daaea526f231b03f38eChris Banes 87d27ec041be0a4251176e5daaea526f231b03f38eChris Banes Throwable thrown = null; 88d27ec041be0a4251176e5daaea526f231b03f38eChris Banes try { 89d27ec041be0a4251176e5daaea526f231b03f38eChris Banes b.generate(); 90d27ec041be0a4251176e5daaea526f231b03f38eChris Banes } catch (Exception e) { 91d27ec041be0a4251176e5daaea526f231b03f38eChris Banes thrown = e; 92d27ec041be0a4251176e5daaea526f231b03f38eChris Banes } 93d27ec041be0a4251176e5daaea526f231b03f38eChris Banes assertNull(thrown); 94d27ec041be0a4251176e5daaea526f231b03f38eChris Banes } 95d27ec041be0a4251176e5daaea526f231b03f38eChris Banes 96d27ec041be0a4251176e5daaea526f231b03f38eChris Banes public void testRegionBottomRight() { 97d27ec041be0a4251176e5daaea526f231b03f38eChris Banes Palette.Builder b = new Palette.Builder(mSource); 98d27ec041be0a4251176e5daaea526f231b03f38eChris Banes b.setRegion(mSource.getWidth() / 2, mSource.getHeight() / 2, 99d27ec041be0a4251176e5daaea526f231b03f38eChris Banes mSource.getWidth(), mSource.getHeight()); 100d27ec041be0a4251176e5daaea526f231b03f38eChris Banes 101d27ec041be0a4251176e5daaea526f231b03f38eChris Banes Throwable thrown = null; 102d27ec041be0a4251176e5daaea526f231b03f38eChris Banes try { 103d27ec041be0a4251176e5daaea526f231b03f38eChris Banes b.generate(); 104d27ec041be0a4251176e5daaea526f231b03f38eChris Banes } catch (Exception e) { 105d27ec041be0a4251176e5daaea526f231b03f38eChris Banes thrown = e; 106d27ec041be0a4251176e5daaea526f231b03f38eChris Banes } 107d27ec041be0a4251176e5daaea526f231b03f38eChris Banes assertNull(thrown); 108d27ec041be0a4251176e5daaea526f231b03f38eChris Banes } 109039044aee1fc6dbd42b8b472c54122d268656939Chris Banes 110039044aee1fc6dbd42b8b472c54122d268656939Chris Banes public void testOnePixelTallBitmap() { 111039044aee1fc6dbd42b8b472c54122d268656939Chris Banes Bitmap bitmap = Bitmap.createBitmap(1000, 1, Bitmap.Config.ARGB_8888); 112039044aee1fc6dbd42b8b472c54122d268656939Chris Banes 113039044aee1fc6dbd42b8b472c54122d268656939Chris Banes Palette.Builder b = new Palette.Builder(bitmap); 114039044aee1fc6dbd42b8b472c54122d268656939Chris Banes 115039044aee1fc6dbd42b8b472c54122d268656939Chris Banes Throwable thrown = null; 116039044aee1fc6dbd42b8b472c54122d268656939Chris Banes try { 117039044aee1fc6dbd42b8b472c54122d268656939Chris Banes b.generate(); 118039044aee1fc6dbd42b8b472c54122d268656939Chris Banes } catch (Exception e) { 119039044aee1fc6dbd42b8b472c54122d268656939Chris Banes thrown = e; 120039044aee1fc6dbd42b8b472c54122d268656939Chris Banes } 121039044aee1fc6dbd42b8b472c54122d268656939Chris Banes assertNull(thrown); 122039044aee1fc6dbd42b8b472c54122d268656939Chris Banes } 123039044aee1fc6dbd42b8b472c54122d268656939Chris Banes 124039044aee1fc6dbd42b8b472c54122d268656939Chris Banes public void testOnePixelWideBitmap() { 125039044aee1fc6dbd42b8b472c54122d268656939Chris Banes Bitmap bitmap = Bitmap.createBitmap(1, 1000, Bitmap.Config.ARGB_8888); 126039044aee1fc6dbd42b8b472c54122d268656939Chris Banes 127039044aee1fc6dbd42b8b472c54122d268656939Chris Banes Palette.Builder b = new Palette.Builder(bitmap); 128039044aee1fc6dbd42b8b472c54122d268656939Chris Banes 129039044aee1fc6dbd42b8b472c54122d268656939Chris Banes Throwable thrown = null; 130039044aee1fc6dbd42b8b472c54122d268656939Chris Banes try { 131039044aee1fc6dbd42b8b472c54122d268656939Chris Banes b.generate(); 132039044aee1fc6dbd42b8b472c54122d268656939Chris Banes } catch (Exception e) { 133039044aee1fc6dbd42b8b472c54122d268656939Chris Banes thrown = e; 134039044aee1fc6dbd42b8b472c54122d268656939Chris Banes } 135039044aee1fc6dbd42b8b472c54122d268656939Chris Banes assertNull(thrown); 136039044aee1fc6dbd42b8b472c54122d268656939Chris Banes } 137f78a300c82748e29a3890c8f17a13726aacf33beChris Banes} 138