package org.robolectric.res; import org.junit.Test; import static org.assertj.core.api.Assertions.assertThat; public class ResNameTest { @Test public void shouldQualify() throws Exception { assertThat(ResName.qualifyResourceName("some.package:type/name", null, null)).isEqualTo("some.package:type/name"); assertThat(ResName.qualifyResourceName("some.package:type/name", "default.package", "deftype")).isEqualTo("some.package:type/name"); assertThat(ResName.qualifyResourceName("some.package:name", "default.package", "deftype")).isEqualTo("some.package:deftype/name"); assertThat(ResName.qualifyResourceName("type/name", "default.package", "deftype")).isEqualTo("default.package:type/name"); assertThat(ResName.qualifyResourceName("name", "default.package", "deftype")).isEqualTo("default.package:deftype/name"); assertThat(ResName.qualifyResourceName("someRawString", "default.package", null)).isNull(); } @Test public void shouldQualifyResNameFromString() throws Exception { assertThat(ResName.qualifyResName("some.package:type/name", "default_package", "default_type")) .isEqualTo(new ResName("some.package", "type", "name")); assertThat(ResName.qualifyResName("some.package:name", "default_package", "default_type")) .isEqualTo(new ResName("some.package", "default_type", "name")); assertThat(ResName.qualifyResName("type/name", "default_package", "default_type")) .isEqualTo(new ResName("default_package", "type", "name")); assertThat(ResName.qualifyResName("name", "default_package", "default_type")) .isEqualTo(new ResName("default_package", "default_type", "name")); assertThat(ResName.qualifyResName("type/package:name", "default_package", "default_type")) .isEqualTo(new ResName("package", "type", "name")); } @Test public void qualifyFromFilePathShouldExtractResourceTypeAndNameFromUnqualifiedPath() { final ResName actual = ResName.qualifyFromFilePath("some.package", "./res/drawable/icon.png"); assertThat(actual.getFullyQualifiedName()).isEqualTo("some.package:drawable/icon"); } @Test public void qualifyFromFilePathShouldExtractResourceTypeAndNameFromQualifiedPath() { final ResName actual = ResName.qualifyFromFilePath("some.package", "./res/drawable-hdpi/icon.png"); assertThat(actual.getFullyQualifiedName()).isEqualTo("some.package:drawable/icon"); } @Test public void hierarchicalNameHandlesWhiteSpace() { String name = "TextAppearance.AppCompat.Widget.ActionMode.Subtitle\n" + " "; ResName resName = new ResName("org.robolectric.example", "style", name); assertThat(resName.name).isEqualTo("TextAppearance_AppCompat_Widget_ActionMode_Subtitle"); assertThat(resName.type).isEqualTo("style"); assertThat(resName.packageName).isEqualTo("org.robolectric.example"); } @Test public void simpleNameHandlesWhiteSpace() { String name = "Subtitle\n" + " "; ResName resName = new ResName("org.robolectric.example", "style", name); assertThat(resName.name).isEqualTo("Subtitle"); assertThat(resName.type).isEqualTo("style"); assertThat(resName.packageName).isEqualTo("org.robolectric.example"); } @Test public void fullyQualifiedNameHandlesWhiteSpace() { String name = "android:style/TextAppearance.AppCompat.Widget.ActionMode.Subtitle\n" + " "; ResName resName = new ResName(name); assertThat(resName.name).isEqualTo("TextAppearance_AppCompat_Widget_ActionMode_Subtitle"); assertThat(resName.type).isEqualTo("style"); assertThat(resName.packageName).isEqualTo("android"); } @Test public void fullyQualifiedNameWithWhiteSpaceInTypeShouldBeHandledCorrectly() { String name = "android: string/ok"; ResName resName = new ResName(name); assertThat(resName.name).isEqualTo("ok"); assertThat(resName.type).isEqualTo("string"); assertThat(resName.packageName).isEqualTo("android"); } @Test public void resourceNameWithWhiteSpaceInTypeShouldBeHandledCorrectly() { ResName resName = new ResName("android", " string", "ok"); assertThat(resName.name).isEqualTo("ok"); assertThat(resName.type).isEqualTo("string"); assertThat(resName.packageName).isEqualTo("android"); } }