/*
* (C) Copyright 2011-2015 Nuxeo SA (http://nuxeo.com/) and others.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Contributors:
* Julien Carsique
*
*/
package org.nuxeo.common.utils;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.junit.Test;
import org.nuxeo.common.utils.FileVersion;
public class FileVersionTest {
@Test
public void test() {
// test version containing only major part
assertArrayEquals(new FileVersion("1").getSplitVersion(), new Integer[] { 1 });
FileVersion fv = new FileVersion("1-qualifier");
assertArrayEquals(fv.getSplitVersion(), new Integer[] { 1 });
assertEquals("-qualifier", fv.getQualifier());
fv = new FileVersion("1_qualifier");
assertArrayEquals(fv.getSplitVersion(), new Integer[] { 1 });
assertEquals("_qualifier", fv.getQualifier());
// test caja versions
fv = new FileVersion("r1234");
assertArrayEquals(fv.getSplitVersion(), new Integer[] { 1234 });
fv = new FileVersion("r1234-qualifier");
assertArrayEquals(fv.getSplitVersion(), new Integer[] { 1234 });
assertEquals("-qualifier", fv.getQualifier());
fv = new FileVersion("r1234_qualifier");
assertArrayEquals(fv.getSplitVersion(), new Integer[] { 1234 });
assertEquals("_qualifier", fv.getQualifier());
assertArrayEquals(new FileVersion("1.3.3").getSplitVersion(), new Integer[] { 1, 3, 3 });
assertEquals(new FileVersion("1.3.3").getQualifier(), "");
assertArrayEquals(new FileVersion("1.3.3_01").getSplitVersion(), new Integer[] { 1, 3, 3 });
assertEquals(new FileVersion("1.3.3_01").getQualifier(), "_01");
assertArrayEquals(new FileVersion("1.1-BETA5-incubating").getSplitVersion(), new Integer[] { 1, 1 });
assertEquals(new FileVersion("1.1-BETA5-incubating").getQualifier(), "-BETA5-incubating");
assertArrayEquals(new FileVersion("3.3.1.GA-NX").getSplitVersion(), new Integer[] { 3, 3, 1 });
assertEquals(new FileVersion("3.3.1.GA-NX").getQualifier(), ".GA-NX");
assertArrayEquals(new FileVersion("1.3.1-NXP-7750").getSplitVersion(), new Integer[] { 1, 3, 1 });
assertEquals(new FileVersion("1.3.1-NXP-7750").getQualifier(), "-NXP-7750");
assertArrayEquals(new FileVersion("3.0-NX3.2").getSplitVersion(), new Integer[] { 3, 0 });
assertEquals(new FileVersion("3.0-NX3.2").getQualifier(), "-NX3.2");
assertArrayEquals(new FileVersion("0.4.0-r1096750").getSplitVersion(), new Integer[] { 0, 4, 0 });
assertEquals(new FileVersion("0.4.0-r1096750").getQualifier(), "-r1096750");
assertTrue("5.5 must be greater than 5.4", new FileVersion("5.5").compareTo(new FileVersion("5.4")) > 0);
assertTrue("5.5-SNAPSHOT must be greater than 5.4",
new FileVersion("5.5-SNAPSHOT").compareTo(new FileVersion("5.4")) > 0);
assertTrue("5.5 must be greater than 5.4-SNAPSHOT",
new FileVersion("5.5").compareTo(new FileVersion("5.4-SNAPSHOT")) > 0);
assertTrue("5.5 must be greater than 5.5-SNAPSHOT",
new FileVersion("5.5").compareTo(new FileVersion("5.5-SNAPSHOT")) > 0);
assertTrue("5.5-anything must be greater than 5.5",
new FileVersion("5.5-anything").compareTo(new FileVersion("5.5")) > 0);
assertTrue("5.5_01 must be greater than 5.5", new FileVersion("5.5_01").compareTo(new FileVersion("5.5")) > 0);
assertTrue("5.5_01 must be lesser than 5.5.1",
new FileVersion("5.5_01").compareTo(new FileVersion("5.5.1")) < 0);
assertTrue("5.5-NXP must be lesser than 5.5.1",
new FileVersion("5.5-NXP").compareTo(new FileVersion("5.5.1")) < 0);
assertTrue("5.5-anything must be greater than 5.5-SNAPSHOT",
new FileVersion("5.5-anything").compareTo(new FileVersion("5.5-SNAPSHOT")) > 0);
assertTrue("5.5.1 must be greater than 5.5", new FileVersion("5.5.1").compareTo(new FileVersion("5.5")) > 0);
assertTrue("5.5.1 must be greater than 5.5-SNAPSHOT",
new FileVersion("5.5.1").compareTo(new FileVersion("5.5-SNAPSHOT")) > 0);
assertTrue("5.5.1 must be greater than 5.5-anything",
new FileVersion("5.5.1").compareTo(new FileVersion("5.5-anything")) > 0);
assertTrue("5.5.1-SNAPSHOT must be greater than 5.5-SNAPSHOT",
new FileVersion("5.5.1-SNAPSHOT").compareTo(new FileVersion("5.5-SNAPSHOT")) > 0);
assertEquals("5.5-SNAPSHOT must be equal to 5.5-SNAPSHOT", new FileVersion("5.5-SNAPSHOT"), new FileVersion(
"5.5-SNAPSHOT"));
// Release candidate, alpha and beta versions must be lower than the
// final version
assertTrue("5.5 must be greater than 5.5-RC1", new FileVersion("5.5").compareTo(new FileVersion("5.5-RC1")) > 0);
assertTrue("5.5-RC2 must be greater than 5.5-RC1",
new FileVersion("5.5-RC2").compareTo(new FileVersion("5.5-RC1")) > 0);
assertTrue("5.5 must be greater than 5.5-alpha1",
new FileVersion("5.5").compareTo(new FileVersion("5.5-alpha1")) > 0);
assertTrue("5.5 must be greater than 5.5-BETA6",
new FileVersion("5.5").compareTo(new FileVersion("5.5-BETA6")) > 0);
// Date-based versions must be lower than the final version
assertTrue("5.5 must be greater than 5.5-I20120101_0115",
new FileVersion("5.5").compareTo(new FileVersion("5.5-I20120101_0115")) > 0);
assertTrue("5.5.1-I20120101_0115 must be greater than 5.5",
new FileVersion("5.5.1-I20120101_0115").compareTo(new FileVersion("5.5")) > 0);
assertTrue("5.5.1-I20120101_0115 must be greater than 5.5.1-I20110101_0115", new FileVersion(
"5.5.1-I20120101_0115").compareTo(new FileVersion("5.5.1-I20110101_0115")) > 0);
}
@Test
public void testOrdering() {
List<FileVersion> versions = new ArrayList<>();
versions.add(new FileVersion("5.8"));
versions.add(new FileVersion("5.8-HF00-NXP-9999"));
versions.add(new FileVersion("5.8-NXP-9999"));
versions.add(new FileVersion("5.8-HF01"));
Collections.shuffle(versions);
Collections.sort(versions);
List<FileVersion> expectedOrder = new ArrayList<>();
expectedOrder.add(new FileVersion("5.8"));
expectedOrder.add(new FileVersion("5.8-HF00-NXP-9999"));
expectedOrder.add(new FileVersion("5.8-HF01"));
expectedOrder.add(new FileVersion("5.8-NXP-9999"));
assertEquals(expectedOrder, versions);
}
}