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