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.Visibility;
20import com.android.frameworks.coretests.R;
21
22import android.test.ActivityInstrumentationTestCase;
23import android.test.suitebuilder.annotation.LargeTest;
24import android.test.suitebuilder.annotation.MediumTest;
25import android.widget.Button;
26import android.widget.TextView;
27import android.view.View;
28import static android.view.KeyEvent.*;
29
30/**
31 * Exercises {@link android.view.View}'s ability to change visibility between
32 * GONE, VISIBLE and INVISIBLE.
33 */
34public class VisibilityTest extends ActivityInstrumentationTestCase<Visibility> {
35    private TextView mRefUp;
36    private TextView mRefDown;
37    private TextView mVictim;
38    private Button mVisible;
39    private Button mInvisible;
40    private Button mGone;
41
42    public VisibilityTest() {
43        super("com.android.frameworks.coretests", Visibility.class);
44    }
45
46    @Override
47    public void setUp() throws Exception {
48        super.setUp();
49
50        final Visibility a = getActivity();
51        mRefUp = (TextView) a.findViewById(R.id.refUp);
52        mRefDown = (TextView) a.findViewById(R.id.refDown);
53        mVictim = (TextView) a.findViewById(R.id.victim);
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
59    @MediumTest
60    public void testSetUpConditions() throws Exception {
61        assertNotNull(mRefUp);
62        assertNotNull(mRefDown);
63        assertNotNull(mVictim);
64        assertNotNull(mVisible);
65        assertNotNull(mInvisible);
66        assertNotNull(mGone);
67
68        assertTrue(mVisible.hasFocus());
69    }
70
71    @MediumTest
72    public void testVisibleToInvisible() throws Exception {
73        sendKeys("DPAD_RIGHT");
74        assertTrue(mInvisible.hasFocus());
75
76        int oldTop = mVictim.getTop();
77
78        sendKeys("DPAD_CENTER");
79        assertEquals(View.INVISIBLE, mVictim.getVisibility());
80
81        int newTop = mVictim.getTop();
82        assertEquals(oldTop, newTop);
83    }
84
85    @MediumTest
86    public void testVisibleToGone() throws Exception {
87        //sendKeys("2*DPAD_RIGHT");
88        sendRepeatedKeys(2, KEYCODE_DPAD_RIGHT);
89        assertTrue(mGone.hasFocus());
90
91        int oldTop = mVictim.getTop();
92
93        sendKeys("DPAD_CENTER");
94        assertEquals(View.GONE, mVictim.getVisibility());
95
96        int refDownTop = mRefDown.getTop();
97        assertEquals(oldTop, refDownTop);
98    }
99
100    @LargeTest
101    public void testGoneToVisible() throws Exception {
102        sendKeys("2*DPAD_RIGHT");
103        assertTrue(mGone.hasFocus());
104
105        int oldTop = mVictim.getTop();
106
107        sendKeys("DPAD_CENTER");
108        assertEquals(View.GONE, mVictim.getVisibility());
109
110        int refDownTop = mRefDown.getTop();
111        assertEquals(oldTop, refDownTop);
112
113        sendKeys("2*DPAD_LEFT DPAD_CENTER");
114        assertEquals(View.VISIBLE, mVictim.getVisibility());
115
116        int newTop = mVictim.getTop();
117        assertEquals(oldTop, newTop);
118    }
119
120    @MediumTest
121    public void testGoneToInvisible() throws Exception {
122        sendKeys("2*DPAD_RIGHT");
123        assertTrue(mGone.hasFocus());
124
125        int oldTop = mVictim.getTop();
126
127        sendKeys("DPAD_CENTER");
128        assertEquals(View.GONE, mVictim.getVisibility());
129
130        int refDownTop = mRefDown.getTop();
131        assertEquals(oldTop, refDownTop);
132
133        sendKeys(KEYCODE_DPAD_LEFT, KEYCODE_DPAD_CENTER);
134        assertEquals(View.INVISIBLE, mVictim.getVisibility());
135
136        int newTop = mVictim.getTop();
137        assertEquals(oldTop, newTop);
138    }
139
140    @MediumTest
141    public void testInvisibleToVisible() throws Exception {
142        sendKeys("DPAD_RIGHT");
143        assertTrue(mInvisible.hasFocus());
144
145        int oldTop = mVictim.getTop();
146
147        sendKeys("DPAD_CENTER");
148        assertEquals(View.INVISIBLE, mVictim.getVisibility());
149
150        int newTop = mVictim.getTop();
151        assertEquals(oldTop, newTop);
152
153        sendKeys("DPAD_LEFT DPAD_CENTER");
154        assertEquals(View.VISIBLE, mVictim.getVisibility());
155
156        newTop = mVictim.getTop();
157        assertEquals(oldTop, newTop);
158    }
159
160    @MediumTest
161    public void testInvisibleToGone() throws Exception {
162        sendKeys("DPAD_RIGHT");
163        assertTrue(mInvisible.hasFocus());
164
165        int oldTop = mVictim.getTop();
166
167        sendKeys("DPAD_CENTER");
168        assertEquals(View.INVISIBLE, mVictim.getVisibility());
169
170        int newTop = mVictim.getTop();
171        assertEquals(oldTop, newTop);
172
173        sendKeys("DPAD_RIGHT DPAD_CENTER");
174        assertEquals(View.GONE, mVictim.getVisibility());
175
176        int refDownTop = mRefDown.getTop();
177        assertEquals(oldTop, refDownTop);
178    }
179}
180