package org.basex.util; import static org.basex.util.Token.*; import static org.junit.Assert.*; import org.junit.*; /** * EXPath package API: Version tests. * * @author BaseX Team 2005-17, BSD License * @author Rositsa Shadura */ public final class VersionTest { /** * Tests method isCompatible. */ @Test public void compatible() { // case 1: template = 3 final Version semVer1 = new Version(token("3")); assertTrue(new Version(token("3.0")).isCompatible(semVer1)); assertTrue(new Version(token("3.1")).isCompatible(semVer1)); assertTrue(new Version(token("3.9")).isCompatible(semVer1)); assertTrue(new Version(token("3.2.4")).isCompatible(semVer1)); assertTrue(new Version(token("3.9.89")).isCompatible(semVer1)); assertFalse(new Version(token("4")).isCompatible(semVer1)); assertFalse(new Version(token("2.7.4")).isCompatible(semVer1)); // case 2: template = 3.5 final Version semVer2 = new Version(token("3.5")); assertTrue(new Version(token("3.5")).isCompatible(semVer2)); assertTrue(new Version(token("3.5.45")).isCompatible(semVer2)); assertFalse(new Version(token("3.6")).isCompatible(semVer2)); assertFalse(new Version(token("2.7.4")).isCompatible(semVer2)); assertFalse(new Version(token("3.4")).isCompatible(semVer2)); // case 3: template = 3.4.7 final Version semVer3 = new Version(token("3.4.7")); assertTrue(new Version(token("3.4.7")).isCompatible(semVer3)); assertFalse(new Version(token("3.4")).isCompatible(semVer3)); assertFalse(new Version(token("3.4.8")).isCompatible(semVer3)); assertFalse(new Version(token("3")).isCompatible(semVer3)); } /** * Tests comparison between version, which is compatible to and greater than a * given version template. */ @Test public void compatGreater() { // case 1: template = 3 final Version semVer1 = new Version(token("3")); final Version v1 = new Version(token("3")); assertTrue(v1.isCompatible(semVer1) || v1.compareTo(semVer1) > 0); final Version v2 = new Version(token("3.4")); assertTrue(v2.isCompatible(semVer1) || v2.compareTo(semVer1) > 0); final Version v3 = new Version(token("3.4.55")); assertTrue(v3.isCompatible(semVer1) || v3.compareTo(semVer1) > 0); final Version v4 = new Version(token("2.6")); assertFalse(v4.isCompatible(semVer1) || v4.compareTo(semVer1) > 0); // case 2: template = 3.5 final Version semVer2 = new Version(token("3.5")); final Version vv1 = new Version(token("3.5")); assertTrue(vv1.isCompatible(semVer2) || vv1.compareTo(semVer2) > 0); final Version vv2 = new Version(token("3.5.6")); assertTrue(vv2.isCompatible(semVer2) || vv2.compareTo(semVer2) > 0); final Version vv3 = new Version(token("9")); assertTrue(vv3.isCompatible(semVer2) || vv3.compareTo(semVer2) > 0); final Version vv4 = new Version(token("3.4")); assertFalse(vv4.isCompatible(semVer2) || vv4.compareTo(semVer2) > 0); final Version vv5 = new Version(token("3.6")); assertTrue(vv5.isCompatible(semVer2) || vv5.compareTo(semVer2) > 0); // case 3: template = 3.4.7 final Version semVer3 = new Version(token("3.4.7")); final Version vvv1 = new Version(token("3.4.7")); assertTrue(vvv1.isCompatible(semVer3) || vvv1.compareTo(semVer3) > 0); final Version vvv2 = new Version(token("3.4.77")); assertTrue(vvv2.isCompatible(semVer3) || vvv2.compareTo(semVer3) > 0); final Version vvv3 = new Version(token("3.6")); assertTrue(vvv3.isCompatible(semVer3) || vvv3.compareTo(semVer3) > 0); final Version vvv4 = new Version(token("101")); assertTrue(vvv4.isCompatible(semVer3) || vvv4.compareTo(semVer3) > 0); final Version vvv5 = new Version(token("3.4")); assertFalse(vvv5.isCompatible(semVer3) || vvv5.compareTo(semVer3) > 0); final Version vvv6 = new Version(token("3.4.0")); assertFalse(vvv6.isCompatible(semVer3) || vvv6.compareTo(semVer3) > 0); final Version vvv7 = new Version(token("3.2")); assertFalse(vvv7.isCompatible(semVer3) || vvv7.compareTo(semVer3) > 0); final Version vvv8 = new Version(token("1.0")); assertFalse(vvv8.isCompatible(semVer3) || vvv8.compareTo(semVer3) > 0); } /** * Tests comparison between version, which is compatible to and smaller than a * given version template. */ @Test public void compatSmaller() { // case 1: template = 3 final Version semVer1 = new Version(token("3")); final Version v1 = new Version(token("3")); assertTrue(v1.isCompatible(semVer1) || v1.compareTo(semVer1) < 0); final Version v2 = new Version(token("2.4")); assertTrue(v2.isCompatible(semVer1) || v2.compareTo(semVer1) < 0); final Version v3 = new Version(token("2")); assertTrue(v3.isCompatible(semVer1) || v3.compareTo(semVer1) < 0); final Version v4 = new Version(token("4.6.55")); assertFalse(v4.isCompatible(semVer1) || v4.compareTo(semVer1) < 0); // case 2: template = 3.5 final Version semVer2 = new Version(token("3.5")); final Version vv1 = new Version(token("3.5")); assertTrue(vv1.isCompatible(semVer2) || vv1.compareTo(semVer2) < 0); final Version vv2 = new Version(token("3.5.0")); assertTrue(vv2.isCompatible(semVer2) || vv2.compareTo(semVer2) < 0); final Version vv3 = new Version(token("2")); assertTrue(vv3.isCompatible(semVer2) || vv3.compareTo(semVer2) < 0); final Version vv4 = new Version(token("3.6")); assertFalse(vv4.isCompatible(semVer2) || vv4.compareTo(semVer2) < 0); final Version vv5 = new Version(token("3.4.66")); assertTrue(vv5.isCompatible(semVer2) || vv5.compareTo(semVer2) < 0); final Version vv6 = new Version(token("6")); assertFalse(vv6.isCompatible(semVer2) || vv6.compareTo(semVer2) < 0); // case 3: template = 3.4.7 final Version semVer3 = new Version(token("3.4.7")); final Version vvv1 = new Version(token("3.4.7")); assertTrue(vvv1.isCompatible(semVer3) || vvv1.compareTo(semVer3) < 0); final Version vvv2 = new Version(token("3.4.6")); assertTrue(vvv2.isCompatible(semVer3) || vvv2.compareTo(semVer3) < 0); final Version vvv3 = new Version(token("3.3")); assertTrue(vvv3.isCompatible(semVer3) || vvv3.compareTo(semVer3) < 0); final Version vvv4 = new Version(token("1")); assertTrue(vvv4.isCompatible(semVer3) || vvv4.compareTo(semVer3) < 0); final Version vvv5 = new Version(token("3.4.8")); assertFalse(vvv5.isCompatible(semVer3) || vvv5.compareTo(semVer3) < 0); final Version vvv6 = new Version(token("3.5.0")); assertFalse(vvv6.isCompatible(semVer3) || vvv6.compareTo(semVer3) < 0); final Version vvv8 = new Version(token("3.4.0")); assertTrue(vvv8.isCompatible(semVer3) || vvv8.compareTo(semVer3) < 0); } /** * Tests if a version is in a given interval. */ @Test public void interval() { final Version semVerMin1 = new Version(token("3")); final Version semVerMax1 = new Version(token("7")); final Version test1 = new Version(token("3.0")); assertTrue(test1.compareTo(semVerMin1) > 0 && test1.compareTo(semVerMax1) < 0); final Version test2 = new Version(token("3.5")); assertTrue(test2.compareTo(semVerMin1) > 0 && test2.compareTo(semVerMax1) < 0); final Version test3 = new Version(token("6.9")); assertTrue(test3.compareTo(semVerMin1) > 0 && test3.compareTo(semVerMax1) < 0); final Version test4 = new Version(token("7.0")); assertFalse(test4.compareTo(semVerMin1) > 0 && test4.compareTo(semVerMax1) < 0); final Version test5 = new Version(token("7.6.0")); assertFalse(test5.compareTo(semVerMin1) > 0 && test5.compareTo(semVerMax1) < 0); final Version test6 = new Version(token("2.0")); assertFalse(test6.compareTo(semVerMin1) > 0 && test6.compareTo(semVerMax1) < 0); } }