1bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov/*
2bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov * Copyright (C) 2016 The Android Open Source Project
3bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov *
4bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov * Licensed under the Apache License, Version 2.0 (the "License");
5bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov * you may not use this file except in compliance with the License.
6bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov * You may obtain a copy of the License at
7bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov *
8bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov *      http://www.apache.org/licenses/LICENSE-2.0
9bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov *
10bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov * Unless required by applicable law or agreed to in writing, software
11bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov * distributed under the License is distributed on an "AS IS" BASIS,
12bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov * See the License for the specific language governing permissions and
14bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov * limitations under the License.
15bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov */
16bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov
17bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikovpackage android.support.percent;
18bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov
19bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikovimport android.support.test.espresso.UiController;
20bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikovimport android.support.test.espresso.ViewAction;
21bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikovimport android.support.v4.view.ViewCompat;
22bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikovimport android.view.View;
23bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikovimport org.hamcrest.Matcher;
24bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov
25bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikovimport static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
26bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov
27bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikovpublic class LayoutDirectionActions {
28bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov    /**
29bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov     * Sets layout direction on the view.
30bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov     */
31bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov    public static ViewAction setLayoutDirection(final int layoutDirection) {
32bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov        return new ViewAction() {
33bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov            @Override
34bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov            public Matcher<View> getConstraints() {
35bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov                return isDisplayed();
36bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov            }
37bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov
38bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov            @Override
39bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov            public String getDescription() {
40bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov                return "set layout direction";
41bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov            }
42bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov
43bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov            @Override
44bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov            public void perform(UiController uiController, View view) {
45bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov                uiController.loopMainThreadUntilIdle();
46bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov
47bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov                ViewCompat.setLayoutDirection(view, layoutDirection);
48bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov
49bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov                uiController.loopMainThreadUntilIdle();
50bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov            }
51bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov        };
52bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov    }
53bcbbc065a6ff7a0cd2ebb0b29cc9298a6fce77e5Kirill Grouchnikov}
54