/**
* 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.
*/
package org.eclipse.recommenders.utils;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.assertThat;
import java.util.Arrays;
import org.junit.Test;
public class VersionsTest {
private static final Version V_1_0_0 = new Version(1, 0, 0);
private static final Version V_1_9_0 = new Version(1, 9, 0);
private static final Version V_2_0_0 = new Version(2, 0, 0);
private static final Version V_2_1_0 = new Version(2, 1, 0);
private static final Version V_2_2_0 = new Version(2, 2, 0);
private static final Version V_2_2_1 = new Version(2, 2, 1);
private static final Version V_2_2_2 = new Version(2, 2, 2);
private static final Version V_2_2_3 = new Version(2, 2, 3);
private static final Version V_2_3_0 = new Version(2, 3, 0);
private static final Version V_2_9_0 = new Version(2, 9, 0);
private static final Version V_3_0_0 = new Version(3, 0, 0);
private static final Version V_4_0_0 = new Version(4, 0, 0);
@Test
public void testExactMatchIsClosest() {
Version closest = Versions.findClosest(V_2_0_0, Arrays.asList(V_1_0_0, V_2_0_0, V_3_0_0));
assertThat(closest, is(equalTo(V_2_0_0)));
}
@Test
public void testSameMajorVersionIsCloserAbove() {
Version closest = Versions.findClosest(V_2_0_0, Arrays.asList(V_1_9_0, V_2_9_0));
assertThat(closest, is(equalTo(V_2_9_0)));
}
@Test
public void testSameMajorVersionIsCloserBelow() {
Version closest = Versions.findClosest(V_2_9_0, Arrays.asList(V_2_0_0, V_3_0_0));
assertThat(closest, is(equalTo(V_2_0_0)));
}
@Test
public void testPreferLowerMajorVersionOverHigher() {
Version major = Versions.findClosest(V_2_0_0, Arrays.asList(V_1_0_0, V_3_0_0));
assertThat(major, is(equalTo(V_1_0_0)));
}
@Test
public void testPreferLowerMinorVersionOverHigher() {
Version closest = Versions.findClosest(V_2_2_0, Arrays.asList(V_2_1_0, V_2_3_0));
assertThat(closest, is(equalTo(V_2_1_0)));
}
@Test
public void testPreferLowerPatchVersionOverHigher() {
Version closest = Versions.findClosest(V_2_2_2, Arrays.asList(V_2_2_1, V_2_2_3));
assertThat(closest, is(equalTo(V_2_2_1)));
}
@Test
public void testPreferLowerMajorVersionOverHigher2() {
Version closest = Versions.findClosest(V_2_1_0, Arrays.asList(V_1_0_0, V_3_0_0));
assertThat(closest, is(equalTo(V_1_0_0)));
}
@Test
public void testPreferNearestMajorVersionAbove() {
Version closest = Versions.findClosest(V_3_0_0, Arrays.asList(V_1_0_0, V_4_0_0));
assertThat(closest, is(equalTo(V_4_0_0)));
}
@Test
public void testPreferNearestMajorVersionBelow() {
Version closest = Versions.findClosest(V_2_0_0, Arrays.asList(V_1_0_0, V_4_0_0));
assertThat(closest, is(equalTo(V_1_0_0)));
}
@Test
public void testPreferHighestMinorVersionVersionForLowerMajorVersion() {
Version closest = Versions.findClosest(V_3_0_0, Arrays.asList(V_2_0_0, V_2_1_0));
assertThat(closest, is(equalTo(V_2_1_0)));
}
@Test
public void testPreferLowestMinorVersionVersionForHigherMajorVersion() {
Version closest = Versions.findClosest(V_1_0_0, Arrays.asList(V_2_0_0, V_2_1_0));
assertThat(closest, is(equalTo(V_2_0_0)));
}
}