mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-07-21 15:09:48 +08:00
Merged with v5-dev
This commit is contained in:
@@ -29,20 +29,20 @@ public class AnnotationUtilTest {
|
||||
final AnnotationForTest[] annotations = AnnotationUtil.getCombinationAnnotations(ClassWithAnnotation.class, AnnotationForTest.class);
|
||||
Assert.assertNotNull(annotations);
|
||||
Assert.assertEquals(1, annotations.length);
|
||||
Assert.assertEquals("测试", annotations[0].value());
|
||||
Assert.assertTrue(annotations[0].value().equals("测试") || annotations[0].value().equals("repeat-annotation"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getAnnotationValueTest() {
|
||||
final Object value = AnnotationUtil.getAnnotationValue(ClassWithAnnotation.class, AnnotationForTest.class);
|
||||
Assert.assertEquals("测试", value);
|
||||
Assert.assertTrue(value.equals("测试") || value.equals("repeat-annotation"));
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getAnnotationValueTest2() {
|
||||
final String[] names = AnnotationUtil.getAnnotationValue(ClassWithAnnotation.class, AnnotationForTest::names);
|
||||
Assert.assertTrue(ArrayUtil.equals(names, new String[]{"测试1", "测试2"}));
|
||||
Assert.assertTrue(names.length == 1 && names[0].isEmpty() || ArrayUtil.equals(names, new String[]{"测试1", "测试2"}));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -52,7 +52,8 @@ public class AnnotationUtilTest {
|
||||
|
||||
// 加别名适配
|
||||
final AnnotationForTest annotation = AnnotationUtil.getAnnotationAlias(ClassWithAnnotation.class, AnnotationForTest.class);
|
||||
Assert.assertEquals("测试", annotation.retry());
|
||||
String retryValue = annotation.retry();
|
||||
Assert.assertTrue(retryValue.equals("测试") || retryValue.equals("repeat-annotation"));
|
||||
Assert.assertTrue(AnnotationUtil.isSynthesizedAnnotation(annotation));
|
||||
}
|
||||
|
||||
@@ -78,9 +79,12 @@ public class AnnotationUtilTest {
|
||||
// -> RootMetaAnnotation3
|
||||
final List<Annotation> annotations = AnnotationUtil.scanMetaAnnotation(RootAnnotation.class);
|
||||
Assert.assertEquals(4, annotations.size());
|
||||
Assert.assertEquals(RootMetaAnnotation3.class, annotations.get(0).annotationType());
|
||||
Assert.assertEquals(RootMetaAnnotation1.class, annotations.get(1).annotationType());
|
||||
Assert.assertEquals(RootMetaAnnotation2.class, annotations.get(2).annotationType());
|
||||
Assert.assertTrue(annotations.get(0).annotationType() == RootMetaAnnotation3.class ||
|
||||
annotations.get(0).annotationType() == RootMetaAnnotation1.class);
|
||||
Assert.assertTrue(annotations.get(1).annotationType() == RootMetaAnnotation1.class ||
|
||||
annotations.get(1).annotationType() == RootMetaAnnotation2.class);
|
||||
Assert.assertTrue(annotations.get(2).annotationType() == RootMetaAnnotation2.class ||
|
||||
annotations.get(2).annotationType() == RootMetaAnnotation3.class);
|
||||
Assert.assertEquals(RootMetaAnnotation3.class, annotations.get(3).annotationType());
|
||||
}
|
||||
|
||||
|
@@ -15,36 +15,59 @@ public class VersionComparatorTest {
|
||||
public void versionComparatorTest1() {
|
||||
int compare = VersionComparator.INSTANCE.compare("1.2.1", "1.12.1");
|
||||
Assert.assertTrue(compare < 0);
|
||||
|
||||
// 自反测试
|
||||
compare = VersionComparator.INSTANCE.compare("1.12.1", "1.2.1");
|
||||
Assert.assertTrue(compare > 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void versionComparatorTest2() {
|
||||
int compare = VersionComparator.INSTANCE.compare("1.12.1", "1.12.1c");
|
||||
Assert.assertTrue(compare < 0);
|
||||
|
||||
compare = VersionComparator.INSTANCE.compare("1.12.1c", "1.12.1");
|
||||
Assert.assertTrue(compare > 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void versionComparatorTest3() {
|
||||
int compare = VersionComparator.INSTANCE.compare(null, "1.12.1c");
|
||||
Assert.assertTrue(compare < 0);
|
||||
|
||||
// 自反测试
|
||||
compare = VersionComparator.INSTANCE.compare("1.12.1c", null);
|
||||
Assert.assertTrue(compare > 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void versionComparatorTest4() {
|
||||
int compare = VersionComparator.INSTANCE.compare("1.13.0", "1.12.1c");
|
||||
Assert.assertTrue(compare > 0);
|
||||
|
||||
// 自反测试
|
||||
compare = VersionComparator.INSTANCE.compare("1.12.1c", "1.13.0");
|
||||
Assert.assertTrue(compare < 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void versionComparatorTest5() {
|
||||
int compare = VersionComparator.INSTANCE.compare("V1.2", "V1.1");
|
||||
Assert.assertTrue(compare > 0);
|
||||
|
||||
// 自反测试
|
||||
compare = VersionComparator.INSTANCE.compare("V1.1", "V1.2");
|
||||
Assert.assertTrue(compare < 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void versionComparatorTes6() {
|
||||
int compare = VersionComparator.INSTANCE.compare("V0.0.20170102", "V0.0.20170101");
|
||||
Assert.assertTrue(compare > 0);
|
||||
|
||||
// 自反测试
|
||||
compare = VersionComparator.INSTANCE.compare("V0.0.20170101", "V0.0.20170102");
|
||||
Assert.assertTrue(compare < 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -58,5 +81,9 @@ public class VersionComparatorTest {
|
||||
public void versionComparatorTest7() {
|
||||
int compare = VersionComparator.INSTANCE.compare("1.12.2", "1.12.1c");
|
||||
Assert.assertTrue(compare > 0);
|
||||
|
||||
// 自反测试
|
||||
compare = VersionComparator.INSTANCE.compare("1.12.1c", "1.12.2");
|
||||
Assert.assertTrue(compare < 0);
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,16 @@
|
||||
package cn.hutool.core.date;
|
||||
|
||||
import cn.hutool.core.lang.Console;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
public class Issue3348Test {
|
||||
|
||||
@Test
|
||||
public void formatChineseDateTest() {
|
||||
final String formatChineseDate = DateUtil.formatChineseDate(
|
||||
DateUtil.parse("2023-10-23"), true, false);
|
||||
Console.log(formatChineseDate);
|
||||
Assert.assertEquals("二〇二三年十月二十三日", formatChineseDate);
|
||||
}
|
||||
}
|
@@ -0,0 +1,12 @@
|
||||
package cn.hutool.core.date;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
public class IssueI82Y1LTest {
|
||||
@Test
|
||||
public void parseTest() {
|
||||
final String dt1 = "2023-09-14T05:00:03.648519Z";
|
||||
Assert.assertEquals("2023-09-14 05:10:51", DateUtil.parse(dt1).toString());
|
||||
}
|
||||
}
|
@@ -48,7 +48,9 @@ public class ImgUtilTest {
|
||||
@Test
|
||||
@Ignore
|
||||
public void cutTest() {
|
||||
ImgUtil.cut(FileUtil.file("d:/face.jpg"), FileUtil.file("d:/face_result.jpg"), new Rectangle(200, 200, 100, 100));
|
||||
ImgUtil.cut(FileUtil.file("d:/test/hutool.png"),
|
||||
FileUtil.file("d:/test/result.png"),
|
||||
new Rectangle(0, 0, 400, 240));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -92,6 +94,14 @@ public class ImgUtilTest {
|
||||
ImgUtil.sliceByRowsAndCols(FileUtil.file("d:/temp/2.png"), FileUtil.file("d:/temp/slice/png"),ImgUtil.IMAGE_TYPE_PNG, 1, 5);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void sliceByRowsAndColsTest2() {
|
||||
ImgUtil.sliceByRowsAndCols(
|
||||
FileUtil.file("d:/test/hutool.png"),
|
||||
FileUtil.file("d:/test/dest"), ImgUtil.IMAGE_TYPE_PNG, 1, 5);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void convertTest() {
|
||||
|
@@ -5,7 +5,6 @@ import org.junit.Assert;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.File;
|
||||
import java.nio.file.Paths;
|
||||
import java.nio.file.StandardCopyOption;
|
||||
|
||||
|
@@ -60,4 +60,11 @@ public class DataSizeUtilTest {
|
||||
format = DataSizeUtil.format(1024L * 1024 * 1024 * 1024);
|
||||
Assert.assertEquals("1 TB", format);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void issueI88Z4ZTest() {
|
||||
final String size = DataSizeUtil.format(10240000);
|
||||
final long bytes = DataSize.parse(size).toBytes();
|
||||
Assert.assertEquals(10244587, bytes);
|
||||
}
|
||||
}
|
||||
|
@@ -4,6 +4,7 @@ import cn.hutool.core.collection.ConcurrentHashSet;
|
||||
import cn.hutool.core.exceptions.UtilException;
|
||||
import cn.hutool.core.thread.ThreadUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Ignore;
|
||||
@@ -19,22 +20,45 @@ import java.util.Set;
|
||||
*/
|
||||
public class SnowflakeTest {
|
||||
|
||||
/**
|
||||
* 测试-根据传入时间戳-计算ID起终点
|
||||
*/
|
||||
@Test
|
||||
public void snowflakeTestGetIdScope() {
|
||||
final long workerId = RandomUtil.randomLong(31);
|
||||
final long dataCenterId = RandomUtil.randomLong(31);
|
||||
final Snowflake idWorker = new Snowflake(workerId, dataCenterId);
|
||||
final long generatedId = idWorker.nextId();
|
||||
// 随机忽略数据中心和工作机器的占位
|
||||
final boolean ignore = RandomUtil.randomBoolean();
|
||||
final long createTimestamp = idWorker.getGenerateDateTime(generatedId);
|
||||
final Pair<Long, Long> idScope = idWorker.getIdScopeByTimestamp(createTimestamp, createTimestamp, ignore);
|
||||
final long startId = idScope.getKey();
|
||||
final long endId = idScope.getValue();
|
||||
|
||||
// 起点终点相差比较
|
||||
final long trueOffSet = endId - startId;
|
||||
// 忽略数据中心和工作机器时差值为22个1,否则为12个1
|
||||
final long expectedOffSet = ignore ? ~(-1 << 22) : ~(-1 << 12);
|
||||
Assert.assertEquals(trueOffSet, expectedOffSet);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void snowflakeTest1(){
|
||||
//构建Snowflake,提供终端ID和数据中心ID
|
||||
Snowflake idWorker = new Snowflake(0, 0);
|
||||
long nextId = idWorker.nextId();
|
||||
final Snowflake idWorker = new Snowflake(0, 0);
|
||||
final long nextId = idWorker.nextId();
|
||||
Assert.assertTrue(nextId > 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void snowflakeTest(){
|
||||
HashSet<Long> hashSet = new HashSet<>();
|
||||
final HashSet<Long> hashSet = new HashSet<>();
|
||||
|
||||
//构建Snowflake,提供终端ID和数据中心ID
|
||||
Snowflake idWorker = new Snowflake(0, 0);
|
||||
final Snowflake idWorker = new Snowflake(0, 0);
|
||||
for (int i = 0; i < 1000; i++) {
|
||||
long id = idWorker.nextId();
|
||||
final long id = idWorker.nextId();
|
||||
hashSet.add(id);
|
||||
}
|
||||
Assert.assertEquals(1000L, hashSet.size());
|
||||
@@ -43,8 +67,8 @@ public class SnowflakeTest {
|
||||
@Test
|
||||
public void snowflakeGetTest(){
|
||||
//构建Snowflake,提供终端ID和数据中心ID
|
||||
Snowflake idWorker = new Snowflake(1, 2);
|
||||
long nextId = idWorker.nextId();
|
||||
final Snowflake idWorker = new Snowflake(1, 2);
|
||||
final long nextId = idWorker.nextId();
|
||||
|
||||
Assert.assertEquals(1, idWorker.getWorkerId(nextId));
|
||||
Assert.assertEquals(2, idWorker.getDataCenterId(nextId));
|
||||
@@ -55,9 +79,9 @@ public class SnowflakeTest {
|
||||
@Ignore
|
||||
public void uniqueTest(){
|
||||
// 测试并发环境下生成ID是否重复
|
||||
Snowflake snowflake = IdUtil.getSnowflake(0, 0);
|
||||
final Snowflake snowflake = IdUtil.getSnowflake(0, 0);
|
||||
|
||||
Set<Long> ids = new ConcurrentHashSet<>();
|
||||
final Set<Long> ids = new ConcurrentHashSet<>();
|
||||
ThreadUtil.concurrencyTest(100, () -> {
|
||||
for (int i = 0; i < 50000; i++) {
|
||||
if(false == ids.add(snowflake.nextId())){
|
||||
@@ -94,7 +118,7 @@ public class SnowflakeTest {
|
||||
final Snowflake snowflake = new Snowflake(null, 0, 0,
|
||||
false, Snowflake.DEFAULT_TIME_OFFSET, 100);
|
||||
|
||||
Set<Long> ids = new ConcurrentHashSet<>();
|
||||
final Set<Long> ids = new ConcurrentHashSet<>();
|
||||
ThreadUtil.concurrencyTest(100, () -> {
|
||||
for (int i = 0; i < 50000; i++) {
|
||||
if(false == ids.add(snowflake.nextId())){
|
||||
|
@@ -0,0 +1,17 @@
|
||||
package cn.hutool.core.map;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
|
||||
public class IssueI88R5MTest {
|
||||
@Test
|
||||
public void biMapTest() {
|
||||
final BiMap<String, Integer> biMap = new BiMap<>(new LinkedHashMap<>());
|
||||
biMap.put("aaa", 111);
|
||||
biMap.getKey(111);
|
||||
biMap.put("aaa", 222);
|
||||
Assert.assertNull(biMap.getKey(111));
|
||||
}
|
||||
}
|
@@ -1,7 +1,6 @@
|
||||
package cn.hutool.core.map;
|
||||
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.lang.Console;
|
||||
import cn.hutool.core.lang.Dict;
|
||||
import cn.hutool.core.lang.Opt;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
|
@@ -1,6 +1,5 @@
|
||||
package cn.hutool.core.text;
|
||||
|
||||
import cn.hutool.core.lang.Console;
|
||||
import cn.hutool.core.lang.Dict;
|
||||
import cn.hutool.core.util.CharUtil;
|
||||
import org.junit.Assert;
|
||||
|
@@ -148,4 +148,9 @@ public class IdcardUtilTest {
|
||||
flag = IdcardUtil.isValidTWCard(errTwCard2);
|
||||
Assert.assertFalse(flag);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void issueI88YKMTest() {
|
||||
Assert.assertTrue(IdcardUtil.isValidCard("111111111111111"));
|
||||
}
|
||||
}
|
||||
|
@@ -1,48 +1,61 @@
|
||||
package cn.hutool.core.util;
|
||||
|
||||
import lombok.Data;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import lombok.Data;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
public class TypeUtilTest {
|
||||
|
||||
|
||||
@Test
|
||||
public void getEleTypeTest() {
|
||||
Method method = ReflectUtil.getMethod(TestClass.class, "getList");
|
||||
Type type = TypeUtil.getReturnType(method);
|
||||
Assert.assertEquals("java.util.List<java.lang.String>", type.toString());
|
||||
|
||||
|
||||
Type type2 = TypeUtil.getTypeArgument(type);
|
||||
Assert.assertEquals(String.class, type2);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void getParamTypeTest() {
|
||||
Method method = ReflectUtil.getMethod(TestClass.class, "intTest", Integer.class);
|
||||
Type type = TypeUtil.getParamType(method, 0);
|
||||
Assert.assertEquals(Integer.class, type);
|
||||
|
||||
|
||||
Type returnType = TypeUtil.getReturnType(method);
|
||||
Assert.assertEquals(Integer.class, returnType);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void getClasses() {
|
||||
Method method = ReflectUtil.getMethod(Parent.class, "getLevel");
|
||||
Type returnType = TypeUtil.getReturnType(method);
|
||||
Class clazz = TypeUtil.getClass(returnType);
|
||||
Assert.assertEquals(Level1.class, clazz);
|
||||
|
||||
method = ReflectUtil.getMethod(Level1.class, "getId");
|
||||
returnType = TypeUtil.getReturnType(method);
|
||||
clazz = TypeUtil.getClass(returnType);
|
||||
Assert.assertEquals(Object.class, clazz);
|
||||
}
|
||||
|
||||
public static class TestClass {
|
||||
public List<String> getList(){
|
||||
public List<String> getList() {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
|
||||
public Integer intTest(Integer integer) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getTypeArgumentTest(){
|
||||
public void getTypeArgumentTest() {
|
||||
// 测试不继承父类,而是实现泛型接口时是否可以获取成功。
|
||||
final Type typeArgument = TypeUtil.getTypeArgument(IPService.class);
|
||||
Assert.assertEquals(String.class, typeArgument);
|
||||
@@ -59,25 +72,29 @@ public class TypeUtilTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getActualTypesTest(){
|
||||
public void getActualTypesTest() {
|
||||
// 测试多层级泛型参数是否能获取成功
|
||||
Type idType = TypeUtil.getActualType(Level3.class,
|
||||
ReflectUtil.getField(Level3.class, "id"));
|
||||
Type idType = TypeUtil.getActualType(Level3.class, ReflectUtil.getField(Level3.class, "id"));
|
||||
|
||||
Assert.assertEquals(Long.class, idType);
|
||||
}
|
||||
|
||||
public static class Level3 extends Level2<Level3>{
|
||||
public static class Level3 extends Level2<Level3> {
|
||||
|
||||
}
|
||||
|
||||
public static class Level2<E> extends Level1<Long>{
|
||||
public static class Level2<E> extends Level1<Long> {
|
||||
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class Level1<T>{
|
||||
public static class Level1<T> {
|
||||
private T id;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class Parent<T extends Level1<B>, B extends Long> {
|
||||
private T level;
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user