blob: 534ad126b48d9a2b6ab6b19abba446d3c8f59a69 [file] [log] [blame]
/*
* 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 android.ui.DrawableTinting.Application.src.test;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffColorFilter;
import android.test.ActivityInstrumentationTestCase2;
import android.test.UiThreadTest;
import android.ui.DrawableTinting.Application.src.main.java.com.example.android.drawabletinting.DrawableTintingFragment;
import android.view.View;
import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.Spinner;
import com.example.android.drawabletinting.MainActivity;
import com.example.android.drawabletinting.R;
/**
* Tests for drawabletinting sample.
*/
public class SampleTests extends ActivityInstrumentationTestCase2<MainActivity> {
private MainActivity mTestActivity;
private DrawableTintingFragment mTestFragment;
View mFragmentView;
SeekBar mAlpha;
SeekBar mRed;
SeekBar mGreen;
SeekBar mBlue;
Spinner mBlendMode;
ImageView mImage;
public SampleTests() {
super(MainActivity.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
// 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 = (DrawableTintingFragment)
mTestActivity.getSupportFragmentManager().getFragments().get(1);
final View fragmentView = mTestFragment.getView();
mAlpha = (SeekBar) fragmentView.findViewById(R.id.alphaSeek);
mRed = (SeekBar) fragmentView.findViewById(R.id.redSeek);
mGreen = (SeekBar) fragmentView.findViewById(R.id.greenSeek);
mBlue = (SeekBar) fragmentView.findViewById(R.id.blueSeek);
mBlendMode = (Spinner) fragmentView.findViewById(R.id.blendSpinner);
mImage = (ImageView) fragmentView.findViewById(R.id.image);
}
/**
* 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 the initial state of all UI elements, color and blend mode.
*/
public void testInitialState() {
assertEquals(255, mAlpha.getProgress());
assertEquals(0, mRed.getProgress());
assertEquals(0, mGreen.getProgress());
assertEquals(0, mBlue.getProgress());
assertEquals("Add", (String) mBlendMode.getSelectedItem());
PorterDuffColorFilter colorFilter = (PorterDuffColorFilter) mImage.getColorFilter();
assertNotNull(colorFilter);
int initialColor = Color.BLACK;
assertEquals(initialColor, colorFilter.getColor());
assertEquals(PorterDuff.Mode.ADD, colorFilter.getMode());
}
/**
* Test application of blend modes.
*/
@UiThreadTest
public void testModes() {
final int testColor = Color.GREEN;
// Test that each tint mode can be successfully applied and matches a valid PorterDuff mode
final PorterDuff.Mode[] modes = PorterDuff.Mode.values();
// Test that each blend mode can be applied
for (PorterDuff.Mode m : modes) {
mTestFragment.updateTint(testColor, m);
final PorterDuffColorFilter filter = (PorterDuffColorFilter) mImage.getColorFilter();
assertEquals(m, filter.getMode());
assertEquals(testColor, filter.getColor());
}
}
/**
* Test the color computation from ARGB Seekbars.
*/
public void testColor() {
// Red
mAlpha.setProgress(255);
mRed.setProgress(255);
mBlue.setProgress(0);
mGreen.setProgress(0);
assertEquals(Color.RED, mTestFragment.getColor());
// Blue
mAlpha.setProgress(255);
mRed.setProgress(0);
mBlue.setProgress(255);
mGreen.setProgress(0);
assertEquals(Color.BLUE, mTestFragment.getColor());
// Green
mAlpha.setProgress(255);
mRed.setProgress(0);
mBlue.setProgress(0);
mGreen.setProgress(255);
assertEquals(Color.GREEN, mTestFragment.getColor());
// Black
mAlpha.setProgress(255);
mRed.setProgress(0);
mBlue.setProgress(0);
mGreen.setProgress(0);
assertEquals(Color.BLACK, mTestFragment.getColor());
// Transparent
mAlpha.setProgress(0);
mRed.setProgress(0);
mBlue.setProgress(0);
mGreen.setProgress(0);
assertEquals(Color.TRANSPARENT, mTestFragment.getColor());
}
}