blob: 7758cc45949c8f281155360b21151563beb8d292 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
package org.netbeans.modules.javascript.cdnjs;
import java.util.Comparator;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* Tests of a {@code Version} class.
*
* @author Jan Stola
*/
public class VersionTest {
private int compare(Comparator<Version> comparator, String version1, String version2) {
Version v1 = Version.parse(version1);
Version v2 = Version.parse(version2);
return (int)Math.signum(comparator.compare(v1, v2));
}
@Test
public void testBasic() {
Comparator<Version> comparator = Version.Comparator.getInstance(false);
assertEquals(0, compare(comparator, "2", "2"));
assertEquals(1, compare(comparator, "5", "7"));
assertEquals(-1, compare(comparator, "7", "5"));
assertEquals(-1, compare(comparator, "13", "4"));
assertEquals(1, compare(comparator, "2.3", "2.5"));
assertEquals(-1, compare(comparator, "2.15", "2.9"));
assertEquals(-1, compare(comparator, "4.1", "4"));
assertEquals(1, compare(comparator, "3.1.4.1.5.926", "3.1.4.5.1234"));
}
@Test
public void testAscending() {
Comparator<Version> comparator = Version.Comparator.getInstance(true);
assertEquals(0, compare(comparator, "2", "2"));
assertEquals(-1, compare(comparator, "5", "7"));
assertEquals(1, compare(comparator, "7", "5"));
assertEquals(1, compare(comparator, "13", "4"));
assertEquals(-1, compare(comparator, "2.3", "2.5"));
assertEquals(1, compare(comparator, "2.15", "2.9"));
assertEquals(1, compare(comparator, "4.1", "4"));
assertEquals(-1, compare(comparator, "3.1.4.1.5.926", "3.1.4.5.1234"));
}
@Test
public void testPre() {
Comparator<Version> comparator = Version.Comparator.getInstance(false);
assertEquals(1, compare(comparator, "2.3alpha", "2.3"));
assertEquals(-1, compare(comparator, "3.8", "3.8beta"));
assertEquals(1, compare(comparator, "0.0.1pre", "0.0.1"));
assertEquals(1, compare(comparator, "1.2.3beta2", "1.2.3beta3"));
assertEquals(-1, compare(comparator, "8.0.1", "8.0.1-rc4"));
assertEquals(1, compare(comparator, "0.7dev", "0.7"));
assertEquals(1, compare(comparator, "5alpha", "5beta"));
assertEquals(1, compare(comparator, "5.3alpha", "5.3rc"));
assertEquals(1, compare(comparator, "5.3beta", "5.3rc"));
assertEquals(1, compare(comparator, "5.3pre", "5.3rc"));
assertEquals(1, compare(comparator, "5.3dev", "5.3rc"));
}
@Test
public void testPost() {
Comparator<Version> comparator = Version.Comparator.getInstance(false);
assertEquals(-1, compare(comparator, "3.0.1patch", "3.0.1"));
assertEquals(-1, compare(comparator, "3.0.1fix", "3.0.1"));
assertEquals(1, compare(comparator, "3.0.1patch2", "3.0.1patch15"));
}
@Test
public void testText() {
Comparator<Version> comparator = Version.Comparator.getInstance(false);
assertEquals(1, compare(comparator, "23a", "23c"));
}
@Test
public void testDate() {
Comparator<Version> comparator = Version.Comparator.getInstance(false);
assertEquals(-1, compare(comparator, "2014-11-29", "2014-08-29"));
assertEquals(1, compare(comparator, "2014-5-13", "2014-10-29"));
}
@Test
public void testOther() {
Comparator<Version> comparator = Version.Comparator.getInstance(false);
assertEquals(-1, compare(comparator, "r3", "r2"));
assertEquals(1, compare(comparator, "r2", "r15"));
assertEquals(1, compare(comparator, "1.0.0-rc8", "1.0.0-rc.9"));
assertEquals(-1, compare(comparator, "1.3.0-beta.13", "1.3.0-beta.9"));
assertEquals(1, compare(comparator, "2.0.0.RC4", "2.1.2"));
}
@Test
public void testLegacy() { // Test-cases from the old implementation of CDNJS libraries
Comparator<Version> comparator = Version.Comparator.getInstance(false);
assertEquals(1, compare(comparator, "1.0", "1.0patch1"));
assertEquals(-1, compare(comparator, "1.0patch1", "1.0"));
assertEquals(-1, compare(comparator, "1.0", "1.0rc1"));
assertEquals(1, compare(comparator, "1.0rc1", "1.0"));
assertEquals(1, compare(comparator, "1.0-pre.1", "1.0-pre.2"));
assertEquals(-1, compare(comparator, "1.0-rc2", "1.0-pre1"));
assertEquals(-1, compare(comparator, "1.0-rc1", "1.0-pre7"));
assertEquals(1, compare(comparator, "1.0-pre7", "1.0-rc1"));
assertEquals(-1, compare(comparator, "1.0-rc1", "1.0-beta7"));
assertEquals(-1, compare(comparator, "1.0-pre1", "1.0-beta7"));
assertEquals(1, compare(comparator, "1.0-beta7", "1.0-pre1"));
assertEquals(0, compare(comparator, "1.0-rc2", "1.0-rc2"));
assertEquals(1, compare(comparator, "1.0-rc2", "1.0-patch"));
assertEquals(-1, compare(comparator, "1.0-patch", "1.0-rc2"));
assertEquals(-1, compare(comparator, "1.0-patch4", "1.0-patch3"));
assertEquals(-1, compare(comparator, "1.0-patch1", "1.0-beta.3"));
assertEquals(1, compare(comparator, "3.0.0-rc1", "3.0.0-rc2"));
assertEquals(-1, compare(comparator, "3.0.0-rc2", "3.0.0-rc1"));
}
@Test
public void testIssue230467() {
Comparator<Version> comparator = Version.Comparator.getInstance(false);
assertEquals(1, compare(comparator, "1.0.0rc6", "1.1.5")); // angular.js
assertEquals(1, compare(comparator, "0.9.9-amdjs", "1.0.0")); // backbone.js
assertEquals(1, compare(comparator, "1.0pre", "1.0.0-rc.4")); // ember.js
assertEquals(1, compare(comparator, "0.97a", "0.99")); // headjs
assertEquals(1, compare(comparator, "0.5.0-dev", "0.7.2")); // mustache.js
assertEquals(1, compare(comparator, "1.0.rc.2", "1.0.0-rc.4")); // handlebars.js
assertEquals(1, compare(comparator, "1.0.0-rc.4", "1.0.0-rc.7")); // ember.js
}
@Test
public void testIssue248426() {
Comparator<Version> comparator = Version.Comparator.getInstance(false);
assertEquals(-1, compare(comparator, "2.1.1", "2.1.1-rc2")); // jQuery
}
}