blob: 608c2a4cf4d95585bd795cd76652da9a9bf0e3b6 [file] [log] [blame]
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");
}
}