• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2015 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 package com.android.tv;
17 
18 import static android.support.test.InstrumentationRegistry.getInstrumentation;
19 import static org.junit.Assert.assertEquals;
20 import static org.junit.Assert.assertTrue;
21 
22 import android.support.test.filters.MediumTest;
23 import android.view.View;
24 import android.widget.TextView;
25 
26 import com.android.tv.data.Channel;
27 import com.android.tv.testing.testinput.TvTestInputConstants;
28 import com.android.tv.ui.ChannelBannerView;
29 
30 import org.junit.Test;
31 
32 import java.util.List;
33 
34 /**
35  * Tests for {@link MainActivity}.
36  */
37 @MediumTest
38 public class MainActivityTest extends BaseMainActivityTestCase {
39     @Test
testInitialConditions()40     public void testInitialConditions() {
41         waitUntilChannelLoadingFinish();
42         List<Channel> channelList = mActivity.getChannelDataManager().getChannelList();
43         assertTrue("Expected at least one channel", channelList.size() > 0);
44     }
45 
46     @Test
testTuneToChannel()47     public void testTuneToChannel() {
48         tuneToChannel(TvTestInputConstants.CH_2);
49         assertChannelBannerShown(true);
50         assertChannelName(TvTestInputConstants.CH_2.name);
51     }
52 
53     @Test
testShowProgramGuide()54     public void testShowProgramGuide() {
55         tuneToChannel(TvTestInputConstants.CH_2);
56         showProgramGuide();
57         getInstrumentation().waitForIdleSync();
58         assertChannelBannerShown(false);
59         assertProgramGuide(true);
60     }
61 
showProgramGuide()62     private void showProgramGuide() {
63         // Run on UI thread so views can be modified
64         getInstrumentation().runOnMainSync(new Runnable() {
65             @Override
66             public void run() {
67                 mActivity.getOverlayManager().showProgramGuide();
68             }
69         });
70     }
71 
assertChannelName(String displayName)72     private void assertChannelName(String displayName) {
73         TextView channelNameView = (TextView) mActivity.findViewById(R.id.channel_name);
74         assertEquals("Channel Name", displayName, channelNameView.getText());
75     }
76 
assertProgramGuide(boolean isShown)77     private void assertProgramGuide(boolean isShown) {
78         assertViewIsShown("Program Guide", R.id.program_guide, isShown);
79     }
80 
assertChannelBannerShown(boolean isShown)81     private ChannelBannerView assertChannelBannerShown(boolean isShown) {
82         View v = assertExpectedBannerSceneClassShown(ChannelBannerView.class, isShown);
83         return (ChannelBannerView) v;
84     }
85 
assertExpectedBannerSceneClassShown(Class<ChannelBannerView> expectedClass, boolean expectedShown)86     private View assertExpectedBannerSceneClassShown(Class<ChannelBannerView> expectedClass,
87             boolean expectedShown) {
88         View v = assertViewIsShown(expectedClass.getSimpleName(), R.id.scene_transition_common,
89                 expectedShown);
90         if (v != null) {
91             assertEquals(expectedClass, v.getClass());
92         }
93         return v;
94     }
95 
assertViewIsShown(String viewName, int viewId, boolean expected)96     private View assertViewIsShown(String viewName, int viewId, boolean expected) {
97         View view = mActivity.findViewById(viewId);
98         if (view == null) {
99             if (expected) {
100                 throw new AssertionError("View " + viewName + " not found");
101             } else {
102                 return null;
103             }
104         }
105         assertEquals(viewName + " shown", expected, view.isShown());
106         return view;
107     }
108 }
109