@Test public void testCreateVersion() throws Exception { // org.infinispan:infinispan-directory-provider:9.2.0.Alpha2 Version version = new Version("9.2.0.Alpha2"); // junit:junit:4.12 version = new Version("4.12"); // org.json:json:20171018 version = new Version("20171018"); // io.reactivex.rxjava2:rxjava:2.1.6 version = new Version("2.1.6"); // io.reactivex.rxjava2:rxjava:2.1.6-SNAPSHOT version = new Version("2.1.6-SNAPSHOT"); }
/** * Checks if this version is greater than or equal to the other version. * * @param other the other version to compare to * @return {@code true} if this version is greater than or equal * to the other version or {@code false} otherwise * @see #compareTo(Version other) */ public boolean greaterThanOrEqualTo(Version other) { return compareTo(other) >= 0; }
/** * Checks if the current version equals the parsed version. * * @param version the version to compare to, the left-hand * operand of the "equal" operator * @return {@code true} if the version equals the * parsed version or {@code false} otherwise */ @Override public boolean interpret(Version version) { return version.equals(mParsedVersion); } }
/** * Check lib version satisfies lib version requirements * * @param versions e.g. <code>{"junit:junit": "4.12", "com.android.support:support-v4": "25.3.1"}</code> * @param requirements e.g. <code>{"junit:junit": "4.12", "com.android.support:support-v4": ">=25"}</code> * @return verify result * @see Result */ public static Result satisfies(Map<String, String> versions, Map<String, String> requirements) { for (Map.Entry<String, String> entry : requirements.entrySet()) { final String lib = entry.getKey(); final String requirement = entry.getValue(); final String version = versions.get(lib); if (version == null) { // lib not exist return Result.createFailResult(lib, String.format(Locale.ENGLISH, "required lib [%s] not exist", lib)); } if (!new Version(version).satisfies(requirement)) { // lib version requirement not satisfied return Result.createFailResult(lib, String.format(Locale.ENGLISH, "required lib [%s:%s] not satisfies [%s:%s]", lib, version, lib, requirement)); } } return Result.createSuccessResult(); }
@Test public void testCompareVersionEquals() throws Exception { { Version version1 = new Version("27.0.0"); Version version2 = new Version("27.0.0"); Assert.assertTrue(version1.compareTo(version2) == 0); } { Version version1 = new Version("27.0"); Version version2 = new Version("27.0.0"); Assert.assertTrue(version1.compareTo(version2) == 0); } { Version version1 = new Version("27"); Version version2 = new Version("27.0.0"); Assert.assertTrue(version1.compareTo(version2) == 0); } { Version version1 = new Version("27"); Version version2 = new Version("27.0"); Assert.assertTrue(version1.compareTo(version2) == 0); } { Version version1 = new Version("27.0"); Version version2 = new Version("27.0.0"); Assert.assertTrue(version1.compareTo(version2) == 0); } }
@Test public void testCompareVersionEquals2() throws Exception { { Version version1 = new Version("27.0.0"); Version version2 = new Version("27.0.0"); Assert.assertTrue(version1.equals(version2)); } { Version version1 = new Version("27.0"); Version version2 = new Version("27.0.0"); Assert.assertTrue(version1.equals(version2)); } { Version version1 = new Version("27"); Version version2 = new Version("27.0.0"); Assert.assertTrue(version1.equals(version2)); } { Version version1 = new Version("27"); Version version2 = new Version("27.0"); Assert.assertTrue(version1.equals(version2)); } { Version version1 = new Version("27.0"); Version version2 = new Version("27.0.0"); Assert.assertTrue(version1.equals(version2)); } }
/** * Creates a new instance of {@code Version} as a * result of parsing the specified version string. * * @param version the version string to parse * @return a new instance of the {@code Version} class */ public Version(String version) { parseVersion(version); }
list.add(IntegerItem.ZERO); } else { list.add(parseItem(isDigit, version.substring(startIndex, i))); list.add(IntegerItem.ZERO); } else { list.add(parseItem(isDigit, version.substring(startIndex, i))); } else { if (isDigit && i > startIndex) { list.add(parseItem(true, version.substring(startIndex, i))); startIndex = i; list.add(parseItem(isDigit, version.substring(startIndex)));
@Test public void testInvalidExpressionSatisfiesShouldReturnFalse() throws Exception { Version version = new Version("27.0.0"); Assert.assertFalse(version.satisfies("=27.0.0")); Version version = new Version("27.0.0"); Assert.assertFalse(version.satisfies("==27.0.0")); Version version = new Version("27.0.0"); Assert.assertFalse(version.satisfies(">27.0.0")); Version version = new Version("27.0.0"); Assert.assertFalse(version.satisfies("<27.0.0")); Version version = new Version("27.0.0"); Assert.assertFalse(version.satisfies("<=27.0.0")); Version version = new Version("27.0.0"); Assert.assertFalse(version.satisfies("!=27.0.0")); Version version = new Version("27.0.0"); Assert.assertFalse(version.satisfies("27.0.0-prerelease"));
Version version1 = new Version("27.0.0"); Version version2 = new Version("26.0.0"); Assert.assertTrue(version1.compareTo(version2) > 0); Version version1 = new Version("26.0.1"); Version version2 = new Version("26.0.0"); Assert.assertTrue(version1.compareTo(version2) > 0); Version version1 = new Version("26.0.1"); Version version2 = new Version("26.0"); Assert.assertTrue(version1.compareTo(version2) > 0); Version version1 = new Version("26.0.1"); Version version2 = new Version("26"); Assert.assertTrue(version1.compareTo(version2) > 0); Version version1 = new Version("26.1"); Version version2 = new Version("26"); Assert.assertTrue(version1.compareTo(version2) > 0); Version version1 = new Version("20171218"); Version version2 = new Version("20171018"); Assert.assertTrue(version1.compareTo(version2) > 0);
/** * Creates a new instance of {@code Version} as a * result of parsing the specified version string. * * @param version the version string to parse * @return a new instance of the {@code Version} class */ public Version(String version) { parseVersion(version); }
list.add(IntegerItem.ZERO); } else { list.add(parseItem(isDigit, version.substring(startIndex, i))); list.add(IntegerItem.ZERO); } else { list.add(parseItem(isDigit, version.substring(startIndex, i))); } else { if (isDigit && i > startIndex) { list.add(parseItem(true, version.substring(startIndex, i))); startIndex = i; list.add(parseItem(isDigit, version.substring(startIndex)));
@Test public void testSatisfiesEqual() throws Exception { { Version version = new Version("27.0.0"); Assert.assertTrue(version.satisfies("27.0.0")); } { Version version = new Version("27.0.0"); Assert.assertTrue(version.satisfies("27.0")); } { Version version = new Version("27.0.0"); Assert.assertTrue(version.satisfies("27")); } { Version version = new Version("27.0.0"); Assert.assertFalse(version.satisfies("27.0.1")); } { Version version = new Version("27.0.0-SNAPSHOT"); Assert.assertTrue(version.satisfies("27.0.0-SNAPSHOT")); Assert.assertFalse(version.satisfies("27.0.1-SNAPSHOT")); Assert.assertFalse(version.satisfies("27.0.0")); } }
/** * Checks if this version is greater than the other version. * * @param other the other version to compare to * @return {@code true} if this version is greater than the other version * or {@code false} otherwise * @see #compareTo(Version other) */ public boolean greaterThan(Version other) { return compareTo(other) > 0; }
@Override public Expression parse(String input) throws ParseException { boolean isGte = false; String versionText; if (input.startsWith(">=")) { isGte = true; // strip operator versionText = input.substring(2); } else { versionText = input; } final Version parsedVersion = new Version(versionText); if (isGte) { return new GreaterOrEqual(parsedVersion); } else { return new Equal(parsedVersion); } } }
/** * Checks if the current version equals the parsed version. * * @param version the version to compare to, the left-hand * operand of the "equal" operator * @return {@code true} if the version equals the * parsed version or {@code false} otherwise */ @Override public boolean interpret(Version version) { return version.equals(mParsedVersion); } }
Version version = new Version("27.0.0"); Assert.assertTrue(version.satisfies(">=27.0.0")); Version version = new Version("27.0.1"); Assert.assertTrue(version.satisfies(">=27.0")); Version version = new Version("27.1.0"); Assert.assertTrue(version.satisfies(">=27")); Version version = new Version("27.0.0"); Assert.assertFalse(version.satisfies(">=27.1.0")); Version version = new Version("27"); Assert.assertTrue(version.satisfies(">=26.9999999.9999999.99999999.99999999999")); Version version = new Version("20171018"); Assert.assertTrue(version.satisfies(">=20161018")); Assert.assertFalse(version.satisfies("20161018")); Version version = new Version("27.0.0"); Assert.assertFalse(version.satisfies("27.0.0-SNAPSHOT")); Assert.assertTrue(version.satisfies(">=27.0.0-SNAPSHOT")); Version version = new Version("28.0.0"); Assert.assertFalse(version.satisfies("27.0.0-SNAPSHOT")); Assert.assertTrue(version.satisfies(">=27.0.0-SNAPSHOT")); Version version = new Version("28.0.0"); Assert.assertTrue(version.satisfies(">=28.0.0-beta.2"));
/** * Checks if this version is less than or equal to the other version. * * @param other the other version to compare to * @return {@code true} if this version is less than or equal * to the other version or {@code false} otherwise * @see #compareTo(Version other) */ public boolean lessThanOrEqualTo(Version other) { return compareTo(other) <= 0; }
@Override public Expression parse(String input) throws ParseException { boolean isGte = false; String versionText; if (input.startsWith(">=")) { isGte = true; // strip operator versionText = input.substring(2); } else { versionText = input; } final Version parsedVersion = new Version(versionText); if (isGte) { return new GreaterOrEqual(parsedVersion); } else { return new Equal(parsedVersion); } } }