/** * Copyright (c) 2010, 2013 Darmstadt University of Technology. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Andreas Sewe - initial API and implementation * Olav Lenz - made tests run on Windows */ package org.eclipse.recommenders.coordinates.jre; import static org.eclipse.recommenders.testing.FolderUtils.dir; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.assertThat; import java.io.File; import java.util.Collection; import java.util.LinkedList; import org.eclipse.recommenders.coordinates.Coordinates; import org.eclipse.recommenders.coordinates.DependencyInfo; import org.eclipse.recommenders.coordinates.DependencyType; import org.eclipse.recommenders.coordinates.IProjectCoordinateAdvisor; import org.eclipse.recommenders.coordinates.ProjectCoordinate; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; import com.google.common.base.Optional; import com.google.common.collect.Lists; @RunWith(Parameterized.class) public class JREDirectoryNameAdvisorTest { private final DependencyInfo dependencyInfo; private final Optional<ProjectCoordinate> expectedCoordinate; public JREDirectoryNameAdvisorTest(File javaHome, String jreVersion) { dependencyInfo = new DependencyInfo(javaHome, DependencyType.JRE); expectedCoordinate = Coordinates.tryNewProjectCoordinate("jre", "jre", jreVersion); } @Parameters public static Collection<Object[]> scenarios() { LinkedList<Object[]> scenarios = Lists.newLinkedList(); // Real-world scenarios scenarios.add(jre(dir("Library", "Java", "JavaVirtualMachines", "1.6.0_45-b06-451.jdk", "Contents", "Home"), "1.6.0")); scenarios.add(jre(dir("Library", "Java", "JavaVirtualMachines", "jdk-9.jdk", "Contents", "Home"), "1.9.0")); scenarios.add(jre(dir("Library", "Java", "JavaVirtualMachines", "jdk1.7.0_09.jdk", "Contents/Home"), "1.7.0")); scenarios.add(jre(dir("usr", "lib", "jvm", "java-1.7.0-openjdk-amd64", "jre"), "1.7.0")); scenarios.add(jre(dir("usr", "lib", "jvm", "java-1.5.0-gcj-4.6", "jre"), "1.5.0")); scenarios.add(jre(dir("usr", "lib", "jvm", "java-7-openjdk-amd64", "jre"), "1.7.0")); scenarios.add(jre(dir("System", "Library", "Frameworks", "JavaVM.framework", "CurrentJDK", "Home"), "")); // Artificial scenarios scenarios.add(jre(dir("1.6.0", "..", "1.7.0"), "1.7.0")); scenarios.add(jre(dir("1.6.0", "..", "current"), "1.6.0")); return scenarios; } private static Object[] jre(File javaHome, String jreVersion) { return new Object[] { javaHome, jreVersion }; } @Test public void testAdvisor() { IProjectCoordinateAdvisor sut = new JREDirectoryNameAdvisor(); Optional<ProjectCoordinate> coordinate = sut.suggest(dependencyInfo); assertThat(coordinate, is(equalTo(expectedCoordinate))); } }