mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-07-21 15:09:48 +08:00
修复VersionComparator传入空字符串报错问题
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
|
||||
package org.dromara.hutool.core.lang;
|
||||
|
||||
import org.dromara.hutool.core.collection.ListUtil;
|
||||
import org.dromara.hutool.core.comparator.CompareUtil;
|
||||
import org.dromara.hutool.core.text.CharUtil;
|
||||
|
||||
@@ -61,7 +62,11 @@ public class Version implements Comparable<Version>, Serializable {
|
||||
Assert.notNull(v, "Null version string");
|
||||
final int n = v.length();
|
||||
if (n == 0){
|
||||
throw new IllegalArgumentException("Empty version string");
|
||||
this.version = v;
|
||||
this.sequence = ListUtil.empty();
|
||||
this.pre = ListUtil.empty();
|
||||
this.build = ListUtil.empty();
|
||||
return;
|
||||
}
|
||||
this.version = v;
|
||||
this.sequence = new ArrayList<>(4);
|
||||
|
@@ -15,6 +15,8 @@ package org.dromara.hutool.core.comparator;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
/**
|
||||
* 版本比较单元测试
|
||||
*
|
||||
@@ -23,63 +25,74 @@ import org.junit.jupiter.api.Test;
|
||||
*/
|
||||
public class VersionComparatorTest {
|
||||
|
||||
@Test
|
||||
public void compareEmptyTest() {
|
||||
int compare = VersionComparator.INSTANCE.compare("", "1.12.1");
|
||||
assertTrue(compare < 0);
|
||||
|
||||
compare = VersionComparator.INSTANCE.compare("", null);
|
||||
assertTrue(compare > 0);
|
||||
compare = VersionComparator.INSTANCE.compare(null, "");
|
||||
assertTrue(compare < 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void versionComparatorTest1() {
|
||||
int compare = VersionComparator.INSTANCE.compare("1.2.1", "1.12.1");
|
||||
Assertions.assertTrue(compare < 0);
|
||||
assertTrue(compare < 0);
|
||||
|
||||
// 自反测试
|
||||
compare = VersionComparator.INSTANCE.compare("1.12.1", "1.2.1");
|
||||
Assertions.assertTrue(compare > 0);
|
||||
assertTrue(compare > 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void versionComparatorTest2() {
|
||||
int compare = VersionComparator.INSTANCE.compare("1.12.1", "1.12.1c");
|
||||
Assertions.assertTrue(compare < 0);
|
||||
assertTrue(compare < 0);
|
||||
|
||||
compare = VersionComparator.INSTANCE.compare("1.12.1c", "1.12.1");
|
||||
Assertions.assertTrue(compare > 0);
|
||||
assertTrue(compare > 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void versionComparatorTest3() {
|
||||
int compare = VersionComparator.INSTANCE.compare(null, "1.12.1c");
|
||||
Assertions.assertTrue(compare < 0);
|
||||
assertTrue(compare < 0);
|
||||
|
||||
// 自反测试
|
||||
compare = VersionComparator.INSTANCE.compare("1.12.1c", null);
|
||||
Assertions.assertTrue(compare > 0);
|
||||
assertTrue(compare > 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void versionComparatorTest4() {
|
||||
int compare = VersionComparator.INSTANCE.compare("1.13.0", "1.12.1c");
|
||||
Assertions.assertTrue(compare > 0);
|
||||
assertTrue(compare > 0);
|
||||
|
||||
// 自反测试
|
||||
compare = VersionComparator.INSTANCE.compare("1.12.1c", "1.13.0");
|
||||
Assertions.assertTrue(compare < 0);
|
||||
assertTrue(compare < 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void versionComparatorTest5() {
|
||||
int compare = VersionComparator.INSTANCE.compare("V1.2", "V1.1");
|
||||
Assertions.assertTrue(compare > 0);
|
||||
assertTrue(compare > 0);
|
||||
|
||||
// 自反测试
|
||||
compare = VersionComparator.INSTANCE.compare("V1.1", "V1.2");
|
||||
Assertions.assertTrue(compare < 0);
|
||||
assertTrue(compare < 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void versionComparatorTes6() {
|
||||
int compare = VersionComparator.INSTANCE.compare("V0.0.20170102", "V0.0.20170101");
|
||||
Assertions.assertTrue(compare > 0);
|
||||
assertTrue(compare > 0);
|
||||
|
||||
// 自反测试
|
||||
compare = VersionComparator.INSTANCE.compare("V0.0.20170101", "V0.0.20170102");
|
||||
Assertions.assertTrue(compare < 0);
|
||||
assertTrue(compare < 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -92,11 +105,11 @@ public class VersionComparatorTest {
|
||||
@Test
|
||||
public void versionComparatorTest7() {
|
||||
int compare = VersionComparator.INSTANCE.compare("1.12.2", "1.12.1c");
|
||||
Assertions.assertTrue(compare > 0);
|
||||
assertTrue(compare > 0);
|
||||
|
||||
// 自反测试
|
||||
compare = VersionComparator.INSTANCE.compare("1.12.1c", "1.12.2");
|
||||
Assertions.assertTrue(compare < 0);
|
||||
assertTrue(compare < 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -109,16 +122,16 @@ public class VersionComparatorTest {
|
||||
void I8Z3VETest() {
|
||||
// 传递性测试
|
||||
int compare = VersionComparator.INSTANCE.compare("260", "a-34");
|
||||
Assertions.assertTrue(compare > 0);
|
||||
assertTrue(compare > 0);
|
||||
compare = VersionComparator.INSTANCE.compare("a-34", "a-3");
|
||||
Assertions.assertTrue(compare > 0);
|
||||
assertTrue(compare > 0);
|
||||
compare = VersionComparator.INSTANCE.compare("260", "a-3");
|
||||
Assertions.assertTrue(compare > 0);
|
||||
assertTrue(compare > 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
void startWithNoneNumberTest() {
|
||||
final int compare = VersionComparator.INSTANCE.compare("V1", "A1");
|
||||
Assertions.assertTrue(compare > 0);
|
||||
assertTrue(compare > 0);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user