19ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes/* 29ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes * Copyright (C) 2016 The Android Open Source Project 39ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes * 49ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes * Licensed under the Apache License, Version 2.0 (the "License"); 59ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes * you may not use this file except in compliance with the License. 69ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes * You may obtain a copy of the License at 79ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes * 89ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes * http://www.apache.org/licenses/LICENSE-2.0 99ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes * 109ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes * Unless required by applicable law or agreed to in writing, software 119ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes * distributed under the License is distributed on an "AS IS" BASIS, 129ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes * See the License for the specific language governing permissions and 149ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes * limitations under the License. 159ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes */ 169ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes 179ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banespackage android.support.design.testutils; 189ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes 199ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banesimport static android.support.test.espresso.matcher.ViewMatchers.isAssignableFrom; 209ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes 219ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banesimport android.support.design.widget.TextInputLayout; 229ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banesimport android.support.test.espresso.UiController; 239ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banesimport android.support.test.espresso.ViewAction; 249ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banesimport android.support.v4.widget.DrawerLayout; 259ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banesimport android.view.View; 269ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes 279ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banesimport org.hamcrest.Matcher; 289ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes 299ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banespublic class TextInputLayoutActions { 309ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes 319ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes public static ViewAction setErrorEnabled(final boolean enabled) { 329ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes return new ViewAction() { 339ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes @Override 349ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes public Matcher<View> getConstraints() { 359ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes return isAssignableFrom(TextInputLayout.class); 369ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes } 379ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes 389ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes @Override 399ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes public String getDescription() { 409ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes return "Enables/disables the error"; 419ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes } 429ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes 439ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes @Override 449ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes public void perform(UiController uiController, View view) { 459ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes uiController.loopMainThreadUntilIdle(); 469ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes 479ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes TextInputLayout layout = (TextInputLayout) view; 489ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes layout.setErrorEnabled(enabled); 499ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes 509ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes uiController.loopMainThreadUntilIdle(); 519ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes } 529ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes }; 539ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes } 549ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes 559ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes public static ViewAction setError(final CharSequence error) { 569ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes return new ViewAction() { 579ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes @Override 589ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes public Matcher<View> getConstraints() { 599ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes return isAssignableFrom(TextInputLayout.class); 609ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes } 619ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes 629ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes @Override 639ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes public String getDescription() { 649ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes return "Sets the error"; 659ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes } 669ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes 679ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes @Override 689ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes public void perform(UiController uiController, View view) { 699ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes uiController.loopMainThreadUntilIdle(); 709ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes 719ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes TextInputLayout layout = (TextInputLayout) view; 729ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes layout.setError(error); 739ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes 749ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes uiController.loopMainThreadUntilIdle(); 759ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes } 769ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes }; 779ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes } 789ba4dbeb02db9c222f39f77b9a335d9deabde98fChris Banes} 79