mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-07-21 15:09:48 +08:00
Merge remote-tracking branch 'origin/v6-dev' into v6-dev
This commit is contained in:
@@ -427,6 +427,26 @@ public class CollUtilTest {
|
||||
Assert.assertEquals("李四", groupByField.get(1).get(0).getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void groupByFuncTest() {
|
||||
final List<TestBean> list = ListUtil.of(new TestBean("张三", 12), new TestBean("李四", 13), new TestBean("王五", 12));
|
||||
final List<List<TestBean>> groupByField = CollUtil.groupByFunc(list, TestBean::getAge);
|
||||
Assert.assertEquals("张三", groupByField.get(0).get(0).getName());
|
||||
Assert.assertEquals("王五", groupByField.get(0).get(1).getName());
|
||||
|
||||
Assert.assertEquals("李四", groupByField.get(1).get(0).getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void groupByFunc2Test() {
|
||||
final List<TestBean> list = ListUtil.of(new TestBean("张三", 12), new TestBean("李四", 13), new TestBean("王五", 12));
|
||||
final List<List<TestBean>> groupByField = CollUtil.groupByFunc(list, a -> a.getAge() > 12);
|
||||
Assert.assertEquals("张三", groupByField.get(0).get(0).getName());
|
||||
Assert.assertEquals("王五", groupByField.get(0).get(1).getName());
|
||||
|
||||
Assert.assertEquals("李四", groupByField.get(1).get(0).getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void sortByPropertyTest() {
|
||||
final List<TestBean> list = ListUtil.of(
|
||||
@@ -844,7 +864,7 @@ public class CollUtilTest {
|
||||
objects.add(Dict.of().set("name", "姓名:" + i));
|
||||
}
|
||||
|
||||
Assert.assertEquals(0, CollUtil.page(3, 5, objects).size());
|
||||
Assert.assertEquals(0, ListUtil.page(objects, 3, 5).size());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -854,7 +874,7 @@ public class CollUtilTest {
|
||||
|
||||
final List<Long> result = CollUtil.subtractToList(list1, list2);
|
||||
Assert.assertEquals(1, result.size());
|
||||
Assert.assertEquals(1L, (long)result.get(0));
|
||||
Assert.assertEquals(1L, (long) result.get(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@@ -2,7 +2,7 @@ package cn.hutool.core.collection;
|
||||
|
||||
import cn.hutool.core.date.StopWatch;
|
||||
import cn.hutool.core.lang.Console;
|
||||
import cn.hutool.core.util.PageUtil;
|
||||
import cn.hutool.core.math.PageInfo;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
@@ -10,11 +10,7 @@ import org.junit.Assert;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
public class ListUtilTest {
|
||||
@@ -105,51 +101,32 @@ public class ListUtilTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void pageTest() {
|
||||
public void pageTest1() {
|
||||
final List<Integer> a = ListUtil.ofLinked(1, 2, 3, 4, 5);
|
||||
|
||||
PageUtil.setFirstPageNo(1);
|
||||
final int[] a_1 = ListUtil.page(1, 2, a).stream().mapToInt(Integer::valueOf).toArray();
|
||||
final int[] a1 = ListUtil.page(1, 2, a).stream().mapToInt(Integer::valueOf).toArray();
|
||||
final int[] a2 = ListUtil.page(2, 2, a).stream().mapToInt(Integer::valueOf).toArray();
|
||||
final int[] a3 = ListUtil.page(3, 2, a).stream().mapToInt(Integer::valueOf).toArray();
|
||||
final int[] a4 = ListUtil.page(4, 2, a).stream().mapToInt(Integer::valueOf).toArray();
|
||||
final int[] a_1 = ListUtil.page(a, 0, 2).stream().mapToInt(Integer::valueOf).toArray();
|
||||
final int[] a1 = ListUtil.page(a, 0, 2).stream().mapToInt(Integer::valueOf).toArray();
|
||||
final int[] a2 = ListUtil.page(a, 1, 2).stream().mapToInt(Integer::valueOf).toArray();
|
||||
final int[] a3 = ListUtil.page(a, 2, 2).stream().mapToInt(Integer::valueOf).toArray();
|
||||
final int[] a4 = ListUtil.page(a, 3, 2).stream().mapToInt(Integer::valueOf).toArray();
|
||||
Assert.assertArrayEquals(new int[]{1, 2}, a_1);
|
||||
Assert.assertArrayEquals(new int[]{1, 2}, a1);
|
||||
Assert.assertArrayEquals(new int[]{3, 4}, a2);
|
||||
Assert.assertArrayEquals(new int[]{5}, a3);
|
||||
Assert.assertArrayEquals(new int[]{}, a4);
|
||||
}
|
||||
|
||||
|
||||
PageUtil.setFirstPageNo(2);
|
||||
final int[] b_1 = ListUtil.page(1, 2, a).stream().mapToInt(Integer::valueOf).toArray();
|
||||
final int[] b1 = ListUtil.page(2, 2, a).stream().mapToInt(Integer::valueOf).toArray();
|
||||
final int[] b2 = ListUtil.page(3, 2, a).stream().mapToInt(Integer::valueOf).toArray();
|
||||
final int[] b3 = ListUtil.page(4, 2, a).stream().mapToInt(Integer::valueOf).toArray();
|
||||
final int[] b4 = ListUtil.page(5, 2, a).stream().mapToInt(Integer::valueOf).toArray();
|
||||
Assert.assertArrayEquals(new int[]{1, 2}, b_1);
|
||||
Assert.assertArrayEquals(new int[]{1, 2}, b1);
|
||||
Assert.assertArrayEquals(new int[]{3, 4}, b2);
|
||||
Assert.assertArrayEquals(new int[]{5}, b3);
|
||||
Assert.assertArrayEquals(new int[]{}, b4);
|
||||
|
||||
PageUtil.setFirstPageNo(0);
|
||||
final int[] c_1 = ListUtil.page(-1, 2, a).stream().mapToInt(Integer::valueOf).toArray();
|
||||
final int[] c1 = ListUtil.page(0, 2, a).stream().mapToInt(Integer::valueOf).toArray();
|
||||
final int[] c2 = ListUtil.page(1, 2, a).stream().mapToInt(Integer::valueOf).toArray();
|
||||
final int[] c3 = ListUtil.page(2, 2, a).stream().mapToInt(Integer::valueOf).toArray();
|
||||
final int[] c4 = ListUtil.page(3, 2, a).stream().mapToInt(Integer::valueOf).toArray();
|
||||
Assert.assertArrayEquals(new int[]{1, 2}, c_1);
|
||||
Assert.assertArrayEquals(new int[]{1, 2}, c1);
|
||||
Assert.assertArrayEquals(new int[]{3, 4}, c2);
|
||||
Assert.assertArrayEquals(new int[]{5}, c3);
|
||||
Assert.assertArrayEquals(new int[]{}, c4);
|
||||
|
||||
|
||||
PageUtil.setFirstPageNo(1);
|
||||
final int[] d1 = ListUtil.page(0, 8, a).stream().mapToInt(Integer::valueOf).toArray();
|
||||
@Test
|
||||
public void pageTest2() {
|
||||
final List<Integer> a = ListUtil.ofLinked(1, 2, 3, 4, 5);
|
||||
final int[] d1 = ListUtil.page(a, PageInfo.of(a.size(), 8).setFirstPageNo(0).setPageNo(0))
|
||||
.stream().mapToInt(Integer::valueOf).toArray();
|
||||
Assert.assertArrayEquals(new int[]{1, 2, 3, 4, 5}, d1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void pageTest3() {
|
||||
final List<Integer> a = ListUtil.ofLinked(1, 2, 3, 4, 5);
|
||||
// page with consumer
|
||||
final List<List<Integer>> pageListData = new ArrayList<>();
|
||||
ListUtil.page(a, 2, pageListData::add);
|
||||
@@ -168,9 +145,6 @@ public class ListUtilTest {
|
||||
Assert.assertArrayEquals(new int[]{}, pageListData.get(0).stream().mapToInt(Integer::valueOf).toArray());
|
||||
Assert.assertArrayEquals(new int[]{3, 4}, pageListData.get(1).stream().mapToInt(Integer::valueOf).toArray());
|
||||
Assert.assertArrayEquals(new int[]{5}, pageListData.get(2).stream().mapToInt(Integer::valueOf).toArray());
|
||||
|
||||
// 恢复默认值,避免影响其他测试用例
|
||||
PageUtil.setFirstPageNo(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@@ -109,10 +109,10 @@ public class DateTimeTest {
|
||||
public void toStringTest2() {
|
||||
final DateTime dateTime = new DateTime("2017-01-05 12:34:23", DatePattern.NORM_DATETIME_FORMAT);
|
||||
|
||||
String dateStr = dateTime.toString(DatePattern.UTC_WITH_ZONE_OFFSET_PATTERN);
|
||||
String dateStr = dateTime.toString(DatePattern.ISO8601_WITH_ZONE_OFFSET_PATTERN);
|
||||
Assert.assertEquals("2017-01-05T12:34:23+0800", dateStr);
|
||||
|
||||
dateStr = dateTime.toString(DatePattern.UTC_WITH_XXX_OFFSET_PATTERN);
|
||||
dateStr = dateTime.toString(DatePattern.ISO8601_WITH_XXX_OFFSET_PATTERN);
|
||||
Assert.assertEquals("2017-01-05T12:34:23+08:00", dateStr);
|
||||
}
|
||||
|
||||
|
@@ -1,6 +1,5 @@
|
||||
package cn.hutool.core.date;
|
||||
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import cn.hutool.core.date.BetweenFormatter.Level;
|
||||
import cn.hutool.core.date.format.FastDateFormat;
|
||||
import cn.hutool.core.lang.Console;
|
||||
@@ -14,15 +13,7 @@ import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.GregorianCalendar;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
import java.util.TimeZone;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 时间工具单元测试<br>
|
||||
@@ -796,23 +787,6 @@ public class DateUtilTest {
|
||||
Assert.assertEquals(0, DateUtil.compare(date11, date22, DatePattern.NORM_MONTH_PATTERN));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void yearAndQTest() {
|
||||
final String yearAndQuarter = DateUtil.yearAndQuarter(DateUtil.parse("2018-12-01"));
|
||||
Assert.assertEquals("20184", yearAndQuarter);
|
||||
|
||||
final LinkedHashSet<String> yearAndQuarters = DateUtil.yearAndQuarter(DateUtil.parse("2018-09-10"), DateUtil.parse("2018-12-20"));
|
||||
final List<String> list = ListUtil.of(false, yearAndQuarters);
|
||||
Assert.assertEquals(2, list.size());
|
||||
Assert.assertEquals("20183", list.get(0));
|
||||
Assert.assertEquals("20184", list.get(1));
|
||||
|
||||
final LinkedHashSet<String> yearAndQuarters2 = DateUtil.yearAndQuarter(DateUtil.parse("2018-10-10"), DateUtil.parse("2018-12-10"));
|
||||
final List<String> list2 = ListUtil.of(false, yearAndQuarters2);
|
||||
Assert.assertEquals(1, list2.size());
|
||||
Assert.assertEquals("20184", list2.get(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void formatHttpDateTest() {
|
||||
final String formatHttpDate = DateUtil.formatHttpDate(DateUtil.parse("2019-01-02 22:32:01"));
|
||||
|
22
hutool-core/src/test/java/cn/hutool/core/date/Issue2981Test.java
Executable file
22
hutool-core/src/test/java/cn/hutool/core/date/Issue2981Test.java
Executable file
@@ -0,0 +1,22 @@
|
||||
package cn.hutool.core.date;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
public class Issue2981Test {
|
||||
/**
|
||||
* https://github.com/dromara/hutool/issues/2981<br>
|
||||
* 按照ISO8601规范,以Z结尾表示UTC时间,否则为当地时间
|
||||
*/
|
||||
@SuppressWarnings("DataFlowIssue")
|
||||
@Test
|
||||
public void parseUTCTest() {
|
||||
final String str1 = "2019-01-01T00:00:00.000Z";
|
||||
final String str2 = "2019-01-01T00:00:00.000";
|
||||
final String str3 = "2019-01-01 00:00:00.000";
|
||||
|
||||
Assert.assertEquals(1546300800000L, DateUtil.parse(str1).getTime());
|
||||
Assert.assertEquals(1546272000000L, DateUtil.parse(str2).getTime());
|
||||
Assert.assertEquals(1546272000000L, DateUtil.parse(str3).getTime());
|
||||
}
|
||||
}
|
@@ -27,12 +27,22 @@ public class TimeUtilTest {
|
||||
final String dateStr = "2020-01-23T12:23:56";
|
||||
final DateTime dt = DateUtil.parse(dateStr);
|
||||
|
||||
LocalDateTime of = TimeUtil.of(dt);
|
||||
final LocalDateTime of = TimeUtil.of(dt);
|
||||
Assert.assertNotNull(of);
|
||||
Assert.assertEquals(dateStr, of.toString());
|
||||
}
|
||||
|
||||
of = TimeUtil.ofUTC(dt.getTime());
|
||||
Assert.assertEquals(dateStr, of.toString());
|
||||
@SuppressWarnings("DataFlowIssue")
|
||||
@Test
|
||||
public void ofUTCTest() {
|
||||
final String dateStr = "2020-01-23T12:23:56Z";
|
||||
final DateTime dt = DateUtil.parse(dateStr);
|
||||
|
||||
final LocalDateTime of = TimeUtil.of(dt);
|
||||
final LocalDateTime of2 = TimeUtil.ofUTC(dt.getTime());
|
||||
Assert.assertNotNull(of);
|
||||
Assert.assertNotNull(of2);
|
||||
Assert.assertEquals(of, of2);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@@ -0,0 +1,32 @@
|
||||
package cn.hutool.core.math;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
public class PageInfoTest {
|
||||
@Test
|
||||
public void pagesTest() {
|
||||
PageInfo pageInfo = new PageInfo(20, 3);
|
||||
Assert.assertEquals(7, pageInfo.getPages());
|
||||
|
||||
pageInfo = new PageInfo(20, 4);
|
||||
Assert.assertEquals(5, pageInfo.getPages());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getSegmentTest() {
|
||||
final PageInfo page = PageInfo.of(20, 10);
|
||||
Assert.assertEquals("[0, 9]", page.getSegment().toString());
|
||||
Assert.assertEquals("[10, 19]", page.nextPage().getSegment().toString());
|
||||
Assert.assertEquals("[20, 20]", page.nextPage().getSegment().toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getSegmentTest2() {
|
||||
final PageInfo page = PageInfo.of(20, 10);
|
||||
page.setFirstPageNo(0).setPageNo(0);
|
||||
Assert.assertEquals("[0, 9]", page.getSegment().toString());
|
||||
Assert.assertEquals("[10, 19]", page.nextPage().getSegment().toString());
|
||||
Assert.assertEquals("[20, 20]", page.nextPage().getSegment().toString());
|
||||
}
|
||||
}
|
@@ -91,15 +91,15 @@ public class DfaTest {
|
||||
Assert.assertEquals(3, result.size());
|
||||
|
||||
Assert.assertEquals("赵", result.get(0).getWord());
|
||||
Assert.assertEquals(0, result.get(0).getStartIndex().intValue());
|
||||
Assert.assertEquals(0, result.get(0).getBeginIndex().intValue());
|
||||
Assert.assertEquals(0, result.get(0).getEndIndex().intValue());
|
||||
|
||||
Assert.assertEquals("赵阿", result.get(1).getWord());
|
||||
Assert.assertEquals(0, result.get(1).getStartIndex().intValue());
|
||||
Assert.assertEquals(0, result.get(1).getBeginIndex().intValue());
|
||||
Assert.assertEquals(1, result.get(1).getEndIndex().intValue());
|
||||
|
||||
Assert.assertEquals("赵阿三", result.get(2).getWord());
|
||||
Assert.assertEquals(0, result.get(2).getStartIndex().intValue());
|
||||
Assert.assertEquals(0, result.get(2).getBeginIndex().intValue());
|
||||
Assert.assertEquals(2, result.get(2).getEndIndex().intValue());
|
||||
}
|
||||
|
||||
|
228
hutool-core/src/test/java/cn/hutool/core/text/dfa/NFATest.java
Normal file
228
hutool-core/src/test/java/cn/hutool/core/text/dfa/NFATest.java
Normal file
@@ -0,0 +1,228 @@
|
||||
package cn.hutool.core.text.dfa;
|
||||
|
||||
import cn.hutool.core.date.StopWatch;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class NFATest {
|
||||
|
||||
/**
|
||||
* 密集匹配 测试查找结果,并与WordTree对比效率
|
||||
*/
|
||||
@Test
|
||||
public void testFind() {
|
||||
final NFA NFA = new NFA();
|
||||
NFA.insert("say", "her", "he", "she", "shr");
|
||||
NFA.buildAc();
|
||||
|
||||
final WordTree wordTree = new WordTree();
|
||||
wordTree.addWords("say", "her", "he", "she", "shr");
|
||||
|
||||
final StopWatch stopWatch = new StopWatch();
|
||||
final String input = "sasherhsay";
|
||||
|
||||
stopWatch.start("automaton_char_find");
|
||||
final List<FoundWord> ans1 = NFA.find(input);
|
||||
stopWatch.stop();
|
||||
|
||||
Assert.assertEquals("she,he,her,say", ans1.stream().map(FoundWord::getWord).collect(Collectors.joining(",")));
|
||||
Assert.assertEquals(2, ans1.get(0).getBeginIndex().intValue());
|
||||
Assert.assertEquals(4, ans1.get(0).getEndIndex().intValue());
|
||||
Assert.assertEquals(3, ans1.get(1).getBeginIndex().intValue());
|
||||
Assert.assertEquals(4, ans1.get(1).getEndIndex().intValue());
|
||||
Assert.assertEquals(3, ans1.get(2).getBeginIndex().intValue());
|
||||
Assert.assertEquals(5, ans1.get(2).getEndIndex().intValue());
|
||||
Assert.assertEquals(7, ans1.get(3).getBeginIndex().intValue());
|
||||
Assert.assertEquals(9, ans1.get(3).getEndIndex().intValue());
|
||||
|
||||
stopWatch.start("wordtree_char_find");
|
||||
final List<String> ans2 = wordTree.matchAll(input, -1, true, true);
|
||||
stopWatch.stop();
|
||||
Assert.assertEquals("she,he,her,say", String.join(",", ans2));
|
||||
|
||||
//Console.log(stopWatch.prettyPrint());
|
||||
}
|
||||
|
||||
/**
|
||||
* 非密集匹配 测试查找结果,并与WordTree对比效率
|
||||
*/
|
||||
@Test
|
||||
public void testFindNotDensity() {
|
||||
final NFA NFA = new NFA();
|
||||
NFA.insert("say", "her", "he", "she", "shr");
|
||||
NFA.buildAc();
|
||||
|
||||
final WordTree wordTree = new WordTree();
|
||||
wordTree.addWords("say", "her", "he", "she", "shr");
|
||||
|
||||
final StopWatch stopWatch = new StopWatch();
|
||||
final String input = "sasherhsay";
|
||||
|
||||
stopWatch.start("automaton_char_find_not_density");
|
||||
final List<FoundWord> ans1 = NFA.find(input, false);
|
||||
stopWatch.stop();
|
||||
Assert.assertEquals("she,say", ans1.stream().map(FoundWord::getWord).collect(Collectors.joining(",")));
|
||||
Assert.assertEquals(2, ans1.get(0).getBeginIndex().intValue());
|
||||
Assert.assertEquals(4, ans1.get(0).getEndIndex().intValue());
|
||||
Assert.assertEquals(7, ans1.get(1).getBeginIndex().intValue());
|
||||
Assert.assertEquals(9, ans1.get(1).getEndIndex().intValue());
|
||||
|
||||
stopWatch.start("wordtree_char_find_not_density");
|
||||
final List<String> ans2 = wordTree.matchAll(input, -1, false, true);
|
||||
stopWatch.stop();
|
||||
Assert.assertEquals("she,say", String.join(",", ans2));
|
||||
|
||||
//Console.log(stopWatch.prettyPrint());
|
||||
}
|
||||
|
||||
/**
|
||||
* 密集匹配 测试建树和查找,并与WordTree对比效率
|
||||
*/
|
||||
@Test
|
||||
public void testBuildAndFind() {
|
||||
final StopWatch stopWatch = new StopWatch();
|
||||
final String input = "sasherhsay";
|
||||
|
||||
stopWatch.start("automaton_char_buid_find");
|
||||
final NFA NFALocal = new NFA();
|
||||
NFALocal.insert("say", "her", "he", "she", "shr");
|
||||
NFALocal.buildAc();
|
||||
final List<FoundWord> ans1 = NFALocal.find(input);
|
||||
stopWatch.stop();
|
||||
|
||||
Assert.assertEquals("she,he,her,say", ans1.stream().map(FoundWord::getWord).collect(Collectors.joining(",")));
|
||||
Assert.assertEquals(2, ans1.get(0).getBeginIndex().intValue());
|
||||
Assert.assertEquals(4, ans1.get(0).getEndIndex().intValue());
|
||||
Assert.assertEquals(3, ans1.get(1).getBeginIndex().intValue());
|
||||
Assert.assertEquals(4, ans1.get(1).getEndIndex().intValue());
|
||||
Assert.assertEquals(3, ans1.get(2).getBeginIndex().intValue());
|
||||
Assert.assertEquals(5, ans1.get(2).getEndIndex().intValue());
|
||||
Assert.assertEquals(7, ans1.get(3).getBeginIndex().intValue());
|
||||
Assert.assertEquals(9, ans1.get(3).getEndIndex().intValue());
|
||||
|
||||
stopWatch.start("wordtree_char_build_find");
|
||||
final WordTree wordTreeLocal = new WordTree();
|
||||
wordTreeLocal.addWords("say", "her", "he", "she", "shr");
|
||||
final List<String> ans2 = wordTreeLocal.matchAll(input, -1, true, true);
|
||||
stopWatch.stop();
|
||||
Assert.assertEquals("she,he,her,say", String.join(",", ans2));
|
||||
|
||||
//Console.log(stopWatch.prettyPrint());
|
||||
}
|
||||
|
||||
/**
|
||||
* 密集匹配 构建树和查找 测试中文字符,并与wordTree对比效率
|
||||
*/
|
||||
@Test
|
||||
public void buildFindCnCharTest() {
|
||||
final StopWatch stopWatch = new StopWatch();
|
||||
final String input = "赵啊三在做什么";
|
||||
|
||||
stopWatch.start("automaton_cn_build_find");
|
||||
final NFA NFALocal = new NFA();
|
||||
NFALocal.insert("赵", "赵啊", "赵啊三");
|
||||
NFALocal.buildAc();
|
||||
|
||||
final List<FoundWord> result = NFALocal.find(input);
|
||||
stopWatch.stop();
|
||||
|
||||
Assert.assertEquals(3, result.size());
|
||||
Assert.assertEquals("赵,赵啊,赵啊三", result.stream().map(FoundWord::getWord).collect(Collectors.joining(",")));
|
||||
Assert.assertEquals(Integer.valueOf(0), result.get(0).getBeginIndex());
|
||||
Assert.assertEquals(Integer.valueOf(0), result.get(0).getEndIndex());
|
||||
Assert.assertEquals(Integer.valueOf(0), result.get(1).getBeginIndex());
|
||||
Assert.assertEquals(Integer.valueOf(1), result.get(1).getEndIndex());
|
||||
Assert.assertEquals(Integer.valueOf(0), result.get(2).getBeginIndex());
|
||||
Assert.assertEquals(Integer.valueOf(2), result.get(2).getEndIndex());
|
||||
|
||||
stopWatch.start("wordtree_cn_build_find");
|
||||
final WordTree wordTreeLocal = new WordTree();
|
||||
wordTreeLocal.addWords("赵", "赵啊", "赵啊三");
|
||||
|
||||
final List<String> result1 = wordTreeLocal.matchAll(input, -1, true, true);
|
||||
stopWatch.stop();
|
||||
|
||||
Assert.assertEquals(3, result1.size());
|
||||
Assert.assertEquals("赵,赵啊,赵啊三", String.join(",", result1));
|
||||
|
||||
//Console.log(stopWatch.prettyPrint());
|
||||
}
|
||||
|
||||
/**
|
||||
* 密集匹配 测试构建树和查找 中文字符,并与wordTree对比效率
|
||||
*/
|
||||
@Test
|
||||
public void testFindCNChar() {
|
||||
final StopWatch stopWatch = new StopWatch();
|
||||
final String input = "赵啊三在做什么";
|
||||
|
||||
final NFA NFALocal = new NFA();
|
||||
NFALocal.insert("赵", "赵啊", "赵啊三");
|
||||
NFALocal.buildAc();
|
||||
|
||||
stopWatch.start("automaton_cn_find");
|
||||
final List<FoundWord> result = NFALocal.find(input);
|
||||
stopWatch.stop();
|
||||
|
||||
Assert.assertEquals(3, result.size());
|
||||
Assert.assertEquals("赵,赵啊,赵啊三", result.stream().map(FoundWord::getWord).collect(Collectors.joining(",")));
|
||||
Assert.assertEquals(Integer.valueOf(0), result.get(0).getBeginIndex());
|
||||
Assert.assertEquals(Integer.valueOf(0), result.get(0).getEndIndex());
|
||||
Assert.assertEquals(Integer.valueOf(0), result.get(1).getBeginIndex());
|
||||
Assert.assertEquals(Integer.valueOf(1), result.get(1).getEndIndex());
|
||||
Assert.assertEquals(Integer.valueOf(0), result.get(2).getBeginIndex());
|
||||
Assert.assertEquals(Integer.valueOf(2), result.get(2).getEndIndex());
|
||||
|
||||
final WordTree wordTreeLocal = new WordTree();
|
||||
wordTreeLocal.addWords("赵", "赵啊", "赵啊三");
|
||||
|
||||
stopWatch.start("wordtree_cn_find");
|
||||
final List<String> result1 = wordTreeLocal.matchAllWords(input, -1, true, true).stream().map(FoundWord::getWord)
|
||||
.collect(Collectors.toList());
|
||||
stopWatch.stop();
|
||||
|
||||
Assert.assertEquals(3, result1.size());
|
||||
Assert.assertEquals("赵,赵啊,赵啊三", String.join(",", result1));
|
||||
|
||||
//Console.log(stopWatch.prettyPrint());
|
||||
}
|
||||
|
||||
/**
|
||||
* 非密集匹配 测试构建树和查找 中文字符,并与wordTree对比效率,
|
||||
*/
|
||||
@Test
|
||||
public void testFindCNCharNotDensity() {
|
||||
final StopWatch stopWatch = new StopWatch();
|
||||
final String input = "赵啊三在做什么";
|
||||
|
||||
final NFA NFALocal = new NFA();
|
||||
NFALocal.insert("赵", "赵啊", "赵啊三");
|
||||
NFALocal.buildAc();
|
||||
|
||||
stopWatch.start("automaton_cn_find_not_density");
|
||||
final List<FoundWord> result = NFALocal.find(input, false);
|
||||
stopWatch.stop();
|
||||
|
||||
Assert.assertEquals(1, result.size());
|
||||
Assert.assertEquals("赵", result.stream().map(FoundWord::getWord).collect(Collectors.joining(",")));
|
||||
Assert.assertEquals(Integer.valueOf(0), result.get(0).getBeginIndex());
|
||||
Assert.assertEquals(Integer.valueOf(0), result.get(0).getEndIndex());
|
||||
|
||||
final WordTree wordTreeLocal = new WordTree();
|
||||
wordTreeLocal.addWords("赵", "赵啊", "赵啊三");
|
||||
|
||||
stopWatch.start("wordtree_cn_find_not_density");
|
||||
final List<String> result1 =
|
||||
wordTreeLocal.matchAllWords(input, -1, false, true).stream().map(FoundWord::getWord)
|
||||
.collect(Collectors.toList());
|
||||
stopWatch.stop();
|
||||
|
||||
Assert.assertEquals(1, result1.size());
|
||||
Assert.assertEquals("赵", String.join(",", result1));
|
||||
|
||||
//Console.log(stopWatch.prettyPrint());
|
||||
}
|
||||
}
|
@@ -1,5 +1,6 @@
|
||||
package cn.hutool.core.text.split;
|
||||
|
||||
import cn.hutool.core.lang.Console;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
@@ -59,16 +60,25 @@ public class StrSplitterTest {
|
||||
final String str = "";
|
||||
final String[] split = str.split(",");
|
||||
final String[] strings = SplitUtil.splitToArray(str, ",", -1, false, false);
|
||||
|
||||
Assert.assertNotNull(strings);
|
||||
Assert.assertArrayEquals(split, strings);
|
||||
|
||||
final String[] strings2 = SplitUtil.splitToArray(str, ",", -1, false, true);
|
||||
Assert.assertEquals(0, strings2.length);
|
||||
}
|
||||
|
||||
@SuppressWarnings("ConstantValue")
|
||||
@Test
|
||||
public void splitNullTest(){
|
||||
final String str = null;
|
||||
final String[] strings = SplitUtil.splitToArray(str, ",", -1, false, false);
|
||||
Assert.assertNotNull(strings);
|
||||
Assert.assertEquals(0, strings.length);
|
||||
|
||||
final String[] strings2 = SplitUtil.splitToArray(str, ",", -1, false, true);
|
||||
Assert.assertNotNull(strings2);
|
||||
Assert.assertEquals(0, strings2.length);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -1,35 +0,0 @@
|
||||
package cn.hutool.core.util;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
* 分页单元测试
|
||||
*
|
||||
* @author Looly
|
||||
*/
|
||||
public class PageUtilTest {
|
||||
|
||||
@Test
|
||||
public void transToStartEndTest() {
|
||||
final int[] startEnd1 = PageUtil.transToStartEnd(0, 10);
|
||||
Assert.assertEquals(0, startEnd1[0]);
|
||||
Assert.assertEquals(10, startEnd1[1]);
|
||||
|
||||
final int[] startEnd2 = PageUtil.transToStartEnd(1, 10);
|
||||
Assert.assertEquals(10, startEnd2[0]);
|
||||
Assert.assertEquals(20, startEnd2[1]);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void totalPage() {
|
||||
final int totalPage = PageUtil.totalPage(20, 3);
|
||||
Assert.assertEquals(7, totalPage);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void rainbowTest() {
|
||||
final int[] rainbow = PageUtil.rainbow(5, 20, 6);
|
||||
Assert.assertArrayEquals(new int[]{3, 4, 5, 6, 7, 8}, rainbow);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user