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 static android.support.test.espresso.Espresso.onView; 19431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikovimport static android.support.test.espresso.matcher.ViewMatchers.withId; 2021f78eb90b3217aa5cf69c3ffd359506468b55f4Kirill Grouchnikovimport static android.support.v7.testutils.DrawerLayoutActions.closeDrawer; 2121f78eb90b3217aa5cf69c3ffd359506468b55f4Kirill Grouchnikovimport static android.support.v7.testutils.DrawerLayoutActions.openDrawer; 2221f78eb90b3217aa5cf69c3ffd359506468b55f4Kirill Grouchnikovimport static android.support.v7.testutils.DrawerLayoutActions.setDrawerLockMode; 23431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikovimport static android.support.v7.testutils.TestUtilsActions.setLayoutDirection; 24754cb29c50f09a83251dd4bb633ba445b2411adbAurimas Liutikas 25431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikovimport static org.junit.Assert.assertEquals; 26431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikovimport static org.junit.Assert.assertFalse; 27431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikovimport static org.junit.Assert.assertTrue; 28431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 29e6cf359406cd7baaa0659b54c1b7d8ac45db122aAurimas Liutikasimport android.support.test.filters.LargeTest; 30754cb29c50f09a83251dd4bb633ba445b2411adbAurimas Liutikasimport android.support.test.filters.SmallTest; 318d3b808ab4720ef4e9d58f2bba4e31f741d3898cAurimas Liutikasimport android.support.test.rule.ActivityTestRule; 328d3b808ab4720ef4e9d58f2bba4e31f741d3898cAurimas Liutikasimport android.support.test.runner.AndroidJUnit4; 33754cb29c50f09a83251dd4bb633ba445b2411adbAurimas Liutikasimport android.support.v4.view.ViewCompat; 34754cb29c50f09a83251dd4bb633ba445b2411adbAurimas Liutikasimport android.support.v4.widget.DrawerLayout; 35754cb29c50f09a83251dd4bb633ba445b2411adbAurimas Liutikasimport android.support.v7.appcompat.test.R; 36754cb29c50f09a83251dd4bb633ba445b2411adbAurimas Liutikasimport android.support.v7.custom.CustomDrawerLayout; 37754cb29c50f09a83251dd4bb633ba445b2411adbAurimas Liutikasimport android.view.View; 38754cb29c50f09a83251dd4bb633ba445b2411adbAurimas Liutikas 39754cb29c50f09a83251dd4bb633ba445b2411adbAurimas Liutikasimport org.junit.Before; 408d3b808ab4720ef4e9d58f2bba4e31f741d3898cAurimas Liutikasimport org.junit.Rule; 41754cb29c50f09a83251dd4bb633ba445b2411adbAurimas Liutikasimport org.junit.Test; 428d3b808ab4720ef4e9d58f2bba4e31f741d3898cAurimas Liutikasimport org.junit.runner.RunWith; 438d3b808ab4720ef4e9d58f2bba4e31f741d3898cAurimas Liutikas 448d3b808ab4720ef4e9d58f2bba4e31f741d3898cAurimas Liutikas@RunWith(AndroidJUnit4.class) 458d3b808ab4720ef4e9d58f2bba4e31f741d3898cAurimas Liutikaspublic class DrawerLayoutDoubleTest { 468d3b808ab4720ef4e9d58f2bba4e31f741d3898cAurimas Liutikas @Rule 478d3b808ab4720ef4e9d58f2bba4e31f741d3898cAurimas Liutikas public final ActivityTestRule<DrawerLayoutDoubleActivity> mActivityTestRule = 488d3b808ab4720ef4e9d58f2bba4e31f741d3898cAurimas Liutikas new ActivityTestRule<>(DrawerLayoutDoubleActivity.class); 49754cb29c50f09a83251dd4bb633ba445b2411adbAurimas Liutikas 50431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov private CustomDrawerLayout mDrawerLayout; 51431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 52431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov private View mStartDrawer; 53431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 54431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov private View mEndDrawer; 55431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 56431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov private View mContentView; 57431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 58431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @Before 59431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov public void setUp() { 60431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov final DrawerLayoutDoubleActivity activity = mActivityTestRule.getActivity(); 61431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov mDrawerLayout = (CustomDrawerLayout) activity.findViewById(R.id.drawer_layout); 62431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov mStartDrawer = mDrawerLayout.findViewById(R.id.start_drawer); 63431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov mEndDrawer = mDrawerLayout.findViewById(R.id.end_drawer); 64431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov mContentView = mDrawerLayout.findViewById(R.id.content); 65431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 66431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // Close the drawers to reset the state for the next test 67431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform(closeDrawer(mStartDrawer)); 68431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform(closeDrawer(mEndDrawer)); 69431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov } 70431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 71431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @Test(expected=IllegalArgumentException.class) 72431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @SmallTest 73431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov public void testQueryOpenStateOfNonExistentDrawer() { 74431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // Note that we're expecting the isDrawerOpen API call to result in an exception being 75431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // thrown since mContentView is not a drawer. 76431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("Querying open state of a view that is not a drawer", 77431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov mDrawerLayout.isDrawerOpen(mContentView)); 78431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov } 79431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 80431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @Test(expected=IllegalArgumentException.class) 81431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @SmallTest 82431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov public void testQueryVisibleStateOfNonExistentDrawer() { 83431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // Note that we're expecting the isDrawerVisible API call to result in an exception being 84431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // thrown since mContentView is not a drawer. 85431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("Querying visible state of a view that is not a drawer", 86431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov mDrawerLayout.isDrawerVisible(mContentView)); 87431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov } 88431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 89431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @Test(expected=IllegalArgumentException.class) 90431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @SmallTest 91431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov public void testOpenNonExistentDrawer() { 92431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // Note that we're expecting the openDrawer action to result in an exception being 93431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // thrown since mContentView is not a drawer. 94431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform(openDrawer(mContentView)); 95431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov } 96431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 97431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @Test(expected=IllegalArgumentException.class) 98431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @SmallTest 99431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov public void testCloseNonExistentDrawer() { 100431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // Note that we're expecting the closeDrawer action to result in an exception being 101431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // thrown since mContentView is not a drawer. 102431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform(closeDrawer(mContentView)); 103431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov } 104431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 105431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @Test(expected=IllegalArgumentException.class) 106431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @SmallTest 107431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov public void testLockNonExistentDrawer() { 108431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // Note that we're expecting the setDrawerLockMode action to result in an exception being 109431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // thrown since mContentView is not a drawer. 110431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform( 111431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN, mContentView)); 112431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov } 113431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 114431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov private void verifyDrawerOpenClose() { 115431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("Start drawer is closed in initial state", 116431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov mDrawerLayout.isDrawerOpen(mStartDrawer)); 117431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("Start drawer is not visible in initial state", 118431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov mDrawerLayout.isDrawerVisible(mStartDrawer)); 119431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("End drawer is closed in initial state", 120431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov mDrawerLayout.isDrawerOpen(mEndDrawer)); 121431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("End drawer is not visible in initial state", 122431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov mDrawerLayout.isDrawerVisible(mEndDrawer)); 123431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 124431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // Open the start drawer 125431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform(openDrawer(mStartDrawer)); 126431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // And check that it's open (with the end drawer closed) 127431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertTrue("Start drawer is now open", mDrawerLayout.isDrawerOpen(mStartDrawer)); 128431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertTrue("Start drawer is now visible", mDrawerLayout.isDrawerVisible(mStartDrawer)); 129431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("End drawer is still closed", mDrawerLayout.isDrawerOpen(mEndDrawer)); 130431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("End drawer is still not visible", mDrawerLayout.isDrawerVisible(mEndDrawer)); 131431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 132431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // Close the start drawer 133431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform(closeDrawer(mStartDrawer)); 134431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // And check that both drawers are closed 135431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("Start drawer is now closed", mDrawerLayout.isDrawerOpen(mStartDrawer)); 136431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("Start drawer is now not visible", mDrawerLayout.isDrawerVisible(mStartDrawer)); 137431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("End drawer is still closed", mDrawerLayout.isDrawerOpen(mEndDrawer)); 138431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("End drawer is still not visible", mDrawerLayout.isDrawerVisible(mEndDrawer)); 139431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 140431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // Open the end drawer 141431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform(openDrawer(mEndDrawer)); 142431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // And check that it's open (with the start drawer closed) 143431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("Start drawer is still closed", mDrawerLayout.isDrawerOpen(mStartDrawer)); 144431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("Start drawer is still not visible", 145431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov mDrawerLayout.isDrawerVisible(mStartDrawer)); 146431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertTrue("End drawer is now open", mDrawerLayout.isDrawerOpen(mEndDrawer)); 147431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertTrue("End drawer is now visible", mDrawerLayout.isDrawerVisible(mEndDrawer)); 148431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 149431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // Close the end drawer 150431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform(closeDrawer(mEndDrawer)); 151431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // And check that both drawers are closed 152431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("Start drawer is still closed", mDrawerLayout.isDrawerOpen(mStartDrawer)); 153431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("Start drawer is still not visible", 154431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov mDrawerLayout.isDrawerVisible(mStartDrawer)); 155431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("End drawer is still closed", mDrawerLayout.isDrawerOpen(mEndDrawer)); 156431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertFalse("End drawer is still not visible", mDrawerLayout.isDrawerVisible(mEndDrawer)); 157431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov } 158431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 159431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @Test 160e6cf359406cd7baaa0659b54c1b7d8ac45db122aAurimas Liutikas @LargeTest 161431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov public void testDrawerOpenCloseLtr() { 162431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform( 163431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov setLayoutDirection(ViewCompat.LAYOUT_DIRECTION_LTR)); 164431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 165431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov verifyDrawerOpenClose(); 166431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov } 167431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 168431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @Test 169e6cf359406cd7baaa0659b54c1b7d8ac45db122aAurimas Liutikas @LargeTest 170431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov public void testDrawerOpenCloseRtl() { 171431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform( 172431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov setLayoutDirection(ViewCompat.LAYOUT_DIRECTION_RTL)); 173431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 174431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov verifyDrawerOpenClose(); 175431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov } 176431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 177431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov private void verifyDrawerLockUnlock() { 178431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertEquals("Start drawer is unlocked in initial state", 179431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov DrawerLayout.LOCK_MODE_UNLOCKED, mDrawerLayout.getDrawerLockMode(mStartDrawer)); 180431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertEquals("End drawer is unlocked in initial state", 181431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov DrawerLayout.LOCK_MODE_UNLOCKED, mDrawerLayout.getDrawerLockMode(mEndDrawer)); 182431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 183431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // Lock the start drawer open 184431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform( 185431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN, mStartDrawer)); 186431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // And check that it's locked open (with the end drawer unlocked) 187431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertEquals("Start drawer is now locked open", 188431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov DrawerLayout.LOCK_MODE_LOCKED_OPEN, mDrawerLayout.getDrawerLockMode(mStartDrawer)); 189431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertEquals("End drawer is still unlocked", 190431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov DrawerLayout.LOCK_MODE_UNLOCKED, mDrawerLayout.getDrawerLockMode(mEndDrawer)); 191431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 192431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // Unlock the start drawer and close it 193431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform( 194431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, mStartDrawer)); 195431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform(closeDrawer(mStartDrawer)); 196431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // And check that both drawers are unlocked 197431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertEquals("Start drawer is now unlocked", 198431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov DrawerLayout.LOCK_MODE_UNLOCKED, mDrawerLayout.getDrawerLockMode(mStartDrawer)); 199431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertEquals("End drawer is now unlocked", 200431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov DrawerLayout.LOCK_MODE_UNLOCKED, mDrawerLayout.getDrawerLockMode(mEndDrawer)); 201431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 202431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // Lock the end drawer open 203431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform( 204431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN, mEndDrawer)); 205431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // And check that it's locked open (with the start drawer unlocked) 206431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertEquals("Start drawer is still unlocked", 207431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov DrawerLayout.LOCK_MODE_UNLOCKED, mDrawerLayout.getDrawerLockMode(mStartDrawer)); 208431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertEquals("End drawer is now locked open", 209431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov DrawerLayout.LOCK_MODE_LOCKED_OPEN, mDrawerLayout.getDrawerLockMode(mEndDrawer)); 210431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 211431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // Unlock the end drawer and close it 212431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform( 213431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, mEndDrawer)); 214431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform(closeDrawer(mEndDrawer)); 215431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov // And check that both drawers are unlocked 216431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertEquals("Start drawer is now unlocked", 217431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov DrawerLayout.LOCK_MODE_UNLOCKED, mDrawerLayout.getDrawerLockMode(mStartDrawer)); 218431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov assertEquals("End drawer is now unlocked", 219431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov DrawerLayout.LOCK_MODE_UNLOCKED, mDrawerLayout.getDrawerLockMode(mEndDrawer)); 220431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov } 221431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 222431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @Test 223e6cf359406cd7baaa0659b54c1b7d8ac45db122aAurimas Liutikas @LargeTest 224431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov public void testDrawerLockUnlockLtr() { 225431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform( 226431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov setLayoutDirection(ViewCompat.LAYOUT_DIRECTION_LTR)); 227431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 228431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov verifyDrawerLockUnlock(); 229431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov } 230431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 231431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov @Test 232e6cf359406cd7baaa0659b54c1b7d8ac45db122aAurimas Liutikas @LargeTest 233431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov public void testDrawerLockUnlockRtl() { 234431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov onView(withId(R.id.drawer_layout)).perform( 235431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov setLayoutDirection(ViewCompat.LAYOUT_DIRECTION_RTL)); 236431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov 237431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov verifyDrawerLockUnlock(); 238431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov } 239431713be0958fd0f4d878f5f25755575191fb8baKirill Grouchnikov} 240