/** inclusive at endpoints */ public boolean isInRange(String lowerBound, String upperBound) { return isGreaterThanAndNotEqualTo(lowerBound) && isLessThanAndNotEqualTo(upperBound); }
public boolean isGreaterThanAndNotEqualTo(String target) { return compareTo(target) > 0; } public boolean isLessThanOrEqualTo(String target) {
@Test public void testBasicOnes() { Assert.assertTrue(v.isGreaterThanAndNotEqualTo("10.5")); Assert.assertTrue(v.isGreaterThanOrEqualTo("10.5.8")); Assert.assertFalse(v.isGreaterThanAndNotEqualTo("10.5.8")); Assert.assertTrue(v.isLessThanAndNotEqualTo("10.6")); Assert.assertTrue(v.isLessThanOrEqualTo("10.5.8")); Assert.assertFalse(v.isLessThanAndNotEqualTo("10.5.8")); // this one is surprising -- but we don't support sub-patch numbers, the ".1" is a qualifier Assert.assertTrue(v.isGreaterThanAndNotEqualTo("10.5.8.1")); Assert.assertTrue(v_rc2.isLessThanAndNotEqualTo("10.5.8-rc3")) ; Assert.assertTrue(v_rc2.isGreaterThanAndNotEqualTo("10.5.8-rc1")); Assert.assertTrue(v_rc2.isGreaterThanAndNotEqualTo("10.5.8-beta1")==v_rc2.isGreaterThanAndNotEqualTo("10.5.8-beta3")); Assert.assertTrue(v.isInRange("[10.5,10.6)")); Assert.assertFalse(v.isInRange("[10.5,10.5.8)")); Assert.assertTrue(v.isInRange("[10.5,)")); Assert.assertTrue(v.isInRange("[9,)")); Assert.assertFalse(v.isInRange("(10.5.8,)")); Assert.assertFalse(v.isInRange("[10.6,)")); Assert.assertTrue(v.isInRange("[,11)")); Assert.assertTrue(v.isInRange("[,]")); }
@Test public void testComparableVersion() { ComparableVersion v = new ComparableVersion("10.5.8"); ComparableVersion v_rc2 = new ComparableVersion("10.5.8-rc2"); Assert.assertTrue(v.isGreaterThanAndNotEqualTo(v_rc2.version)); Assert.assertTrue(v_rc2.isLessThanAndNotEqualTo(v.version)); }
public String getOsTag() { // e.g. "osx10.6-x86_64"; see http://www.mysql.com/downloads/mysql/#downloads OsDetails os = getLocation().getOsDetails(); if (os == null) return "linux-glibc2.5-x86_64"; if (os.isMac()) { String osp1 = os.getVersion()==null ? "osx10.8" //lowest common denominator : new ComparableVersion(os.getVersion()).isGreaterThanOrEqualTo(OsVersions.MAC_10_9) ? "osx10.9" : "osx10.8"; //lowest common denominator if (!os.is64bit()) { throw new IllegalStateException("Only 64 bit MySQL build is available for OS X"); } return osp1+"-x86_64"; } //assume generic linux String osp1 = "linux-glibc2.5"; String osp2 = os.is64bit() ? "x86_64" : "i686"; return osp1+"-"+osp2; }
@Test(expectedExceptions={IllegalArgumentException.class}) public void testError1() { v.isInRange("10.5"); } @Test(expectedExceptions={IllegalArgumentException.class})
@Test(expectedExceptions={IllegalArgumentException.class}) public void testError2() { v.isInRange("[10.5"); } @Test(expectedExceptions={IllegalArgumentException.class})
public boolean isGreaterThanOrEqualTo(String target) { return compareTo(target) >= 0; } public boolean isGreaterThanAndNotEqualTo(String target) {
@Test(expectedExceptions={IllegalArgumentException.class}) public void testError3() { v.isInRange("[10.5]"); }
public boolean isLessThanOrEqualTo(String target) { return compareTo(target) <= 0; } public boolean isLessThanAndNotEqualTo(String target) {
public boolean isLessThanAndNotEqualTo(String target) { return compareTo(target) < 0; }