package org.robolectric.shadows;
import android.graphics.Point;
import android.graphics.Rect;
import android.util.DisplayMetrics;
import android.view.Display;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Shadows;
import org.robolectric.TestRunners;
import org.robolectric.annotation.Config;
import org.robolectric.shadow.api.Shadow;
import static android.os.Build.VERSION_CODES.JELLY_BEAN_MR1;
import static org.junit.Assert.assertEquals;
@RunWith(TestRunners.MultiApiSelfTest.class)
public class ShadowDisplayTest {
@Test
public void shouldProvideDisplayMetrics() throws Exception {
Display display = Shadow.newInstanceOf(Display.class);
ShadowDisplay shadow = Shadows.shadowOf(display);
shadow.setDensity(1.5f);
shadow.setDensityDpi(DisplayMetrics.DENSITY_MEDIUM);
shadow.setScaledDensity(1.6f);
shadow.setWidth(1024);
shadow.setHeight(600);
shadow.setRealWidth(1400);
shadow.setRealHeight(900);
shadow.setXdpi(183.0f);
shadow.setYdpi(184.0f);
DisplayMetrics metrics = new DisplayMetrics();
display.getMetrics(metrics);
assertEquals(1.5f, metrics.density, 0.05);
assertEquals(DisplayMetrics.DENSITY_MEDIUM, metrics.densityDpi);
assertEquals(1.6f, metrics.scaledDensity, 0.05);
assertEquals(1024, metrics.widthPixels);
assertEquals(600, metrics.heightPixels);
assertEquals(183.0f, metrics.xdpi, 0.05);
assertEquals(184.0f, metrics.ydpi, 0.05);
metrics = new DisplayMetrics();
display.getRealMetrics(metrics);
assertEquals(1.5f, metrics.density, 0.05);
assertEquals(DisplayMetrics.DENSITY_MEDIUM, metrics.densityDpi);
assertEquals(1.6f, metrics.scaledDensity, 0.05);
assertEquals(1400, metrics.widthPixels);
assertEquals(900, metrics.heightPixels);
assertEquals(183.0f, metrics.xdpi, 0.05);
assertEquals(184.0f, metrics.ydpi, 0.05);
}
@Test
public void shouldProvideDisplaySize() throws Exception {
Point outSmallestSize = new Point();
Point outLargestSize = new Point();
Point outSize = new Point();
Rect outRect = new Rect();
Display display = Shadow.newInstanceOf(Display.class);
ShadowDisplay shadow = Shadows.shadowOf(display);
shadow.setWidth(400);
shadow.setHeight(600);
shadow.setRealWidth(480);
shadow.setRealHeight(800);
display.getCurrentSizeRange(outSmallestSize, outLargestSize);
assertEquals(400, outSmallestSize.x);
assertEquals(400, outSmallestSize.y);
assertEquals(600, outLargestSize.x);
assertEquals(600, outLargestSize.y);
display.getSize(outSize);
assertEquals(400, outSize.x);
assertEquals(600, outSize.y);
display.getRectSize(outRect);
assertEquals(400, outRect.width());
assertEquals(600, outRect.height());
display.getRealSize(outSize);
assertEquals(480, outSize.x);
assertEquals(800, outSize.y);
}
@Test
@Config(minSdk = JELLY_BEAN_MR1)
public void shouldProvideDisplayInformation() {
Display display = Shadow.newInstanceOf(Display.class);
ShadowDisplay shadow = Shadows.shadowOf(display);
shadow.setDisplayId(42);
shadow.setName("foo");
shadow.setFlags(8);
assertEquals(42, display.getDisplayId());
assertEquals("foo", display.getName());
assertEquals(8, display.getFlags());
}
/**
* The {@link android.view.Display#getOrientation()} method is deprecated, but for
* testing purposes, return the value gotten from {@link android.view.Display#getRotation()}
*/
@Test
public void deprecatedGetOrientation_returnsGetRotation() {
Display display = Shadow.newInstanceOf(Display.class);
int testValue = 33;
Shadows.shadowOf(display).setRotation(testValue);
assertEquals(testValue, display.getOrientation());
}
}