Home | History | Annotate | Download | only in view
      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