1/* 2 * Copyright (C) 2008 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.content.Context; 20import android.test.AndroidTestCase; 21import android.test.suitebuilder.annotation.SmallTest; 22 23public class ViewGroupAttributesTest extends AndroidTestCase { 24 25 private MyViewGroup mViewGroup; 26 27 private static final class MyViewGroup extends ViewGroup { 28 29 public MyViewGroup(Context context) { 30 super(context); 31 } 32 33 @Override 34 protected void onLayout(boolean changed, int l, int t, int r, int b) { 35 } 36 37 @Override 38 public boolean isChildrenDrawnWithCacheEnabled() { 39 return super.isChildrenDrawnWithCacheEnabled(); 40 } 41 } 42 43 @Override 44 protected void setUp() throws Exception { 45 super.setUp(); 46 mViewGroup = new MyViewGroup(getContext()); 47 } 48 49 @SmallTest 50 public void testDescendantFocusabilityEnum() { 51 assertEquals("expected ViewGroup.FOCUS_BEFORE_DESCENDANTS to be default", 52 ViewGroup.FOCUS_BEFORE_DESCENDANTS, mViewGroup.getDescendantFocusability()); 53 54 // remember some state before we muck with flags 55 final boolean isAnimationCachEnabled = mViewGroup.isAnimationCacheEnabled(); 56 final boolean isAlwaysDrawnWithCacheEnabled = mViewGroup.isAlwaysDrawnWithCacheEnabled(); 57 final boolean isChildrenDrawnWithCacheEnabled = mViewGroup.isChildrenDrawnWithCacheEnabled(); 58 59 mViewGroup.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS); 60 assertEquals(ViewGroup.FOCUS_AFTER_DESCENDANTS, mViewGroup.getDescendantFocusability()); 61 62 mViewGroup.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS); 63 assertEquals(ViewGroup.FOCUS_BLOCK_DESCENDANTS, mViewGroup.getDescendantFocusability()); 64 65 mViewGroup.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS); 66 assertEquals(ViewGroup.FOCUS_BEFORE_DESCENDANTS, mViewGroup.getDescendantFocusability()); 67 68 // verify we didn't change something unrelated 69 final String msg = "setDescendantFocusability messed with an unrelated flag"; 70 assertEquals(msg, isAnimationCachEnabled, mViewGroup.isAnimationCacheEnabled()); 71 assertEquals(msg, isAlwaysDrawnWithCacheEnabled, mViewGroup.isAlwaysDrawnWithCacheEnabled()); 72 assertEquals(msg, isChildrenDrawnWithCacheEnabled, mViewGroup.isChildrenDrawnWithCacheEnabled()); 73 } 74 75 @SmallTest 76 public void testWrongIntSetForDescendantFocusabilityEnum() { 77 try { 78 mViewGroup.setDescendantFocusability(0); 79 fail("expected setting wrong flag to throw an exception"); 80 } catch (IllegalArgumentException expected) { 81 } 82 } 83} 84