1326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell/*
2326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell * Copyright (C) 2007 The Android Open Source Project
3326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell *
4326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell * Licensed under the Apache License, Version 2.0 (the "License");
5326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell * you may not use this file except in compliance with the License.
6326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell * You may obtain a copy of the License at
7326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell *
8326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell *      http://www.apache.org/licenses/LICENSE-2.0
9326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell *
10326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell * Unless required by applicable law or agreed to in writing, software
11326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell * distributed under the License is distributed on an "AS IS" BASIS,
12326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell * See the License for the specific language governing permissions and
14326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell * limitations under the License.
15326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell */
16326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell
171d3165f10b12165f02b7015ac1a817c5f60e6399Neal Nguyenpackage android.view;
18326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell
19326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powellimport android.test.ActivityInstrumentationTestCase2;
20326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powellimport android.test.UiThreadTest;
21326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powellimport android.test.suitebuilder.annotation.MediumTest;
22326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powellimport android.view.View;
23326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powellimport android.view.ViewGroup;
24326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powellimport android.widget.Button;
25326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powellimport android.widget.TextView;
261d3165f10b12165f02b7015ac1a817c5f60e6399Neal Nguyenimport com.android.frameworks.coretests.R;
27326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell
28326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell/**
29326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell * Exercises {@link android.view.View}'s ability to change visibility between
30326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell * GONE, VISIBLE and INVISIBLE.
31326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell */
32326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powellpublic class VisibilityCallbackTest extends ActivityInstrumentationTestCase2<VisibilityCallback> {
33326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell    private TextView mRefUp;
34326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell    private TextView mRefDown;
35326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell    private VisibilityCallback.MonitoredTextView mVictim;
36326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell    private ViewGroup mParent;
37326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell    private Button mVisible;
38326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell    private Button mInvisible;
39326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell    private Button mGone;
40326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell
41326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell    public VisibilityCallbackTest() {
421d3165f10b12165f02b7015ac1a817c5f60e6399Neal Nguyen        super("com.android.frameworks.coretests", VisibilityCallback.class);
43326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell    }
44326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell
45326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell    @Override
46326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell    public void setUp() throws Exception {
47326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        super.setUp();
48326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell
49326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        final VisibilityCallback a = getActivity();
50326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        mRefUp = (TextView) a.findViewById(R.id.refUp);
51326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        mRefDown = (TextView) a.findViewById(R.id.refDown);
52326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        mVictim = (VisibilityCallback.MonitoredTextView) a.findViewById(R.id.victim);
53326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        mParent = (ViewGroup) a.findViewById(R.id.parent);
54326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        mVisible = (Button) a.findViewById(R.id.vis);
55326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        mInvisible = (Button) a.findViewById(R.id.invis);
56326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        mGone = (Button) a.findViewById(R.id.gone);
57326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell
58326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        mVictim.post(new Runnable() {
59326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell            public void run() {
60326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell                mVictim.setVisibility(View.INVISIBLE);
61326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell            }
62326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        });
63326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        getInstrumentation().waitForIdleSync();
64326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell     }
65326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell
66326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell    @MediumTest
67326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell    @UiThreadTest
68326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell    public void testSetUpConditions() throws Exception {
69326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        assertNotNull(mRefUp);
70326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        assertNotNull(mRefDown);
71326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        assertNotNull(mVictim);
72326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        assertNotNull(mVisible);
73326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        assertNotNull(mInvisible);
74326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        assertNotNull(mGone);
75326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell
76326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        assertTrue(mVisible.hasFocus());
77326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        assertEquals(View.INVISIBLE, mVictim.getVisibility());
78326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        assertEquals(View.VISIBLE, mParent.getVisibility());
79326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell    }
80326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell
81326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell    @MediumTest
82326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell    @UiThreadTest
83326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell    public void testDirect() throws Exception {
84326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        mVictim.setVisibility(View.VISIBLE);
85326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        assertEquals(View.VISIBLE, mVictim.getLastChangedVisibility());
86326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        assertEquals(mVictim, mVictim.getLastVisChangedView());
87326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell
88326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        mVictim.setVisibility(View.INVISIBLE);
89326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        assertEquals(View.INVISIBLE, mVictim.getLastChangedVisibility());
90326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        assertEquals(mVictim, mVictim.getLastVisChangedView());
91326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell
92326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        mVictim.setVisibility(View.GONE);
93326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        assertEquals(View.GONE, mVictim.getLastChangedVisibility());
94326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        assertEquals(mVictim, mVictim.getLastVisChangedView());
95326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell    }
96326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell
97326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell    @MediumTest
98326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell    @UiThreadTest
99326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell    public void testChild() throws Exception {
100326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        mParent.setVisibility(View.INVISIBLE);
101326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        assertEquals(View.INVISIBLE, mVictim.getLastChangedVisibility());
102326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        assertEquals(mParent, mVictim.getLastVisChangedView());
103326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell
104326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        mParent.setVisibility(View.GONE);
105326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        assertEquals(View.GONE, mVictim.getLastChangedVisibility());
106326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        assertEquals(mParent, mVictim.getLastVisChangedView());
107326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell
108326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        mParent.setVisibility(View.VISIBLE);
109326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        assertEquals(View.VISIBLE, mVictim.getLastChangedVisibility());
110326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell        assertEquals(mParent, mVictim.getLastVisChangedView());
111326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell    }
112326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell}
113