package cgeo.geocaching.models; import static org.assertj.core.api.Java6Assertions.assertThat; import cgeo.CGeoTestCase; import cgeo.geocaching.utils.FileUtils; import android.net.Uri; import android.os.Parcel; import java.io.File; /** * ImageTest unit tests */ public class ImageTest extends CGeoTestCase { private static final String URL1 = "https://nowhe.re"; private static final String URL2 = "https://nowhe.re/image.png"; private static final String FILE1 = "file:///dev/null"; private static final String FILE2 = "file:///tmp/image.png"; private static final String FILE3 = "/tmp/image.png"; public static void testNullConstructor() throws Exception { final Image nullImage1 = new Image.Builder().build(); assertThat(nullImage1).isEqualTo(Image.NONE); } public static void testStringConstructor() throws Exception { final Image image1 = new Image.Builder().setUrl("").build(); final Image image2 = new Image.Builder().setUrl(FILE1).build(); final Image image3 = new Image.Builder().setUrl(URL1).build(); final Image image4 = new Image.Builder().setUrl(FILE3).build(); assertThat(image1).isEqualTo(Image.NONE); assertThat(image2).isNotEqualTo(Image.NONE); assertThat(image3).isNotEqualTo(Image.NONE); assertThat(image4).isNotEqualTo(Image.NONE); } public static void testUriConstructor() throws Exception { final Image image1 = new Image.Builder().setUrl(Uri.parse(URL1)).build(); final Image image2 = new Image.Builder().setUrl(Uri.parse(URL2)).build(); assertThat(image1).isNotEqualTo(Image.NONE); assertThat(image1.getUrl()).isEqualTo(URL1); assertThat(image2.getUrl()).isEqualTo(URL2); } public static void testFileConstructor() throws Exception { final Image image1 = new Image.Builder().setUrl(FileUtils.urlToFile(FILE1)).build(); final Image image2 = new Image.Builder().setUrl(FileUtils.urlToFile(FILE2)).build(); assertThat(image1).isNotEqualTo(Image.NONE); assertThat(image2).isNotEqualTo(Image.NONE); assertThat(image1.getUrl()).isEqualTo(FILE1); assertThat(image2.getUrl()).isEqualTo(FILE2); } public static void testTitle() throws Exception { final Image image1 = new Image.Builder().setTitle("Title").build(); final Image image2 = new Image.Builder().setTitle("").build(); final Image image3 = new Image.Builder().setTitle(null).build(); assertThat(image1).isNotEqualTo(Image.NONE); assertThat(image1.getTitle()).isEqualTo("Title"); assertThat(image1.getDescription()).isNull(); assertThat(image2).isNotEqualTo(Image.NONE); assertThat(image2.getTitle()).isEqualTo(""); assertThat(image2.getDescription()).isNull(); assertThat(image3).isEqualTo(Image.NONE); assertThat(image3.getTitle()).isNull(); assertThat(image3.getDescription()).isNull(); } public static void testDescription() throws Exception { final Image image1 = new Image.Builder().setDescription("Description").build(); final Image image2 = new Image.Builder().setDescription("").build(); final Image image3 = new Image.Builder().setDescription(null).build(); assertThat(image1).isNotEqualTo(Image.NONE); assertThat(image1.getTitle()).isNull(); assertThat(image1.getDescription()).isEqualTo("Description"); assertThat(image2).isNotEqualTo(Image.NONE); assertThat(image2.getTitle()).isNull(); assertThat(image2.getDescription()).isEqualTo(""); assertThat(image3).isEqualTo(Image.NONE); assertThat(image3.getTitle()).isNull(); assertThat(image3.getDescription()).isNull(); } public static void testIsEmpty() throws Exception { final Image image1 = new Image.Builder().build(); final Image image2 = new Image.Builder().setUrl("").build(); final Image image3 = new Image.Builder().setUrl(FILE1).build(); final Image image4 = new Image.Builder().setUrl(URL1).build(); assertThat(image1.isEmpty()).isTrue(); assertThat(image2.isEmpty()).isTrue(); assertThat(image3.isEmpty()).isFalse(); assertThat(image4.isEmpty()).isFalse(); } public static void testIsLocalFile() throws Exception { final Image image1 = new Image.Builder().build(); final Image image2 = new Image.Builder().setUrl("").build(); final Image image3 = new Image.Builder().setUrl(FILE1).build(); final Image image4 = new Image.Builder().setUrl(URL1).build(); assertThat(image1.isLocalFile()).isFalse(); assertThat(image2.isLocalFile()).isFalse(); assertThat(image3.isLocalFile()).isTrue(); assertThat(image4.isLocalFile()).isFalse(); } public static void testLocalFile() throws Exception { final Image image1 = new Image.Builder().setUrl(FILE1).build(); assertThat(image1.localFile()).isEqualTo(FileUtils.urlToFile(FILE1)); } public static void testGetUrl() throws Exception { final Image image1 = new Image.Builder().build(); final Image image2 = new Image.Builder().setUrl("").build(); final Image image3 = new Image.Builder().setUrl(FILE1).build(); final Image image4 = new Image.Builder().setUrl(URL1).build(); final Image image5 = new Image.Builder().setUrl(URL2).build(); final Image image6 = new Image.Builder().setUrl(FILE3).build(); assertThat(image1.getUrl()).isEqualTo(""); assertThat(image2.getUrl()).isEqualTo(""); assertThat(image3.getUrl()).isEqualTo(FILE1); assertThat(image4.getUrl()).isEqualTo(URL1); assertThat(image5.getUrl()).isEqualTo(URL2); assertThat(image6.getUrl()).isEqualTo("file://" + FILE3); } public static void testGetPath() throws Exception { final Image image1 = new Image.Builder().build(); final Image image2 = new Image.Builder().setUrl("").build(); final Image image3 = new Image.Builder().setUrl(FILE1).build(); final Image image4 = new Image.Builder().setUrl(FILE2).build(); final Image image5 = new Image.Builder().setUrl(URL1).build(); final Image image6 = new Image.Builder().setUrl(URL2).build(); final Image image7 = new Image.Builder().setUrl(FILE3).build(); assertThat(image1.getPath()).isEqualTo(""); assertThat(image2.getPath()).isEqualTo(""); assertThat(image3.getPath()).isEqualTo("/dev/null"); assertThat(image4.getPath()).isEqualTo("/tmp/image.png"); assertThat(image5.getPath()).isEqualTo(""); assertThat(image6.getPath()).isEqualTo(""); assertThat(image7.getPath()).isEqualTo("/tmp/image.png"); } public static void testGetTitle() throws Exception { final Image image1 = new Image.Builder().setTitle("Title").build(); assertThat(image1.getTitle()).isEqualTo("Title"); } public static void testGetDescription() throws Exception { final Image image1 = new Image.Builder().setDescription("Description").build(); assertThat(image1.getDescription()).isEqualTo("Description"); } public static void testGetFile() throws Exception { final Image image1 = new Image.Builder().build(); final Image image2 = new Image.Builder().setUrl(FILE1).build(); final Image image3 = new Image.Builder().setUrl(FILE2).build(); final Image image4 = new Image.Builder().setUrl(FILE3).build(); assertThat(image1.getFile()).isEqualTo(null); assertThat(image2.getFile()).isEqualTo(new File("/dev/null")); assertThat(image3.getFile()).isEqualTo(new File("/tmp/image.png")); assertThat(image4.getFile()).isEqualTo(new File("/tmp/image.png")); } public static void testBuildUppon() throws Exception { final Image image1 = new Image.Builder().setUrl(FILE1).setTitle("Title1").setDescription("Description1").build(); final Image image2 = image1.buildUpon().build(); final Image image3 = image1.buildUpon().setTitle("New Title").build(); assertThat(image1).isEqualTo(image2); assertThat(image1).isNotEqualTo(image3); assertThat(image3.title).isEqualTo("New Title"); } public static void testEquals() throws Exception { final Image image1 = new Image.Builder().setUrl(FILE1).setTitle("Title1").setDescription("Description1").build(); final Image image2 = new Image.Builder().build(); final Image image3 = new Image.Builder().setTitle("Title1").setDescription("Description1").build(); final Image image4 = new Image.Builder().setUrl("").setTitle("Title1").setDescription("Description1").build(); final Image image5 = new Image.Builder().setUrl(FILE1).setTitle("Title1").setDescription("Description2").build(); final Image image6 = new Image.Builder().setUrl(FILE1).setTitle("FOO").setDescription("BAR").build(); final Image image7 = new Image.Builder().setUrl(image6).build(); final Image image8 = new Image.Builder().setUrl(image5).setDescription("Description1").build(); final Image image9 = new Image.Builder().setUrl(image5).setTitle("Title1").setDescription("Description1").build(); assertThat(image1).isEqualTo(image1); assertThat(image2).isEqualTo(image2); assertThat(image1).isNotEqualTo(image2); assertThat(image1).isNotEqualTo(image3); assertThat(image1).isNotEqualTo(image4); assertThat(image1).isNotEqualTo(image5); assertThat(image1).isNotEqualTo(image6); assertThat(image1).isNotEqualTo(image7); assertThat(image1).isNotEqualTo(image8); assertThat(image1).isEqualTo(image9); assertThat(image6).isNotEqualTo(image7); } public static void testParcel() throws Exception { final Image image1 = new Image.Builder().setUrl(FILE1).setTitle("Title1").setDescription("Description1").build(); final Parcel parcel = Parcel.obtain(); image1.writeToParcel(parcel, 0); parcel.setDataPosition(0); final Image image2 = Image.CREATOR.createFromParcel(parcel); assertThat(image1).isEqualTo(image2); parcel.recycle(); } }