package org.solovyev.android.calculator.plot; import android.support.annotation.NonNull; import android.support.test.espresso.action.ViewActions; import android.support.test.rule.ActivityTestRule; import android.support.test.runner.AndroidJUnit4; import android.test.suitebuilder.annotation.LargeTest; import android.text.TextUtils; import org.hamcrest.Matchers; import org.junit.Rule; import org.junit.runner.RunWith; import org.solovyev.android.calculator.R; import org.solovyev.android.calculator.functions.CppFunction; import org.solovyev.android.calculator.functions.FunctionParamsView; import static android.support.test.espresso.Espresso.onView; import static android.support.test.espresso.action.ViewActions.click; import static android.support.test.espresso.action.ViewActions.typeText; import static android.support.test.espresso.action.ViewActions.typeTextIntoFocusedView; import static android.support.test.espresso.matcher.ViewMatchers.hasFocus; import static android.support.test.espresso.matcher.ViewMatchers.withId; import static android.support.test.espresso.matcher.ViewMatchers.withTagValue; import static android.support.test.espresso.matcher.ViewMatchers.withText; import static org.hamcrest.Matchers.allOf; @RunWith(AndroidJUnit4.class) @LargeTest public class BasePlotTest { @Rule public ActivityTestRule<PlotActivity> rule = new ActivityTestRule<>(PlotActivity.class); protected void addFunction(@NonNull CppFunction function) { openFunctionEditor(); if (!TextUtils.isEmpty(function.getName())) { onView(withId(R.id.function_name)).perform(typeText(function.getName())); } for (String parameter : function.getParameters()) { onView(withId(R.id.function_params_add)).perform(click()); onView(allOf(hasFocus(), withTagValue(Matchers.<Object>equalTo(FunctionParamsView.PARAM_VIEW_TAG)))).perform(click(), typeTextIntoFocusedView(parameter)); } onView(withId(R.id.function_body)).perform(typeText(function.getBody())); onView(withText(R.string.cpp_done)).perform(click()); } protected final void openFunctionEditor() { onView(withId(R.id.plot_view_frame)).perform(ViewActions.click()); onView(withId(R.id.plot_add_function)).perform(click()); } protected final void openFunctionsList() { onView(withId(R.id.plot_view_frame)).perform(ViewActions.click()); onView(withId(R.id.plot_functions)).perform(click()); } }