blob: d247077b70489b393aa32e663bdaac3ee2e08b5a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2014 Obeo and others.
* 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:
* Obeo - initial API and implementation
*******************************************************************************/
package org.eclipse.wst.jsdt.nodejs.core.tests.internal.semver;
import org.eclipse.wst.jsdt.nodejs.core.api.semver.Range;
import org.eclipse.wst.jsdt.nodejs.core.api.semver.Version;
import org.junit.Test;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
/**
* In those tests, we will see if a specific version number matches a given range by respecting the Node.js
* semantic versioning rules.
*
* @author <a href="mailto:stephane.begaudeau@obeo.fr">Stephane Begaudeau</a>
*/
public class RangeTests {
/**
* Test some version numbers with exact ranges.
*/
@Test
public void testExactRanges() {
// valid
assertTrue(Version.fromString("1.0.0").isIn(Range.fromString("1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(Version.fromString("1.0.0").isIn(Range.fromString("1.0"))); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(Version.fromString("1.0.0").isIn(Range.fromString("1"))); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(Version.fromString("1.0.0+build2012").isIn(Range.fromString("1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(Version.fromString("1.0.0").isIn(Range.fromString("v1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(Version.fromString("1.0.0").isIn(Range.fromString("v1.0"))); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(Version.fromString("1.0.0").isIn(Range.fromString("v1"))); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(Version.fromString("1.0.0").isIn(Range.fromString("=1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(Version.fromString("1.0.0").isIn(Range.fromString("=1.0"))); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(Version.fromString("1.0.0").isIn(Range.fromString("=1"))); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(Version.fromString("1.0.0").isIn(Range.fromString("=v1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(Version.fromString("1.0.0").isIn(Range.fromString("=v1.0"))); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(Version.fromString("1.0.0").isIn(Range.fromString("=v1"))); //$NON-NLS-1$ //$NON-NLS-2$
// invalid
assertFalse(Version.fromString("1.0.1").isIn(Range.fromString("1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
assertFalse(Version.fromString("1.1.0").isIn(Range.fromString("1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
assertFalse(Version.fromString("2.0.0").isIn(Range.fromString("1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
assertFalse(Version.fromString("1.0.1").isIn(Range.fromString("=1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
assertFalse(Version.fromString("0.9.9").isIn(Range.fromString("=1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
assertFalse(Version.fromString("1.0.0-beta").isIn(Range.fromString("=1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
assertFalse(Version.fromString("1.0.0-alpha").isIn(Range.fromString("=1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
assertFalse(Version.fromString("1.0.0-alpha+build2014").isIn(Range.fromString("=v1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
}
/**
* Test some version numbers with approximate ranges.
*/
@Test
public void testApproximateRanges() {
// valid
assertTrue(Version.fromString("1.0.0").isIn(Range.fromString(">=v1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(Version.fromString("1.0.0").isIn(Range.fromString(">=v1.0"))); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(Version.fromString("1.0.0").isIn(Range.fromString(">=1"))); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(Version.fromString("1.0.0").isIn(Range.fromString(">=0.0.1"))); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(Version.fromString("1.0.0").isIn(Range.fromString(">=0.9"))); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(Version.fromString("1.0.0").isIn(Range.fromString(">=0"))); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(Version.fromString("1.0.7").isIn(Range.fromString(">v0.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(Version.fromString("1.3.0").isIn(Range.fromString(">v1.2"))); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(Version.fromString("1.4.2").isIn(Range.fromString(">v1.4.1"))); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(Version.fromString("1.0.7").isIn(Range.fromString("<v2.0.8"))); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(Version.fromString("1.3.0").isIn(Range.fromString("<v1.4"))); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(Version.fromString("1.4.2").isIn(Range.fromString("<v1.4.11"))); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(Version.fromString("1.0.7").isIn(Range.fromString(">v1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(Version.fromString("1.3.0").isIn(Range.fromString(">v1.2"))); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(Version.fromString("1.4.2").isIn(Range.fromString(">v1.3.11"))); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(Version.fromString("1.0.7-beta+build1234").isIn(Range.fromString(">v1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(Version.fromString("2.0.0-beta+build1234").isIn(Range.fromString(">v1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(Version.fromString("2.0.0-beta+build1234").isIn(Range.fromString("<=v2.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
// invalid
assertFalse(Version.fromString("1.0.0").isIn(Range.fromString(">1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
assertFalse(Version.fromString("1.0.0-beta").isIn(Range.fromString(">=v1.0"))); //$NON-NLS-1$ //$NON-NLS-2$
assertFalse(Version.fromString("1.1.1").isIn(Range.fromString(">=1.2"))); //$NON-NLS-1$ //$NON-NLS-2$
}
/**
* Test some version numbers with multiple ranges.
*/
@Test
public void testMultipleRanges() {
// valid
assertTrue(Version.fromString("1.0.2").isIn(Range.fromString(">v0.9.3 <v1.1.8"))); //$NON-NLS-1$ //$NON-NLS-2$
// invalid
assertFalse(Version.fromString("1.0.2").isIn(Range.fromString(">v1.9.3 <v2.1.8"))); //$NON-NLS-1$ //$NON-NLS-2$
assertFalse(Version.fromString("1.0.2").isIn(Range.fromString(">v0.9.3 <v0.9.8"))); //$NON-NLS-1$ //$NON-NLS-2$
}
/**
* Test some version numbers with any range.
*/
@Test
public void testAnyRange() {
// valid
assertTrue(Version.fromString("1.0.7-beta+build1234").isIn(Range.fromString("*"))); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(Version.fromString("v8").isIn(Range.fromString("*"))); //$NON-NLS-1$ //$NON-NLS-2$
}
}