package games.strategy.engine.framework.map.download; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; import java.io.File; import org.junit.Test; import games.strategy.engine.ClientFileSystemHelper; import games.strategy.util.Version; public class DownloadFileDescriptionTest { @Test public void testIsMap() { final DownloadFileDescription testObj = new DownloadFileDescription("", "", "", new Version(0, 0), DownloadFileDescription.DownloadType.MAP, DownloadFileDescription.MapCategory.EXPERIMENTAL); assertThat(testObj.isMap(), is(true)); } @Test public void testIsSkin() { final DownloadFileDescription testObj = new DownloadFileDescription("", "", "", new Version(0, 0), DownloadFileDescription.DownloadType.MAP_SKIN, DownloadFileDescription.MapCategory.EXPERIMENTAL); assertThat(testObj.isMapSkin(), is(true)); } @Test public void testIsTool() { final DownloadFileDescription testObj = new DownloadFileDescription("", "", "", new Version(0, 0), DownloadFileDescription.DownloadType.MAP_TOOL, DownloadFileDescription.MapCategory.EXPERIMENTAL); assertThat(testObj.isMapTool(), is(true)); } @Test public void testGetMapName() { final String mapName = "abc"; final DownloadFileDescription testObj = new DownloadFileDescription("", "", mapName, new Version(0, 0), DownloadFileDescription.DownloadType.MAP, DownloadFileDescription.MapCategory.EXPERIMENTAL); assertThat(testObj.getMapName(), is(mapName)); } @Test public void testGetMapType() { final DownloadFileDescription testObj = new DownloadFileDescription("", "", "", new Version(0, 0), DownloadFileDescription.DownloadType.MAP, DownloadFileDescription.MapCategory.BEST); assertThat(testObj.getMapCategory(), is(DownloadFileDescription.MapCategory.BEST)); } @Test public void testGetMapFileName() { final String expectedFileName = "world_war_ii_revised.zip"; String inputUrl = "https://github.com/triplea-maps/world_war_ii_revised/releases/download/0.1/" + expectedFileName; DownloadFileDescription testObj = testObjFromUrl(inputUrl); assertThat(testObj.getMapZipFileName(), is(expectedFileName)); inputUrl = "http://abc.com/" + expectedFileName; testObj = testObjFromUrl(inputUrl); assertThat(testObj.getMapZipFileName(), is(expectedFileName)); inputUrl = "abc.zip"; testObj = testObjFromUrl(inputUrl); assertThat("Unable to parse a url, no last '/' character, return empty.", testObj.getMapZipFileName(), is("")); } private static DownloadFileDescription testObjFromUrl(final String inputUrl) { return new DownloadFileDescription(inputUrl, "", "", new Version(0, 0), DownloadFileDescription.DownloadType.MAP, DownloadFileDescription.MapCategory.EXPERIMENTAL); } @Test public void testGetFeedbackUrl() { final String commonPrefix = "http://github.com/triplea-maps/world_war_ii_revised/"; String inputUrl = commonPrefix + "releases/download/0.1/abc.zip"; String expected = commonPrefix + "issues/new"; DownloadFileDescription testObj = testObjFromUrl(inputUrl); assertThat(testObj.getFeedbackUrl(), is(expected)); inputUrl = "http://randomWebsite/releases/abc.zip"; expected = ""; testObj = testObjFromUrl(inputUrl); assertThat("Missing 'github.com' in the URL should return empty", testObj.getFeedbackUrl(), is(expected)); inputUrl = "http://github.com/random/abc.zip"; expected = ""; testObj = testObjFromUrl(inputUrl); assertThat("Missing 'releases' in the URL, should return empty", testObj.getFeedbackUrl(), is(expected)); } @Test public void testGetInstallLocation() { String inputUrl = "http://github.com/abc.zip"; String mapName = "123-map"; File expected = new File(ClientFileSystemHelper.getUserMapsFolder() + File.separator + mapName + ".zip"); mapInstallLocationTest(inputUrl, mapName, expected); inputUrl = "http://github.com/abc-master.zip"; mapName = "best_map"; expected = new File(ClientFileSystemHelper.getUserMapsFolder() + File.separator + mapName + "-master.zip"); mapInstallLocationTest(inputUrl, mapName, expected); } private static void mapInstallLocationTest(String inputUrl, String mapName, File expected) { final DownloadFileDescription testObj = new DownloadFileDescription(inputUrl, "", mapName, new Version(0, 0), DownloadFileDescription.DownloadType.MAP, DownloadFileDescription.MapCategory.EXPERIMENTAL); assertThat(testObj.getInstallLocation().getAbsolutePath(), is(expected.getAbsolutePath())); } }