DrawableCompatTest.java revision 4da36b0dfa8436b197314094337fa3102fcca1bc
189d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes/* 289d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes * Copyright (C) 2016 The Android Open Source Project 389d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes * 489d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes * Licensed under the Apache License, Version 2.0 (the "License"); 589d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes * you may not use this file except in compliance with the License. 689d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes * You may obtain a copy of the License at 789d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes * 889d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes * http://www.apache.org/licenses/LICENSE-2.0 989d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes * 1089d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes * Unless required by applicable law or agreed to in writing, software 1189d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes * distributed under the License is distributed on an "AS IS" BASIS, 1289d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1389d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes * See the License for the specific language governing permissions and 1489d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes * limitations under the License. 1589d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes */ 1689d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes 1789d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banespackage android.support.v4.graphics; 1889d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes 1989d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banesimport android.graphics.Rect; 2089d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banesimport android.graphics.drawable.Drawable; 2189d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banesimport android.graphics.drawable.GradientDrawable; 2289d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banesimport android.support.v4.graphics.drawable.DrawableCompat; 2389d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banesimport android.test.AndroidTestCase; 2489d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banesimport android.test.suitebuilder.annotation.SmallTest; 2589d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes 2689d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banespublic class DrawableCompatTest extends AndroidTestCase { 2789d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes 2889d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes @SmallTest 2989d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes public void testDrawableUnwrap() { 3089d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes final Drawable original = new GradientDrawable(); 3189d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes final Drawable wrappedDrawable = DrawableCompat.wrap(original); 3289d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes assertSame(original, DrawableCompat.unwrap(wrappedDrawable)); 3389d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes } 3489d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes 3589d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes @SmallTest 3689d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes public void testDrawableChangeBoundsCopy() { 3789d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes final Rect bounds = new Rect(0, 0, 10, 10); 3889d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes 39be61247c92b085602d3f671be6f506e9813aba19Chris Banes final Drawable drawable = new GradientDrawable(); 40be61247c92b085602d3f671be6f506e9813aba19Chris Banes 41be61247c92b085602d3f671be6f506e9813aba19Chris Banes final Drawable wrapper = DrawableCompat.wrap(drawable); 42be61247c92b085602d3f671be6f506e9813aba19Chris Banes wrapper.setBounds(bounds); 4389d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes 44be61247c92b085602d3f671be6f506e9813aba19Chris Banes // Assert that the bounds were given to the original drawable 45be61247c92b085602d3f671be6f506e9813aba19Chris Banes assertEquals(bounds, drawable.getBounds()); 4689d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes } 4789d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes 4889d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes @SmallTest 4989d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes public void testDrawableWrapOnlyWrapsOnce() { 5089d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes final Drawable wrappedDrawable = DrawableCompat.wrap(new GradientDrawable()); 5189d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes assertSame(wrappedDrawable, DrawableCompat.wrap(wrappedDrawable)); 5289d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes } 5389d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes 544da36b0dfa8436b197314094337fa3102fcca1bcChris Banes @SmallTest 554da36b0dfa8436b197314094337fa3102fcca1bcChris Banes public void testWrapMutatedDrawableHasConstantState() { 564da36b0dfa8436b197314094337fa3102fcca1bcChris Banes // First create a Drawable, and mutated it so that it has a constant state 574da36b0dfa8436b197314094337fa3102fcca1bcChris Banes Drawable drawable = new GradientDrawable(); 584da36b0dfa8436b197314094337fa3102fcca1bcChris Banes drawable = drawable.mutate(); 594da36b0dfa8436b197314094337fa3102fcca1bcChris Banes assertNotNull(drawable.getConstantState()); 604da36b0dfa8436b197314094337fa3102fcca1bcChris Banes 614da36b0dfa8436b197314094337fa3102fcca1bcChris Banes // Now wrap and assert that the wrapper also returns a constant state 624da36b0dfa8436b197314094337fa3102fcca1bcChris Banes final Drawable wrapper = DrawableCompat.wrap(drawable); 634da36b0dfa8436b197314094337fa3102fcca1bcChris Banes assertNotNull(wrapper.getConstantState()); 644da36b0dfa8436b197314094337fa3102fcca1bcChris Banes } 654da36b0dfa8436b197314094337fa3102fcca1bcChris Banes 6689d63e9cbc1daf9e04ba6261cfd141e6dd68ec63Chris Banes}