1/* 2 * Copyright (C) 2007 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package android.view; 18 19import android.view.ZeroSized; 20import com.android.frameworks.coretests.R; 21 22import android.test.ActivityInstrumentationTestCase; 23import android.test.suitebuilder.annotation.MediumTest; 24import android.view.View; 25import android.graphics.Bitmap; 26 27/** 28 * Builds the drawing cache of Views of various dimension. The assumption is that 29 * a View with a 0-sized dimension (width or height) will always have a null 30 * drawing cache. 31 */ 32public class ZeroSizedTest extends ActivityInstrumentationTestCase<ZeroSized> { 33 private View mWithDimension; 34 private View mWithNoWdith; 35 private View mWithNoHeight; 36 private View mWithNoDimension; 37 38 public ZeroSizedTest() { 39 super("com.android.frameworks.coretests", ZeroSized.class); 40 } 41 42 @Override 43 public void setUp() throws Exception { 44 super.setUp(); 45 46 final ZeroSized activity = getActivity(); 47 mWithDimension = activity.findViewById(R.id.dimension); 48 mWithNoWdith = activity.findViewById(R.id.noWidth); 49 mWithNoHeight = activity.findViewById(R.id.noHeight); 50 mWithNoDimension = activity.findViewById(R.id.noDimension); 51 } 52 53 @MediumTest 54 public void testSetUpConditions() throws Exception { 55 assertNotNull(mWithDimension); 56 assertNotNull(mWithNoWdith); 57 assertNotNull(mWithNoHeight); 58 assertNotNull(mWithNoDimension); 59 } 60 61 @MediumTest 62 public void testDrawingCacheWithDimension() throws Exception { 63 assertTrue(mWithDimension.getWidth() > 0); 64 assertTrue(mWithDimension.getHeight() > 0); 65 assertNotNull(createCacheForView(mWithDimension)); 66 } 67 68 @MediumTest 69 public void testDrawingCacheWithNoWidth() throws Exception { 70 assertTrue(mWithNoWdith.getWidth() == 0); 71 assertTrue(mWithNoWdith.getHeight() > 0); 72 assertNull(createCacheForView(mWithNoWdith)); 73 } 74 75 @MediumTest 76 public void testDrawingCacheWithNoHeight() throws Exception { 77 assertTrue(mWithNoHeight.getWidth() > 0); 78 assertTrue(mWithNoHeight.getHeight() == 0); 79 assertNull(createCacheForView(mWithNoHeight)); 80 } 81 82 @MediumTest 83 public void testDrawingCacheWithNoDimension() throws Exception { 84 assertTrue(mWithNoDimension.getWidth() == 0); 85 assertTrue(mWithNoDimension.getHeight() == 0); 86 assertNull(createCacheForView(mWithNoDimension)); 87 } 88 89 private Bitmap createCacheForView(final View view) { 90 final Bitmap[] cache = new Bitmap[1]; 91 getActivity().runOnUiThread(new Runnable() { 92 public void run() { 93 view.setDrawingCacheEnabled(true); 94 view.invalidate(); 95 view.buildDrawingCache(); 96 cache[0] = view.getDrawingCache(); 97 } 98 }); 99 getInstrumentation().waitForIdleSync(); 100 return cache[0]; 101 } 102} 103