1816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko/*
2816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * Copyright (C) 2015 The Android Open Source Project
3816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko *
4816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * Licensed under the Apache License, Version 2.0 (the "License");
5816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * you may not use this file except in compliance with the License.
6816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * You may obtain a copy of the License at
7816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko *
8816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko *      http://www.apache.org/licenses/LICENSE-2.0
9816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko *
10816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * Unless required by applicable law or agreed to in writing, software
11816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * distributed under the License is distributed on an "AS IS" BASIS,
12816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * See the License for the specific language governing permissions and
14816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * limitations under the License.
15816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko */
16816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
17816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkopackage com.android.tv.tests.ui;
18816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
19816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport static com.android.tv.testing.uihelper.UiDeviceAsserts.assertHas;
20816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport static com.android.tv.testing.uihelper.UiDeviceAsserts.assertWaitForCondition;
21816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
2265fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkoimport android.support.test.filters.LargeTest;
23816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.support.test.uiautomator.BySelector;
24816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.support.test.uiautomator.Until;
25816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
26816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport com.android.tv.R;
27816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport com.android.tv.testing.testinput.ChannelStateData;
28816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport com.android.tv.testing.testinput.TvTestInputConstants;
29816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport com.android.tv.testing.uihelper.Constants;
30816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport com.android.tv.testing.uihelper.DialogHelper;
31816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
32816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko/**
33816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * Basic tests for the LiveChannels app.
34816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko */
35816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko@LargeTest
36816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkopublic class LiveChannelsAppTest extends LiveChannelsTestCase {
37ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko    private BySelector mBySettingsSidePanel;
38816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
39816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    @Override
40816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    protected void setUp() throws Exception {
41816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        super.setUp();
42816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        mLiveChannelsHelper.assertAppStarted();
4307b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko        pressKeysForChannel(TvTestInputConstants.CH_1_DEFAULT_DONT_MODIFY);
44816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        getInstrumentation().waitForIdleSync();
45ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko        mBySettingsSidePanel = mSidePanelHelper.bySidePanelTitled(
46ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko                R.string.side_panel_title_settings);
47816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    }
48816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
49ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko    public void testSettingsCancel() {
50ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko        mMenuHelper.assertPressOptionsSettings();
51816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        BySelector byChannelSourcesSidePanel = mSidePanelHelper
52ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko                .bySidePanelTitled(R.string.settings_channel_source_item_customize_channels);
53816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        assertWaitForCondition(mDevice, Until.hasObject(byChannelSourcesSidePanel));
54816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        mDevice.pressBack();
55816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        assertWaitForCondition(mDevice, Until.gone(byChannelSourcesSidePanel));
56816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        assertHas(mDevice, Constants.MENU, false);
57816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    }
58816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
59816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    public void testClosedCaptionsCancel() {
60816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        mMenuHelper.assertPressOptionsClosedCaptions();
61816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        BySelector byClosedCaptionSidePanel = mSidePanelHelper
62816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko                .bySidePanelTitled(R.string.side_panel_title_closed_caption);
63816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        assertWaitForCondition(mDevice, Until.hasObject(byClosedCaptionSidePanel));
64816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        mDevice.pressBack();
65816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        assertWaitForCondition(mDevice, Until.gone(byClosedCaptionSidePanel));
66816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        assertHas(mDevice, Constants.MENU, false);
67816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    }
68816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
69816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    public void testDisplayModeCancel() {
70816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        ChannelStateData data = new ChannelStateData();
71816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        data.mTvTrackInfos.add(com.android.tv.testing.Constants.SVGA_VIDEO_TRACK);
72816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        data.mSelectedVideoTrackId = com.android.tv.testing.Constants.SVGA_VIDEO_TRACK
73816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko                .getId();
74816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        updateThenTune(data, TvTestInputConstants.CH_2);
75816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
76816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        mMenuHelper.assertPressOptionsDisplayMode();
7707b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko        BySelector byDisplayModeSidePanel = mSidePanelHelper
78816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko                .bySidePanelTitled(R.string.side_panel_title_display_mode);
7907b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko        assertWaitForCondition(mDevice, Until.hasObject(byDisplayModeSidePanel));
80816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        mDevice.pressBack();
8107b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko        assertWaitForCondition(mDevice, Until.gone(byDisplayModeSidePanel));
82816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        assertHas(mDevice, Constants.MENU, false);
83816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    }
84816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
85816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    public void testMenu() {
86816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        mDevice.pressMenu();
87816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
88816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        assertWaitForCondition(mDevice, Until.hasObject(Constants.MENU));
89816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        assertHas(mDevice, mMenuHelper.getByChannels(), true);
90816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    }
91816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
92816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    public void testMultiAudioCancel() {
93816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        ChannelStateData data = new ChannelStateData();
94816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        data.mTvTrackInfos.add(com.android.tv.testing.Constants.GENERIC_AUDIO_TRACK);
95816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        updateThenTune(data, TvTestInputConstants.CH_2);
96816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
97816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        mMenuHelper.assertPressOptionsMultiAudio();
9807b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko        BySelector byMultiAudioSidePanel = mSidePanelHelper
99816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko                .bySidePanelTitled(R.string.side_panel_title_multi_audio);
10007b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko        assertWaitForCondition(mDevice, Until.hasObject(byMultiAudioSidePanel));
101816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        mDevice.pressBack();
10207b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko        assertWaitForCondition(mDevice, Until.gone(byMultiAudioSidePanel));
103816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        assertHas(mDevice, Constants.MENU, false);
104816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    }
105816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
106816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    public void testPinCancel() {
107816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        mMenuHelper.showMenu();
108ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko        mMenuHelper.assertPressOptionsSettings();
109ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko        assertWaitForCondition(mDevice, Until.hasObject(mBySettingsSidePanel));
110ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko        mSidePanelHelper.assertNavigateToItem(R.string.settings_parental_controls);
111ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko        mDevice.pressDPadCenter();
112816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        DialogHelper dialogHelper = new DialogHelper(mDevice, mTargetResources);
113816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        dialogHelper.assertWaitForPinDialogOpen();
114816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        mDevice.pressBack();
115816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        dialogHelper.assertWaitForPinDialogClose();
116816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        assertHas(mDevice, Constants.MENU, false);
117816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    }
118816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko}
119