/* * Copyright (C) 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package androidx.test.espresso.contrib; import static androidx.test.espresso.matcher.ViewMatchers.isAssignableFrom; import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; import static org.hamcrest.Matchers.allOf; import android.view.View; import android.widget.DatePicker; import android.widget.TimePicker; import androidx.test.espresso.UiController; import androidx.test.espresso.ViewAction; import org.hamcrest.Matcher; /** * Espresso action for interacting with {@link DatePicker} and {@link TimePicker}. * * @see Pickers API * guide */ public final class PickerActions { private PickerActions() { // no Instance } /** Returns a {@link ViewAction} that sets a date on a {@link DatePicker}. */ public static ViewAction setDate(final int year, final int monthOfYear, final int dayOfMonth) { // monthOfYear which starts with zero in DatePicker widget. final int normalizedMonthOfYear = monthOfYear - 1; return new ViewAction() { @Override public void perform(UiController uiController, View view) { final DatePicker datePicker = (DatePicker) view; datePicker.updateDate(year, normalizedMonthOfYear, dayOfMonth); } @Override public String getDescription() { return "set date"; } @SuppressWarnings("unchecked") @Override public Matcher getConstraints() { return allOf(isAssignableFrom(DatePicker.class), isDisplayed()); } }; } /** Returns a {@link ViewAction} that sets a time on a {@link TimePicker}. */ public static ViewAction setTime(final int hours, final int minutes) { return new ViewAction() { @Override public void perform(UiController uiController, View view) { final TimePicker timePicker = (TimePicker) view; timePicker.setCurrentHour(hours); timePicker.setCurrentMinute(minutes); } @Override public String getDescription() { return "set time"; } @SuppressWarnings("unchecked") @Override public Matcher getConstraints() { return allOf(isAssignableFrom(TimePicker.class), isDisplayed()); } }; } }