package fr.prcaen.externalresources.model; import android.util.DisplayMetrics; import android.util.TypedValue; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertTrue; @RunWith(RobolectricTestRunner.class) @Config(manifest = Config.NONE) public final class DimensionResourceTest { private DimensionResource resource; @Test public void testToFloat() throws Exception { resource = new DimensionResource(TypedValue.COMPLEX_UNIT_DIP, 2.0f); DisplayMetrics metrics = new DisplayMetrics(); metrics.density = 200; assertTrue(resource.toFloat(metrics) == 400.0f); } @Test public void testFromString() throws Exception { resource = DimensionResource.fromString("16dp"); assertEquals(resource.value, 16.0f); assertEquals(resource.type, TypedValue.COMPLEX_UNIT_DIP); resource = DimensionResource.fromString("17dip"); assertEquals(resource.value, 17.0f); assertEquals(resource.type, TypedValue.COMPLEX_UNIT_DIP); resource = DimensionResource.fromString("18sp"); assertEquals(resource.value, 18.0f); assertEquals(resource.type, TypedValue.COMPLEX_UNIT_SP); resource = DimensionResource.fromString("19pt"); assertEquals(resource.value, 19.0f); assertEquals(resource.type, TypedValue.COMPLEX_UNIT_PT); resource = DimensionResource.fromString("20in"); assertEquals(resource.value, 20.0f); assertEquals(resource.type, TypedValue.COMPLEX_UNIT_IN); resource = DimensionResource.fromString("21mm"); assertEquals(resource.value, 21.0f); assertEquals(resource.type, TypedValue.COMPLEX_UNIT_MM); resource = DimensionResource.fromString("22px"); assertEquals(resource.value, 22.0f); assertEquals(resource.type, TypedValue.COMPLEX_UNIT_PX); resource = DimensionResource.fromString("23"); assertEquals(resource.value, 23.0f); assertEquals(resource.type, TypedValue.COMPLEX_UNIT_PX); } @Test(expected = IllegalArgumentException.class) public void testFromStringWithUnknownUnit() throws Exception { resource = DimensionResource.fromString("23sd"); } @Test(expected = IllegalArgumentException.class) public void testFromStringWithOnlyUnit() throws Exception { resource = DimensionResource.fromString("dp"); } @Test(expected = IllegalArgumentException.class) public void testFromStringWithError() throws Exception { resource = DimensionResource.fromString("15$$$*dp"); } }