package sagan.tools.support;
import sagan.tools.Architecture;
import sagan.tools.DownloadLink;
import sagan.tools.EclipseVersion;
import sagan.tools.ToolSuiteDownloads;
import sagan.tools.ToolSuitePlatform;
import sagan.tools.UpdateSiteArchive;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.junit.Test;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
public class ToolSuiteTests {
@Test
public void testPreferredDownloadLinks() throws Exception {
ToolSuiteDownloads toolSuite = buildToolSuite();
Set<DownloadLink> links = new HashSet<>();
links.add(new DownloadLink("http://example.com/spring-tool-suite-3.6.0.RELEASE-e4.4-win32.zip",
"zip", "323MB", "windows", "32"));
links.add(new DownloadLink("http://example.com/spring-tool-suite-3.6.0.RELEASE-e4.4-win32-x86_64.zip",
"zip", "323MB", "windows", "64"));
links.add(new DownloadLink("http://example.com/spring-tool-suite-3.6.0.RELEASE-e4.4-macosx-cocoa.tar.gz",
"tar.gz", "323MB", "mac", "32"));
links.add(new DownloadLink("http://example.com/spring-tool-suite-3.6.0.RELEASE-e4.4-macosx-cocoa-x86_64.tar.gz",
"tar.gz", "323MB", "mac", "64"));
links.add(new DownloadLink("http://example.com/spring-tool-suite-3.6.0.RELEASE-e4.4-linux-gtk.tar.gz",
"tar.gz", "323MB", "linux", "32"));
links.add(new DownloadLink("http://example.com/spring-tool-suite-3.6.0.RELEASE-e4.4-linux-gtk-x86_64.tar.gz",
"tar.gz", "323MB", "linux", "64"));
assertThat(toolSuite.getPreferredDownloadLinks(), equalTo(links));
}
private ToolSuiteDownloads buildToolSuite() {
Map<String, ToolSuitePlatform> platforms = new HashMap<>();
List<EclipseVersion> macEclipseVersions = new ArrayList<>();
List<Architecture> v36MacArchitectures = new ArrayList<>();
List<DownloadLink> v36Mac64Links = new ArrayList<>();
String os = "mac";
String architecture = "64";
v36Mac64Links.add(new DownloadLink("http://example.com/spring-tool-suite-3.6.0.RELEASE-e4.4-macosx-cocoa-x86_64.tar.gz",
"tar.gz", "323MB", os, architecture));
v36MacArchitectures.add(new Architecture("Mac OS X (Cocoa, 64bit)", v36Mac64Links));
List<DownloadLink> v36Mac32Links = new ArrayList<>();
architecture = "32";
v36Mac32Links.add(new DownloadLink("http://example.com/spring-tool-suite-3.6.0.RELEASE-e4.4-macosx-cocoa.tar.gz",
"tar.gz", "323MB", os, architecture));
v36MacArchitectures.add(new Architecture("Mac OS X (Cocoa)", v36Mac32Links));
macEclipseVersions.add(new EclipseVersion("4.4", v36MacArchitectures));
List<Architecture> v35MacArchitectures = new ArrayList<>();
List<DownloadLink> v35Mac64Links = new ArrayList<>();
architecture = "64";
v35Mac64Links.add(new DownloadLink("http://example.com/spring-tool-suite-3.5.1.RELEASE-e4.3.2-macosx-cocoa-x86_64.tar.gz",
"tar.gz", "323MB", os, architecture));
v35Mac64Links.add(new DownloadLink("http://example.com/spring-tool-suite-3.5.1.RELEASE-e4.3.2-macosx-cocoa-x86_64-installer.dmg",
"dmg", "323MB", os, architecture));
v35MacArchitectures.add(new Architecture("Mac OS X (Cocoa, 64bit)", v35Mac64Links));
List<DownloadLink> v35Mac32Links = new ArrayList<>();
architecture = "32";
v35Mac32Links.add(new DownloadLink("http://example.com/spring-tool-suite-3.5.1.RELEASE-e4.3.2-macosx-cocoa.tar.gz",
"tar.gz", "323MB", os, architecture));
v35Mac32Links.add(new DownloadLink("http://example.com/spring-tool-suite-3.5.1.RELEASE-e4.3.2-macosx-cocoa-installer.dmg",
"dmg", "323MB", os, architecture));
v35MacArchitectures.add(new Architecture("Mac OS X (Cocoa)", v35Mac32Links));
macEclipseVersions.add(new EclipseVersion("4.3.2", v35MacArchitectures));
platforms.put("mac", new ToolSuitePlatform("Mac", macEclipseVersions));
os = "windows";
List<Architecture> winArchitectures = new ArrayList<>();
List<DownloadLink> win32Links = new ArrayList<>();
architecture = "32";
win32Links.add(new DownloadLink("http://example.com/spring-tool-suite-3.6.0.RELEASE-e4.4-win32.zip",
"zip", "323MB", os, architecture));
winArchitectures.add(new Architecture("Windows", win32Links));
List<DownloadLink> win64Links = new ArrayList<>();
architecture = "64";
win64Links.add(new DownloadLink("http://example.com/spring-tool-suite-3.6.0.RELEASE-e4.4-win32-x86_64.zip",
"zip", "323MB", os, architecture));
winArchitectures.add(new Architecture("Windows (64bit)", win64Links));
platforms.put("windows", new ToolSuitePlatform("Windows", Collections.singletonList(new EclipseVersion("4.4",
winArchitectures))));
os = "linux";
List<Architecture> linuxArchitectures = new ArrayList<>();
List<DownloadLink> linux32Links = new ArrayList<>();
architecture = "32";
linux32Links.add(new DownloadLink("http://example.com/spring-tool-suite-3.6.0.RELEASE-e4.4-linux-gtk.tar.gz",
"tar.gz", "323MB", os, architecture));
linux32Links.add(new DownloadLink("http://example.com/linux.sh", "sh", "323MB", os, architecture));
linuxArchitectures.add(new Architecture("Linux (GTK)", linux32Links));
List<DownloadLink> linux64Links = new ArrayList<>();
architecture = "64";
linux64Links
.add(new DownloadLink("http://example.com/spring-tool-suite-3.6.0.RELEASE-e4.4-linux-gtk-x86_64.tar.gz",
"tar.gz", "323MB", os, architecture));
linuxArchitectures.add(new Architecture("Linux (GTK, 64bit)", linux64Links));
platforms.put("linux", new ToolSuitePlatform("Linux", Collections.singletonList(new EclipseVersion("4.3",
linuxArchitectures))));
List<UpdateSiteArchive> archives = Collections.emptyList();
return new ToolSuiteDownloads("ShortName", "3.6.0.RELEASE",
"http://static.springsource.org/sts/nan/latest/NewAndNoteworthy.html", platforms, archives);
}
}