[feature] VersionUtil版本比较工具类

This commit is contained in:
winlans
2025-02-27 18:07:07 +08:00
parent 732bea6d0b
commit 4c6c3b057a
2 changed files with 275 additions and 0 deletions

View File

@@ -0,0 +1,79 @@
package cn.hutool.core.util;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.exceptions.UtilException;
import org.junit.jupiter.api.Test;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
class VersionUtilTest {
@Test
void isGreaterThan() {
String currentVersion = " 1.0.2";
assertTrue(VersionUtil.isGreaterThan(currentVersion, "1.0.1"));
assertTrue(VersionUtil.isGreaterThan(currentVersion, "1"));
assertFalse(VersionUtil.isGreaterThan(currentVersion, "1.1"));
}
@Test
void isGreaterThanOrEqual() {
String currentVersion = "1.0.2 ";
assertTrue(VersionUtil.isGreaterThanOrEqual(currentVersion, "1.0.1"));
assertTrue(VersionUtil.isGreaterThanOrEqual(currentVersion, "1.0.2"));
assertFalse(VersionUtil.isGreaterThanOrEqual(currentVersion, "1.1"));
}
@Test
void isLessThan() {
String currentVersion = "1.0.2";
assertTrue(VersionUtil.isLessThan(currentVersion, "1.0.3"));
assertFalse(VersionUtil.isLessThan(currentVersion, "1"));
assertTrue(VersionUtil.isLessThan(currentVersion, "1.1"));
assertFalse(VersionUtil.isLessThan(currentVersion, "1.0.2"));
}
@Test
void isLessThanOrEqual() {
String currentVersion = "1.0.2";
assertTrue(VersionUtil.isLessThanOrEqual(currentVersion, "1.0.2"));
assertFalse(VersionUtil.isLessThanOrEqual(currentVersion, "1.0.1"));
assertFalse(VersionUtil.isLessThanOrEqual(currentVersion, "1.1"));
}
@Test
void matchEl() {
String currentVersion = "1.0.2";
assertTrue(VersionUtil.matchEl(currentVersion, "1.0.1;1.0.2"));
assertFalse(VersionUtil.matchEl(currentVersion, "1.0.1;1.0.3"));
assertTrue(VersionUtil.matchEl(currentVersion, "1.0.9;1.0.1-1.0.2"));
assertTrue(VersionUtil.matchEl(currentVersion, "1.0.9;1.0.1-1.0.3"));
assertTrue(VersionUtil.matchEl(currentVersion, "1.0.9,1.0.1-1.0.3", ","));
}
@Test
void matchEl_Exception_whenVersionDelimiterIllegal() {
List<String> illegalDelimiters = ListUtil.of("-", ">", ">=", "<", "<=", "", "", null, "", " ");
for (String illegalDelimiter : illegalDelimiters) {
assertThrows(UtilException.class, () -> {
String currentVersion = "1.0.2";
VersionUtil.matchEl(currentVersion, "1.0.1;1.0.2", illegalDelimiter);
});
}
}
@Test
void anyMatch() {
String currentVersion = "1.0.2";
assertTrue(VersionUtil.anyMatch(currentVersion, ListUtil.of("1.0.1", "1.0.3", "1.0.2")));
assertTrue(VersionUtil.anyMatch(currentVersion, "1.0.1", "1.0.2"));
}
@Test
void testMatchEl() {
}
}