package com.crossbow.volley;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.TransitionDrawable;
import android.widget.ImageView;
import com.crossbow.BuildConfig;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowSystemClock;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
/**
*/
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, shadows = {ShadowSystemClock.class})
public class CrossbowImageTest {
private ImageView imageView;
@Before
public void setUp() throws Exception {
imageView = new ImageView(RuntimeEnvironment.application);
}
@Test
public void testImageBitmapCenterCrop() {
CrossbowImage.Builder builder = new CrossbowImage.Builder(RuntimeEnvironment.application, null, null);
builder.scale(ImageView.ScaleType.CENTER);
CrossbowImage crossbowImage = builder.into(imageView).load();
//Same method call as if the image loads
Bitmap bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ALPHA_8);
crossbowImage.setBitmap(bitmap, false);
ScaleTypeDrawable drawable = (ScaleTypeDrawable) imageView.getDrawable();
assertTrue(drawable.getScaleType() == ImageView.ScaleType.CENTER);
}
@Test
public void testImageFadeDrawable() {
ColorDrawable defaultDrawable = new ColorDrawable(Color.BLUE);
CrossbowImage.Builder builder = new CrossbowImage.Builder(RuntimeEnvironment.application, null, null);
builder.placeholder(defaultDrawable);
builder.scale(ImageView.ScaleType.CENTER);
builder.fade(200);
CrossbowImage crossbowImage = builder.into(imageView).load();
Bitmap bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ALPHA_8);
crossbowImage.setBitmap(bitmap, false);
TransitionDrawable drawable = (TransitionDrawable) imageView.getDrawable();
assertTrue(drawable.getNumberOfLayers() == 2);
}
@Test
public void testErrorDrawable() {
ColorDrawable errorDrawable = new ColorDrawable(Color.BLUE);
CrossbowImage.Builder builder = new CrossbowImage.Builder(RuntimeEnvironment.application, null, null);
builder.errorScale(ImageView.ScaleType.FIT_END);
builder.error(errorDrawable);
CrossbowImage crossbowImage = builder.into(imageView).load();
//Same method call as if the image fails
crossbowImage.setError(null);
ScaleTypeDrawable drawable = (ScaleTypeDrawable) imageView.getDrawable();
assertEquals(drawable.getScaleType() , ImageView.ScaleType.FIT_END);
assertEquals(drawable.getSourceDrawable() , errorDrawable);
}
@Test
public void testDefaultErrorDrawable() {
ColorDrawable defaultDrawable = new ColorDrawable(Color.BLUE);
CrossbowImage.Builder builder = new CrossbowImage.Builder(RuntimeEnvironment.application, null, null);
builder.placeholder(defaultDrawable);
builder.placeholderScale(ImageView.ScaleType.FIT_END);
CrossbowImage crossbowImage = builder.into(imageView).load();
crossbowImage.setError(null);
ScaleTypeDrawable drawable = (ScaleTypeDrawable) imageView.getDrawable();
assertEquals(drawable.getScaleType() , ImageView.ScaleType.FIT_END);
assertEquals(drawable.getSourceDrawable() , defaultDrawable);
}
@Test
public void testErrorDefaultFade() {
ColorDrawable defaultDrawable = new ColorDrawable(Color.BLUE);
ColorDrawable errorDrawable = new ColorDrawable(Color.BLACK);
CrossbowImage.Builder builder = new CrossbowImage.Builder(RuntimeEnvironment.application, null, null);
builder.placeholder(defaultDrawable);
builder.error(errorDrawable);
builder.fade(200);
CrossbowImage crossbowImage = builder.into(imageView).load();
crossbowImage.setError(null);
TransitionDrawable drawable = (TransitionDrawable) imageView.getDrawable();
assertTrue(drawable.getNumberOfLayers() == 2);
}
}