1431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov/* 2431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov * Copyright (C) 2016 The Android Open Source Project 3431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov * 4431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov * Licensed under the Apache License, Version 2.0 (the "License"); 5431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov * you may not use this file except in compliance with the License. 6431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov * You may obtain a copy of the License at 7431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov * 8431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov * http://www.apache.org/licenses/LICENSE-2.0 9431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov * 10431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov * Unless required by applicable law or agreed to in writing, software 11431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov * distributed under the License is distributed on an "AS IS" BASIS, 12431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov * See the License for the specific language governing permissions and 14431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov * limitations under the License. 15431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov */ 16431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikovpackage android.support.v7.app; 17431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 18431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikovimport android.support.v4.view.ViewCompat; 19431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikovimport android.support.v4.widget.DrawerLayout; 20431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikovimport android.support.v7.appcompat.test.R; 21431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikovimport android.support.v7.custom.CustomDrawerLayout; 22431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikovimport android.test.suitebuilder.annotation.SmallTest; 23431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikovimport android.view.View; 24431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikovimport org.junit.Before; 25431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikovimport org.junit.Test; 26431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 27431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikovimport static android.support.test.espresso.Espresso.onView; 28431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikovimport static android.support.test.espresso.matcher.ViewMatchers.withId; 2921f78eb90b3217aa5cf69c3ffd359506468b55f4Kirill Grouchnikovimport static android.support.v7.testutils.DrawerLayoutActions.closeDrawer; 3021f78eb90b3217aa5cf69c3ffd359506468b55f4Kirill Grouchnikovimport static android.support.v7.testutils.DrawerLayoutActions.openDrawer; 3121f78eb90b3217aa5cf69c3ffd359506468b55f4Kirill Grouchnikovimport static android.support.v7.testutils.DrawerLayoutActions.setDrawerLockMode; 32431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikovimport static android.support.v7.testutils.TestUtilsActions.setLayoutDirection; 33431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikovimport static org.junit.Assert.assertEquals; 34431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikovimport static org.junit.Assert.assertFalse; 35431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikovimport static org.junit.Assert.assertTrue; 36431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 37431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikovpublic class DrawerLayoutDoubleTest 38431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov extends BaseInstrumentationTestCase<DrawerLayoutDoubleActivity> { 39431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov private CustomDrawerLayout mDrawerLayout; 40431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 41431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov private View mStartDrawer; 42431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 43431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov private View mEndDrawer; 44431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 45431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov private View mContentView; 46431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 47431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov public DrawerLayoutDoubleTest() { 48431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov super(DrawerLayoutDoubleActivity.class); 49431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov } 50431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 51431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @Before 52431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov public void setUp() { 53431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov final DrawerLayoutDoubleActivity activity = mActivityTestRule.getActivity(); 54431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov mDrawerLayout = (CustomDrawerLayout) activity.findViewById(R.id.drawer_layout); 55431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov mStartDrawer = mDrawerLayout.findViewById(R.id.start_drawer); 56431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov mEndDrawer = mDrawerLayout.findViewById(R.id.end_drawer); 57431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov mContentView = mDrawerLayout.findViewById(R.id.content); 58431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 59431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // Close the drawers to reset the state for the next test 60431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform(closeDrawer(mStartDrawer)); 61431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform(closeDrawer(mEndDrawer)); 62431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov } 63431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 64431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @Test(expected=IllegalArgumentException.class) 65431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @SmallTest 66431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov public void testQueryOpenStateOfNonExistentDrawer() { 67431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // Note that we're expecting the isDrawerOpen API call to result in an exception being 68431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // thrown since mContentView is not a drawer. 69431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("Querying open state of a view that is not a drawer", 70431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov mDrawerLayout.isDrawerOpen(mContentView)); 71431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov } 72431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 73431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @Test(expected=IllegalArgumentException.class) 74431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @SmallTest 75431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov public void testQueryVisibleStateOfNonExistentDrawer() { 76431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // Note that we're expecting the isDrawerVisible API call to result in an exception being 77431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // thrown since mContentView is not a drawer. 78431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("Querying visible state of a view that is not a drawer", 79431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov mDrawerLayout.isDrawerVisible(mContentView)); 80431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov } 81431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 82431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @Test(expected=IllegalArgumentException.class) 83431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @SmallTest 84431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov public void testOpenNonExistentDrawer() { 85431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // Note that we're expecting the openDrawer action to result in an exception being 86431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // thrown since mContentView is not a drawer. 87431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform(openDrawer(mContentView)); 88431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov } 89431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 90431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @Test(expected=IllegalArgumentException.class) 91431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @SmallTest 92431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov public void testCloseNonExistentDrawer() { 93431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // Note that we're expecting the closeDrawer action to result in an exception being 94431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // thrown since mContentView is not a drawer. 95431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform(closeDrawer(mContentView)); 96431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov } 97431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 98431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @Test(expected=IllegalArgumentException.class) 99431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @SmallTest 100431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov public void testLockNonExistentDrawer() { 101431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // Note that we're expecting the setDrawerLockMode action to result in an exception being 102431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // thrown since mContentView is not a drawer. 103431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform( 104431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN, mContentView)); 105431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov } 106431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 107431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov private void verifyDrawerOpenClose() { 108431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("Start drawer is closed in initial state", 109431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov mDrawerLayout.isDrawerOpen(mStartDrawer)); 110431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("Start drawer is not visible in initial state", 111431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov mDrawerLayout.isDrawerVisible(mStartDrawer)); 112431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("End drawer is closed in initial state", 113431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov mDrawerLayout.isDrawerOpen(mEndDrawer)); 114431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("End drawer is not visible in initial state", 115431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov mDrawerLayout.isDrawerVisible(mEndDrawer)); 116431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 117431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // Open the start drawer 118431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform(openDrawer(mStartDrawer)); 119431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // And check that it's open (with the end drawer closed) 120431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertTrue("Start drawer is now open", mDrawerLayout.isDrawerOpen(mStartDrawer)); 121431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertTrue("Start drawer is now visible", mDrawerLayout.isDrawerVisible(mStartDrawer)); 122431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("End drawer is still closed", mDrawerLayout.isDrawerOpen(mEndDrawer)); 123431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("End drawer is still not visible", mDrawerLayout.isDrawerVisible(mEndDrawer)); 124431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 125431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // Close the start drawer 126431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform(closeDrawer(mStartDrawer)); 127431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // And check that both drawers are closed 128431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("Start drawer is now closed", mDrawerLayout.isDrawerOpen(mStartDrawer)); 129431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("Start drawer is now not visible", mDrawerLayout.isDrawerVisible(mStartDrawer)); 130431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("End drawer is still closed", mDrawerLayout.isDrawerOpen(mEndDrawer)); 131431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("End drawer is still not visible", mDrawerLayout.isDrawerVisible(mEndDrawer)); 132431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 133431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // Open the end drawer 134431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform(openDrawer(mEndDrawer)); 135431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // And check that it's open (with the start drawer closed) 136431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("Start drawer is still closed", mDrawerLayout.isDrawerOpen(mStartDrawer)); 137431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("Start drawer is still not visible", 138431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov mDrawerLayout.isDrawerVisible(mStartDrawer)); 139431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertTrue("End drawer is now open", mDrawerLayout.isDrawerOpen(mEndDrawer)); 140431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertTrue("End drawer is now visible", mDrawerLayout.isDrawerVisible(mEndDrawer)); 141431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 142431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // Close the end drawer 143431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform(closeDrawer(mEndDrawer)); 144431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // And check that both drawers are closed 145431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("Start drawer is still closed", mDrawerLayout.isDrawerOpen(mStartDrawer)); 146431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("Start drawer is still not visible", 147431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov mDrawerLayout.isDrawerVisible(mStartDrawer)); 148431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("End drawer is still closed", mDrawerLayout.isDrawerOpen(mEndDrawer)); 149431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("End drawer is still not visible", mDrawerLayout.isDrawerVisible(mEndDrawer)); 150431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov } 151431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 152431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @Test 153431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @SmallTest 154431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov public void testDrawerOpenCloseLtr() { 155431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform( 156431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov setLayoutDirection(ViewCompat.LAYOUT_DIRECTION_LTR)); 157431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 158431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov verifyDrawerOpenClose(); 159431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov } 160431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 161431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @Test 162431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @SmallTest 163431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov public void testDrawerOpenCloseRtl() { 164431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform( 165431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov setLayoutDirection(ViewCompat.LAYOUT_DIRECTION_RTL)); 166431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 167431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov verifyDrawerOpenClose(); 168431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov } 169431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 170431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov private void verifyDrawerLockUnlock() { 171431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertEquals("Start drawer is unlocked in initial state", 172431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov DrawerLayout.LOCK_MODE_UNLOCKED, mDrawerLayout.getDrawerLockMode(mStartDrawer)); 173431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertEquals("End drawer is unlocked in initial state", 174431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov DrawerLayout.LOCK_MODE_UNLOCKED, mDrawerLayout.getDrawerLockMode(mEndDrawer)); 175431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 176431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // Lock the start drawer open 177431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform( 178431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN, mStartDrawer)); 179431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // And check that it's locked open (with the end drawer unlocked) 180431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertEquals("Start drawer is now locked open", 181431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov DrawerLayout.LOCK_MODE_LOCKED_OPEN, mDrawerLayout.getDrawerLockMode(mStartDrawer)); 182431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertEquals("End drawer is still unlocked", 183431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov DrawerLayout.LOCK_MODE_UNLOCKED, mDrawerLayout.getDrawerLockMode(mEndDrawer)); 184431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 185431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // Unlock the start drawer and close it 186431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform( 187431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, mStartDrawer)); 188431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform(closeDrawer(mStartDrawer)); 189431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // And check that both drawers are unlocked 190431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertEquals("Start drawer is now unlocked", 191431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov DrawerLayout.LOCK_MODE_UNLOCKED, mDrawerLayout.getDrawerLockMode(mStartDrawer)); 192431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertEquals("End drawer is now unlocked", 193431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov DrawerLayout.LOCK_MODE_UNLOCKED, mDrawerLayout.getDrawerLockMode(mEndDrawer)); 194431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 195431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // Lock the end drawer open 196431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform( 197431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN, mEndDrawer)); 198431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // And check that it's locked open (with the start drawer unlocked) 199431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertEquals("Start drawer is still unlocked", 200431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov DrawerLayout.LOCK_MODE_UNLOCKED, mDrawerLayout.getDrawerLockMode(mStartDrawer)); 201431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertEquals("End drawer is now locked open", 202431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov DrawerLayout.LOCK_MODE_LOCKED_OPEN, mDrawerLayout.getDrawerLockMode(mEndDrawer)); 203431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 204431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // Unlock the end drawer and close it 205431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform( 206431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, mEndDrawer)); 207431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform(closeDrawer(mEndDrawer)); 208431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // And check that both drawers are unlocked 209431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertEquals("Start drawer is now unlocked", 210431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov DrawerLayout.LOCK_MODE_UNLOCKED, mDrawerLayout.getDrawerLockMode(mStartDrawer)); 211431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertEquals("End drawer is now unlocked", 212431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov DrawerLayout.LOCK_MODE_UNLOCKED, mDrawerLayout.getDrawerLockMode(mEndDrawer)); 213431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov } 214431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 215431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @Test 216431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @SmallTest 217431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov public void testDrawerLockUnlockLtr() { 218431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform( 219431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov setLayoutDirection(ViewCompat.LAYOUT_DIRECTION_LTR)); 220431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 221431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov verifyDrawerLockUnlock(); 222431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov } 223431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 224431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @Test 225431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @SmallTest 226431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov public void testDrawerLockUnlockRtl() { 227431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform( 228431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov setLayoutDirection(ViewCompat.LAYOUT_DIRECTION_RTL)); 229431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 230431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov verifyDrawerLockUnlock(); 231431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov } 232431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov} 233