mirror of
https://gitee.com/dromara/hutool.git
synced 2025-11-24 08:33:22 +08:00
Merge pull request #4130 from sunshineflymeat/hutool-1114
Fix issue 4129
This commit is contained in:
@@ -54,7 +54,7 @@ public class VersionUtil {
|
||||
/**
|
||||
* 当前版本大于待比较版本
|
||||
*
|
||||
* @param currentVersion 当前本本
|
||||
* @param currentVersion 当前版本
|
||||
* @param compareVersion 待比较版本
|
||||
* @return true 当前版本大于待比较版本
|
||||
*/
|
||||
@@ -65,7 +65,7 @@ public class VersionUtil {
|
||||
/**
|
||||
* 当前版本大于等于待比较版本
|
||||
*
|
||||
* @param currentVersion 当前本本
|
||||
* @param currentVersion 当前版本
|
||||
* @param compareVersion 待比较版本
|
||||
* @return true 当前版本大于等于待比较版本
|
||||
*/
|
||||
@@ -76,7 +76,7 @@ public class VersionUtil {
|
||||
/**
|
||||
* 当前版本小于待比较版本
|
||||
*
|
||||
* @param currentVersion 当前本本
|
||||
* @param currentVersion 当前版本
|
||||
* @param compareVersion 待比较版本
|
||||
* @return true 当前版本小于待比较版本
|
||||
*/
|
||||
@@ -87,7 +87,7 @@ public class VersionUtil {
|
||||
/**
|
||||
* 当前版本小于等于待比较版本
|
||||
*
|
||||
* @param currentVersion 当前本本
|
||||
* @param currentVersion 当前版本
|
||||
* @param compareVersion 待比较版本
|
||||
* @return true 当前版本小于等于待比较版本
|
||||
*/
|
||||
@@ -105,9 +105,9 @@ public class VersionUtil {
|
||||
* matchEl("1.0.2", "1.0.0-1.1.1") == true
|
||||
* }</pre>
|
||||
*
|
||||
* @param currentVersion 当前本本
|
||||
* @param currentVersion 当前版本
|
||||
* @param versionEl 版本表达式
|
||||
* @return true 当前版本小于等于待比较版本
|
||||
* @return true 当前版本是否满足版本表达式
|
||||
*/
|
||||
public static boolean matchEl(String currentVersion, String versionEl) {
|
||||
return matchEl(currentVersion, versionEl, defaultVersionsDelimiter);
|
||||
@@ -123,7 +123,7 @@ public class VersionUtil {
|
||||
* matchEl("1.0.2", "1.0.1,1.0.2-1.1.1", ",") == true
|
||||
* }</pre>
|
||||
*
|
||||
* @param currentVersion 当前本本
|
||||
* @param currentVersion 当前版本
|
||||
* @param versionEl 版本表达式(可以匹配多个条件,使用指定的分隔符(默认;)分隔),
|
||||
* {@code '-'}表示范围包含左右版本,如果 {@code '-'}的左边没有,表示小于等于某个版本号, 右边表示大于等于某个版本号。
|
||||
* 支持比较符号{@code '>'},{@code '<'}, {@code '>='},{@code '<='},{@code '≤'},{@code '≥'}
|
||||
@@ -133,7 +133,7 @@ public class VersionUtil {
|
||||
* <li>{@code >=2.0.0, 1.9.8} 表示版本号 大于等于{@code 2.0.0}或 版本{@code 1.9.8}</li>
|
||||
* </ul>
|
||||
* @param versionsDelimiter 多表达式分隔符
|
||||
* @return true 当前版本小于等于待比较版本
|
||||
* @return true 当前版本是否满足版本表达式
|
||||
*/
|
||||
public static boolean matchEl(String currentVersion, String versionEl, String versionsDelimiter) {
|
||||
if (StrUtil.isBlank(versionsDelimiter)
|
||||
@@ -185,9 +185,9 @@ public class VersionUtil {
|
||||
return false;
|
||||
}
|
||||
} else if (StrUtil.contains(el, "-")) {
|
||||
String[] pair = el.split("-");
|
||||
String left = StrUtil.blankToDefault(StrUtil.trim(pair[0]), "");
|
||||
String right = StrUtil.blankToDefault(StrUtil.trim(pair[1]), "");
|
||||
int index = el.indexOf('-');
|
||||
String left = StrUtil.blankToDefault(StrUtil.trim(el.substring(0, index)), "");
|
||||
String right = StrUtil.blankToDefault(StrUtil.trim(el.substring(index + 1)), "");
|
||||
|
||||
boolean leftMatch = StrUtil.isBlank(left) || StrUtil.compareVersion(left, trimmedVersion) <= 0;
|
||||
boolean rightMatch = StrUtil.isBlank(right) || StrUtil.compareVersion(right, trimmedVersion) >= 0;
|
||||
|
||||
@@ -76,4 +76,32 @@ class VersionUtilTest {
|
||||
@Test
|
||||
void testMatchEl() {
|
||||
}
|
||||
|
||||
/**
|
||||
* 测试版本范围表达式边界情况
|
||||
* 1. 左边界为空的情况: "-1.0.3" 应该匹配小于等于1.0.3的版本
|
||||
* 2. 右边界为空的情况: "1.0.0-" 应该匹配大于等于1.0.0的版本
|
||||
* 3. 双边界为空的情况: "-" 应该匹配所有版本
|
||||
* 验证 VersionUtil.matchEl 方法对边界值的正确处理
|
||||
*/
|
||||
@Test
|
||||
void matchEl_rangeBoundaryCases() {
|
||||
String currentVersion = "1.0.2";
|
||||
|
||||
// 测试左边界为空的情况: "-1.0.3" 应该匹配小于等于1.0.3的版本
|
||||
assertTrue(VersionUtil.matchEl(currentVersion, "-1.0.3"));
|
||||
assertTrue(VersionUtil.matchEl(currentVersion, "-1.0.2"));
|
||||
assertFalse(VersionUtil.matchEl(currentVersion, "-1.0.0"));
|
||||
|
||||
// 测试右边界为空的情况: "1.0.0-" 应该匹配大于等于1.0.0的版本
|
||||
assertTrue(VersionUtil.matchEl(currentVersion, "1.0.0-"));
|
||||
assertTrue(VersionUtil.matchEl(currentVersion, "1.0.2-"));
|
||||
assertFalse(VersionUtil.matchEl(currentVersion, "1.0.3-"));
|
||||
|
||||
// 测试双边为空的情况: "-" 应该匹配所有版本
|
||||
assertTrue(VersionUtil.matchEl(currentVersion, "-"));
|
||||
assertTrue(VersionUtil.matchEl("0.0.1", "-"));
|
||||
assertTrue(VersionUtil.matchEl("999.999.999", "-"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user