blob: 07c16235f1513313ade243a9ee4546b79bb4fdc3 [file] [log] [blame]
/*
* Copyright 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 com.example.android.interpolatorplayground.tests;
import com.example.android.interpolator.InterpolatorFragment;
import com.example.android.interpolator.MainActivity;
import com.example.android.interpolator.R;
import android.animation.ObjectAnimator;
import android.test.ActivityInstrumentationTestCase2;
import android.test.UiThreadTest;
import android.view.animation.Interpolator;
import android.widget.SeekBar;
import android.widget.Spinner;
import android.widget.TextView;
/**
* Tests for interpolatorplayground sample.
*/
public class SampleTests extends ActivityInstrumentationTestCase2<MainActivity> {
private MainActivity mTestActivity;
private InterpolatorFragment mTestFragment;
public SampleTests() {
super(MainActivity.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
setActivityInitialTouchMode(true);
// Starts the activity under test using the default Intent with:
// action = {@link Intent#ACTION_MAIN}
// flags = {@link Intent#FLAG_ACTIVITY_NEW_TASK}
// All other fields are null or empty.
mTestActivity = getActivity();
mTestFragment = (InterpolatorFragment)
mTestActivity.getSupportFragmentManager().getFragments().get(1);
}
/**
* Test if the test fixture has been set up correctly.
*/
public void testPreconditions() {
//Try to add a message to add context to your assertions. These messages will be shown if
//a tests fails and make it easy to understand why a test failed
assertNotNull("mTestActivity is null", mTestActivity);
assertNotNull("mTestFragment is null", mTestFragment);
}
/**
* Test if all UI elements have been set up correctly.
*/
public void testInitialisation() {
final int initialDuration = 750;
final String initialInterpolator = "Linear";
SeekBar durationBar = (SeekBar) getActivity().findViewById(R.id.durationSeek);
TextView durationLabel = (TextView) getActivity().findViewById(R.id.durationLabel);
Spinner interpolateSpinner = (Spinner) getActivity().findViewById(R.id.interpolatorSpinner);
Interpolator[] interpolators = mTestFragment.getInterpolators();
// Duration in progress bar
assertEquals(durationBar.getProgress(), initialDuration);
// Duration label
assertEquals(durationLabel.getText().toString(), getActivity().getResources().getString(R.string.animation_duration, initialDuration));
// Initial Interpolator
assertEquals((String) interpolateSpinner.getSelectedItem(), initialInterpolator);
// The number of loaded interpolators has to match the number of entries in the spinner
assertEquals(interpolators.length, interpolateSpinner.getCount());
// Test that all interpolators have been loaded
for (Interpolator i : interpolators) {
assertNotNull(i);
}
}
/**
* Test if all Interpolators can be used to start an animation.
*/
@UiThreadTest
public void testStartInterpolators() {
// Start an animation for each interpolator
final Interpolator[] interpolators = mTestFragment.getInterpolators();
for (final Interpolator i : interpolators) {
// Start the animation
ObjectAnimator animator = mTestFragment.startAnimation(i, 1000L, mTestFragment.getPathIn());
// Check that the correct interpolator is used for the animation
assertEquals(i, animator.getInterpolator());
// Verify the animation has started
assertTrue(animator.isStarted());
// Cancel before starting the next animation
animator.cancel();
}
}
}