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 17 package android.view; 18 19 import android.test.ActivityInstrumentationTestCase2; 20 import android.test.UiThreadTest; 21 import android.test.suitebuilder.annotation.MediumTest; 22 import android.view.View; 23 import android.view.ViewGroup; 24 import android.widget.Button; 25 import android.widget.TextView; 26 import com.android.frameworks.coretests.R; 27 28 /** 29 * Exercises {@link android.view.View}'s ability to change visibility between 30 * GONE, VISIBLE and INVISIBLE. 31 */ 32 public class VisibilityCallbackTest extends ActivityInstrumentationTestCase2<VisibilityCallback> { 33 private TextView mRefUp; 34 private TextView mRefDown; 35 private VisibilityCallback.MonitoredTextView mVictim; 36 private ViewGroup mParent; 37 private Button mVisible; 38 private Button mInvisible; 39 private Button mGone; 40 41 public VisibilityCallbackTest() { 42 super("com.android.frameworks.coretests", VisibilityCallback.class); 43 } 44 45 @Override 46 public void setUp() throws Exception { 47 super.setUp(); 48 49 final VisibilityCallback a = getActivity(); 50 mRefUp = (TextView) a.findViewById(R.id.refUp); 51 mRefDown = (TextView) a.findViewById(R.id.refDown); 52 mVictim = (VisibilityCallback.MonitoredTextView) a.findViewById(R.id.victim); 53 mParent = (ViewGroup) a.findViewById(R.id.parent); 54 mVisible = (Button) a.findViewById(R.id.vis); 55 mInvisible = (Button) a.findViewById(R.id.invis); 56 mGone = (Button) a.findViewById(R.id.gone); 57 58 mVictim.post(new Runnable() { 59 public void run() { 60 mVictim.setVisibility(View.INVISIBLE); 61 } 62 }); 63 getInstrumentation().waitForIdleSync(); 64 } 65 66 @MediumTest 67 @UiThreadTest 68 public void testSetUpConditions() throws Exception { 69 assertNotNull(mRefUp); 70 assertNotNull(mRefDown); 71 assertNotNull(mVictim); 72 assertNotNull(mVisible); 73 assertNotNull(mInvisible); 74 assertNotNull(mGone); 75 76 assertTrue(mVisible.hasFocus()); 77 assertEquals(View.INVISIBLE, mVictim.getVisibility()); 78 assertEquals(View.VISIBLE, mParent.getVisibility()); 79 } 80 81 @MediumTest 82 @UiThreadTest 83 public void testDirect() throws Exception { 84 mVictim.setVisibility(View.VISIBLE); 85 assertEquals(View.VISIBLE, mVictim.getLastChangedVisibility()); 86 assertEquals(mVictim, mVictim.getLastVisChangedView()); 87 88 mVictim.setVisibility(View.INVISIBLE); 89 assertEquals(View.INVISIBLE, mVictim.getLastChangedVisibility()); 90 assertEquals(mVictim, mVictim.getLastVisChangedView()); 91 92 mVictim.setVisibility(View.GONE); 93 assertEquals(View.GONE, mVictim.getLastChangedVisibility()); 94 assertEquals(mVictim, mVictim.getLastVisChangedView()); 95 } 96 97 @MediumTest 98 @UiThreadTest 99 public void testChild() throws Exception { 100 mParent.setVisibility(View.INVISIBLE); 101 assertEquals(View.INVISIBLE, mVictim.getLastChangedVisibility()); 102 assertEquals(mParent, mVictim.getLastVisChangedView()); 103 104 mParent.setVisibility(View.GONE); 105 assertEquals(View.GONE, mVictim.getLastChangedVisibility()); 106 assertEquals(mParent, mVictim.getLastVisChangedView()); 107 108 mParent.setVisibility(View.VISIBLE); 109 assertEquals(View.VISIBLE, mVictim.getLastChangedVisibility()); 110 assertEquals(mParent, mVictim.getLastVisChangedView()); 111 } 112 } 113