This commit is contained in:
Looly 2025-02-06 11:03:30 +08:00
parent 1ef308674b
commit 526f21472f

View File

@ -24,6 +24,8 @@ import org.junit.jupiter.api.Test;
import java.util.List; import java.util.List;
import static org.junit.jupiter.api.Assertions.assertEquals;
/** /**
* 字符串工具类单元测试 * 字符串工具类单元测试
* *
@ -40,25 +42,25 @@ public class StrUtilTest {
public void trimTest() { public void trimTest() {
final String blank = " 哈哈  "; final String blank = " 哈哈  ";
final String trim = StrUtil.trim(blank); final String trim = StrUtil.trim(blank);
Assertions.assertEquals("哈哈", trim); assertEquals("哈哈", trim);
} }
@Test @Test
public void trimNewLineTest() { public void trimNewLineTest() {
String str = "\r\naaa"; String str = "\r\naaa";
Assertions.assertEquals("aaa", StrUtil.trim(str)); assertEquals("aaa", StrUtil.trim(str));
str = "\raaa"; str = "\raaa";
Assertions.assertEquals("aaa", StrUtil.trim(str)); assertEquals("aaa", StrUtil.trim(str));
str = "\naaa"; str = "\naaa";
Assertions.assertEquals("aaa", StrUtil.trim(str)); assertEquals("aaa", StrUtil.trim(str));
str = "\r\n\r\naaa"; str = "\r\n\r\naaa";
Assertions.assertEquals("aaa", StrUtil.trim(str)); assertEquals("aaa", StrUtil.trim(str));
} }
@Test @Test
public void trimTabTest() { public void trimTabTest() {
final String str = "\taaa"; final String str = "\taaa";
Assertions.assertEquals("aaa", StrUtil.trim(str)); assertEquals("aaa", StrUtil.trim(str));
} }
@Test @Test
@ -66,7 +68,7 @@ public class StrUtilTest {
// 包含制表符英文空格不间断空白符全角空格 // 包含制表符英文空格不间断空白符全角空格
final String str = " 你 好 "; final String str = " 你 好 ";
final String cleanBlank = StrUtil.cleanBlank(str); final String cleanBlank = StrUtil.cleanBlank(str);
Assertions.assertEquals("你好", cleanBlank); assertEquals("你好", cleanBlank);
} }
@Test @Test
@ -80,178 +82,177 @@ public class StrUtilTest {
public void splitTest2() { public void splitTest2() {
final String str = "a.b."; final String str = "a.b.";
final List<String> split = SplitUtil.split(str, "."); final List<String> split = SplitUtil.split(str, ".");
Assertions.assertEquals(3, split.size()); assertEquals(3, split.size());
Assertions.assertEquals("b", split.get(1)); assertEquals("b", split.get(1));
Assertions.assertEquals("", split.get(2)); assertEquals("", split.get(2));
} }
@Test @Test
public void splitNullTest() { public void splitNullTest() {
Assertions.assertEquals(0, SplitUtil.split(null, ".").size()); assertEquals(0, SplitUtil.split(null, ".").size());
} }
@Test @Test
public void formatTest() { public void formatTest() {
final String template = "你好,我是{name},我的电话是:{phone}"; final String template = "你好,我是{name},我的电话是:{phone}";
final String result = StrUtil.formatByMap(template, Dict.of().set("name", "张三").set("phone", "13888881111")); final String result = StrUtil.formatByMap(template, Dict.of().set("name", "张三").set("phone", "13888881111"));
Assertions.assertEquals("你好我是张三我的电话是13888881111", result); assertEquals("你好我是张三我的电话是13888881111", result);
final String result2 = StrUtil.formatByMap(template, Dict.of().set("name", "张三").set("phone", null)); final String result2 = StrUtil.formatByMap(template, Dict.of().set("name", "张三").set("phone", null));
Assertions.assertEquals("你好,我是张三,我的电话是:{phone}", result2); assertEquals("你好,我是张三,我的电话是:{phone}", result2);
} }
@Test @Test
public void stripTest() { public void stripTest() {
String str = "abcd123"; String str = "abcd123";
String strip = StrUtil.strip(str, "ab", "23"); String strip = StrUtil.strip(str, "ab", "23");
Assertions.assertEquals("cd1", strip); assertEquals("cd1", strip);
str = "abcd123"; str = "abcd123";
strip = StrUtil.strip(str, "ab", ""); strip = StrUtil.strip(str, "ab", "");
Assertions.assertEquals("cd123", strip); assertEquals("cd123", strip);
str = "abcd123"; str = "abcd123";
strip = StrUtil.strip(str, null, ""); strip = StrUtil.strip(str, null, "");
Assertions.assertEquals("abcd123", strip); assertEquals("abcd123", strip);
str = "abcd123"; str = "abcd123";
strip = StrUtil.strip(str, null, "567"); strip = StrUtil.strip(str, null, "567");
Assertions.assertEquals("abcd123", strip); assertEquals("abcd123", strip);
Assertions.assertEquals("", StrUtil.strip("a", "a")); assertEquals("", StrUtil.strip("a", "a"));
Assertions.assertEquals("", StrUtil.strip("a", "a", "b")); assertEquals("", StrUtil.strip("a", "a", "b"));
} }
@Test @Test
public void stripIgnoreCaseTest() { public void stripIgnoreCaseTest() {
String str = "abcd123"; String str = "abcd123";
String strip = StrUtil.stripIgnoreCase(str, "Ab", "23"); String strip = StrUtil.stripIgnoreCase(str, "Ab", "23");
Assertions.assertEquals("cd1", strip); assertEquals("cd1", strip);
str = "abcd123"; str = "abcd123";
strip = StrUtil.stripIgnoreCase(str, "AB", ""); strip = StrUtil.stripIgnoreCase(str, "AB", "");
Assertions.assertEquals("cd123", strip); assertEquals("cd123", strip);
str = "abcd123"; str = "abcd123";
strip = StrUtil.stripIgnoreCase(str, "ab", ""); strip = StrUtil.stripIgnoreCase(str, "ab", "");
Assertions.assertEquals("cd123", strip); assertEquals("cd123", strip);
str = "abcd123"; str = "abcd123";
strip = StrUtil.stripIgnoreCase(str, null, ""); strip = StrUtil.stripIgnoreCase(str, null, "");
Assertions.assertEquals("abcd123", strip); assertEquals("abcd123", strip);
str = "abcd123"; str = "abcd123";
strip = StrUtil.stripIgnoreCase(str, null, "567"); strip = StrUtil.stripIgnoreCase(str, null, "567");
Assertions.assertEquals("abcd123", strip); assertEquals("abcd123", strip);
} }
@Test @Test
public void indexOfIgnoreCaseTest() { public void indexOfIgnoreCaseTest() {
Assertions.assertEquals(-1, StrUtil.indexOfIgnoreCase(null, "balabala", 0)); assertEquals(-1, StrUtil.indexOfIgnoreCase(null, "balabala", 0));
Assertions.assertEquals(-1, StrUtil.indexOfIgnoreCase("balabala", null, 0)); assertEquals(-1, StrUtil.indexOfIgnoreCase("balabala", null, 0));
Assertions.assertEquals(0, StrUtil.indexOfIgnoreCase("", "", 0)); assertEquals(0, StrUtil.indexOfIgnoreCase("", "", 0));
Assertions.assertEquals(0, StrUtil.indexOfIgnoreCase("aabaabaa", "A", 0)); assertEquals(0, StrUtil.indexOfIgnoreCase("aabaabaa", "A", 0));
Assertions.assertEquals(2, StrUtil.indexOfIgnoreCase("aabaabaa", "B", 0)); assertEquals(2, StrUtil.indexOfIgnoreCase("aabaabaa", "B", 0));
Assertions.assertEquals(1, StrUtil.indexOfIgnoreCase("aabaabaa", "AB", 0)); assertEquals(1, StrUtil.indexOfIgnoreCase("aabaabaa", "AB", 0));
Assertions.assertEquals(5, StrUtil.indexOfIgnoreCase("aabaabaa", "B", 3)); assertEquals(5, StrUtil.indexOfIgnoreCase("aabaabaa", "B", 3));
Assertions.assertEquals(-1, StrUtil.indexOfIgnoreCase("aabaabaa", "B", 9)); assertEquals(-1, StrUtil.indexOfIgnoreCase("aabaabaa", "B", 9));
Assertions.assertEquals(2, StrUtil.indexOfIgnoreCase("aabaabaa", "B", -1)); assertEquals(2, StrUtil.indexOfIgnoreCase("aabaabaa", "B", -1));
Assertions.assertEquals(-1, StrUtil.indexOfIgnoreCase("aabaabaa", "", 2)); assertEquals(-1, StrUtil.indexOfIgnoreCase("aabaabaa", "", 2));
Assertions.assertEquals(-1, StrUtil.indexOfIgnoreCase("abc", "", 9)); assertEquals(-1, StrUtil.indexOfIgnoreCase("abc", "", 9));
} }
@Test @Test
public void lastIndexOfTest() { public void lastIndexOfTest() {
final String a = "aabbccddcc"; final String a = "aabbccddcc";
final int lastIndexOf = StrUtil.lastIndexOf(a, "c", 0, false); final int lastIndexOf = StrUtil.lastIndexOf(a, "c", 0, false);
Assertions.assertEquals(-1, lastIndexOf); assertEquals(-1, lastIndexOf);
} }
@Test @Test
public void lastIndexOfIgnoreCaseTest() { public void lastIndexOfIgnoreCaseTest() {
Assertions.assertEquals(-1, StrUtil.lastIndexOfIgnoreCase(null, "balabala", 0)); assertEquals(-1, StrUtil.lastIndexOfIgnoreCase(null, "balabala", 0));
Assertions.assertEquals(-1, StrUtil.lastIndexOfIgnoreCase("balabala", null)); assertEquals(-1, StrUtil.lastIndexOfIgnoreCase("balabala", null));
Assertions.assertEquals(0, StrUtil.lastIndexOfIgnoreCase("", "")); assertEquals(0, StrUtil.lastIndexOfIgnoreCase("", ""));
Assertions.assertEquals(7, StrUtil.lastIndexOfIgnoreCase("aabaabaa", "A")); assertEquals(7, StrUtil.lastIndexOfIgnoreCase("aabaabaa", "A"));
Assertions.assertEquals(5, StrUtil.lastIndexOfIgnoreCase("aabaabaa", "B")); assertEquals(5, StrUtil.lastIndexOfIgnoreCase("aabaabaa", "B"));
Assertions.assertEquals(4, StrUtil.lastIndexOfIgnoreCase("aabaabaa", "AB")); assertEquals(4, StrUtil.lastIndexOfIgnoreCase("aabaabaa", "AB"));
Assertions.assertEquals(2, StrUtil.lastIndexOfIgnoreCase("aabaabaa", "B", 3)); assertEquals(2, StrUtil.lastIndexOfIgnoreCase("aabaabaa", "B", 3));
Assertions.assertEquals(5, StrUtil.lastIndexOfIgnoreCase("aabaabaa", "B", 9)); assertEquals(5, StrUtil.lastIndexOfIgnoreCase("aabaabaa", "B", 9));
Assertions.assertEquals(-1, StrUtil.lastIndexOfIgnoreCase("aabaabaa", "B", -1)); assertEquals(-1, StrUtil.lastIndexOfIgnoreCase("aabaabaa", "B", -1));
Assertions.assertEquals(-1, StrUtil.lastIndexOfIgnoreCase("aabaabaa", "", 2)); assertEquals(-1, StrUtil.lastIndexOfIgnoreCase("aabaabaa", "", 2));
Assertions.assertEquals(-1, StrUtil.lastIndexOfIgnoreCase("abc", "", 9)); assertEquals(-1, StrUtil.lastIndexOfIgnoreCase("abc", "", 9));
Assertions.assertEquals(0, StrUtil.lastIndexOfIgnoreCase("AAAcsd", "aaa")); assertEquals(0, StrUtil.lastIndexOfIgnoreCase("AAAcsd", "aaa"));
} }
@Test @Test
public void replaceTest() { public void replaceTest() {
String string = StrUtil.replaceByCodePoint("aabbccdd", 2, 6, '*'); String string = StrUtil.replaceByCodePoint("aabbccdd", 2, 6, '*');
Assertions.assertEquals("aa****dd", string); assertEquals("aa****dd", string);
string = StrUtil.replaceByCodePoint("aabbccdd", 2, 12, '*'); string = StrUtil.replaceByCodePoint("aabbccdd", 2, 12, '*');
Assertions.assertEquals("aa******", string); assertEquals("aa******", string);
final String emoji = StrUtil.replaceByCodePoint("\uD83D\uDE00aabb\uD83D\uDE00ccdd", 2, 6, '*'); final String emoji = StrUtil.replaceByCodePoint("\uD83D\uDE00aabb\uD83D\uDE00ccdd", 2, 6, '*');
Assertions.assertEquals("\uD83D\uDE00a****ccdd", emoji); assertEquals("\uD83D\uDE00a****ccdd", emoji);
} }
@Test @Test
public void replaceTest2() { public void replaceTest2() {
final String result = StrUtil.replace("123", "2", "3"); final String result = StrUtil.replace("123", "2", "3");
Assertions.assertEquals("133", result); assertEquals("133", result);
} }
@Test @Test
public void replaceTest4() { public void replaceTest4() {
final String a = "1039"; final String a = "1039";
final String result = StrUtil.padPre(a, 8, "0"); //在字符串1039前补4个0 final String result = StrUtil.padPre(a, 8, "0"); //在字符串1039前补4个0
Assertions.assertEquals("00001039", result); assertEquals("00001039", result);
final String aa = "1039"; final String aa = "1039";
final String result1 = StrUtil.padPre(aa, -1, "0"); //在字符串1039前补4个0 final String result1 = StrUtil.padPre(aa, -1, "0"); //在字符串1039前补4个0
Assertions.assertEquals("103", result1); assertEquals("103", result1);
} }
@Test @Test
public void replaceTest5() { public void replaceTest5() {
final String a = "\uD853\uDC09秀秀"; final String a = "\uD853\uDC09秀秀";
final String result = StrUtil.replaceByCodePoint(a, 1, a.length(), '*'); final String result = StrUtil.replaceByCodePoint(a, 1, a.length(), '*');
Assertions.assertEquals("\uD853\uDC09**", result); assertEquals("\uD853\uDC09**", result);
final String aa = "规划大师"; final String aa = "规划大师";
final String result1 = StrUtil.replaceByCodePoint(aa, 2, a.length(), '*'); final String result1 = StrUtil.replaceByCodePoint(aa, 2, a.length(), '*');
Assertions.assertEquals("规划**", result1); assertEquals("规划**", result1);
} }
@Test @Test
public void upperFirstTest() { public void upperFirstTest() {
final StringBuilder sb = new StringBuilder("KEY"); final StringBuilder sb = new StringBuilder("KEY");
final String s = StrUtil.upperFirst(sb); final String s = StrUtil.upperFirst(sb);
Assertions.assertEquals(s, sb.toString()); assertEquals(s, sb.toString());
} }
@Test @Test
public void lowerFirstTest() { public void lowerFirstTest() {
final StringBuilder sb = new StringBuilder("KEY"); final StringBuilder sb = new StringBuilder("KEY");
final String s = StrUtil.lowerFirst(sb); final String s = StrUtil.lowerFirst(sb);
Assertions.assertEquals("kEY", s); assertEquals("kEY", s);
} }
@Test @Test
public void subTest() { public void subTest() {
final String a = "abcderghigh"; final String a = "abcderghigh";
final String pre = StrUtil.sub(a, -5, a.length()); final String pre = StrUtil.sub(a, -5, a.length());
Assertions.assertEquals("ghigh", pre); assertEquals("ghigh", pre);
} }
@SuppressWarnings("SimplifiableAssertion")
@Test @Test
public void subPreTest() { public void subPreTest() {
Assertions.assertEquals(StrUtil.subPre(null, 3), null); Assertions.assertNull(StrUtil.subPre(null, 3));
Assertions.assertEquals(StrUtil.subPre("ab", 3), "ab"); assertEquals("ab", StrUtil.subPre("ab", 3));
Assertions.assertEquals(StrUtil.subPre("abc", 3), "abc"); assertEquals("abc", StrUtil.subPre("abc", 3));
Assertions.assertEquals(StrUtil.subPre("abcd", 3), "abc"); assertEquals("abc", StrUtil.subPre("abcd", 3));
Assertions.assertEquals(StrUtil.subPre("abcd", -3), "a"); assertEquals("a", StrUtil.subPre("abcd", -3));
Assertions.assertEquals(StrUtil.subPre("ab", 3), "ab"); assertEquals("ab", StrUtil.subPre("ab", 3));
} }
@Test @Test
@ -265,109 +266,109 @@ public class StrUtilTest {
// 正确的子字符串 // 正确的子字符串
final String rightAnswer = StrUtil.subByCodePoint(test, 0, 3); final String rightAnswer = StrUtil.subByCodePoint(test, 0, 3);
Assertions.assertEquals("\uD83E\uDD14\uD83D\uDC4D\uD83C\uDF53", rightAnswer); assertEquals("\uD83E\uDD14\uD83D\uDC4D\uD83C\uDF53", rightAnswer);
} }
@Test @Test
public void subBeforeTest() { public void subBeforeTest() {
final String a = "abcderghigh"; final String a = "abcderghigh";
String pre = StrUtil.subBefore(a, "d", false); String pre = StrUtil.subBefore(a, "d", false);
Assertions.assertEquals("abc", pre); assertEquals("abc", pre);
pre = StrUtil.subBefore(a, 'd', false); pre = StrUtil.subBefore(a, 'd', false);
Assertions.assertEquals("abc", pre); assertEquals("abc", pre);
pre = StrUtil.subBefore(a, 'a', false); pre = StrUtil.subBefore(a, 'a', false);
Assertions.assertEquals("", pre); assertEquals("", pre);
//找不到返回原串 //找不到返回原串
pre = StrUtil.subBefore(a, 'k', false); pre = StrUtil.subBefore(a, 'k', false);
Assertions.assertEquals(a, pre); assertEquals(a, pre);
pre = StrUtil.subBefore(a, 'k', true); pre = StrUtil.subBefore(a, 'k', true);
Assertions.assertEquals(a, pre); assertEquals(a, pre);
} }
@Test @Test
public void subAfterTest() { public void subAfterTest() {
final String a = "abcderghigh"; final String a = "abcderghigh";
String pre = StrUtil.subAfter(a, "d", false); String pre = StrUtil.subAfter(a, "d", false);
Assertions.assertEquals("erghigh", pre); assertEquals("erghigh", pre);
pre = StrUtil.subAfter(a, 'd', false); pre = StrUtil.subAfter(a, 'd', false);
Assertions.assertEquals("erghigh", pre); assertEquals("erghigh", pre);
pre = StrUtil.subAfter(a, 'h', true); pre = StrUtil.subAfter(a, 'h', true);
Assertions.assertEquals("", pre); assertEquals("", pre);
//找不到字符返回空串 //找不到字符返回空串
pre = StrUtil.subAfter(a, 'k', false); pre = StrUtil.subAfter(a, 'k', false);
Assertions.assertEquals("", pre); assertEquals("", pre);
pre = StrUtil.subAfter(a, 'k', true); pre = StrUtil.subAfter(a, 'k', true);
Assertions.assertEquals("", pre); assertEquals("", pre);
} }
@Test @Test
public void subSufByLengthTest() { public void subSufByLengthTest() {
Assertions.assertEquals("cde", StrUtil.subSufByLength("abcde", 3)); assertEquals("cde", StrUtil.subSufByLength("abcde", 3));
Assertions.assertEquals("", StrUtil.subSufByLength("abcde", -1)); assertEquals("", StrUtil.subSufByLength("abcde", -1));
Assertions.assertEquals("", StrUtil.subSufByLength("abcde", 0)); assertEquals("", StrUtil.subSufByLength("abcde", 0));
Assertions.assertEquals("abcde", StrUtil.subSufByLength("abcde", 5)); assertEquals("abcde", StrUtil.subSufByLength("abcde", 5));
Assertions.assertEquals("abcde", StrUtil.subSufByLength("abcde", 10)); assertEquals("abcde", StrUtil.subSufByLength("abcde", 10));
} }
@Test @Test
public void repeatAndJoinTest() { public void repeatAndJoinTest() {
String repeatAndJoin = StrUtil.repeatAndJoin("?", 5, ","); String repeatAndJoin = StrUtil.repeatAndJoin("?", 5, ",");
Assertions.assertEquals("?,?,?,?,?", repeatAndJoin); assertEquals("?,?,?,?,?", repeatAndJoin);
repeatAndJoin = StrUtil.repeatAndJoin("?", 0, ","); repeatAndJoin = StrUtil.repeatAndJoin("?", 0, ",");
Assertions.assertEquals("", repeatAndJoin); assertEquals("", repeatAndJoin);
repeatAndJoin = StrUtil.repeatAndJoin("?", 5, null); repeatAndJoin = StrUtil.repeatAndJoin("?", 5, null);
Assertions.assertEquals("?????", repeatAndJoin); assertEquals("?????", repeatAndJoin);
} }
@Test @Test
public void moveTest() { public void moveTest() {
final String str = "aaaaaaa22222bbbbbbb"; final String str = "aaaaaaa22222bbbbbbb";
String result = StrUtil.move(str, 7, 12, -3); String result = StrUtil.move(str, 7, 12, -3);
Assertions.assertEquals("aaaa22222aaabbbbbbb", result); assertEquals("aaaa22222aaabbbbbbb", result);
result = StrUtil.move(str, 7, 12, -4); result = StrUtil.move(str, 7, 12, -4);
Assertions.assertEquals("aaa22222aaaabbbbbbb", result); assertEquals("aaa22222aaaabbbbbbb", result);
result = StrUtil.move(str, 7, 12, -7); result = StrUtil.move(str, 7, 12, -7);
Assertions.assertEquals("22222aaaaaaabbbbbbb", result); assertEquals("22222aaaaaaabbbbbbb", result);
result = StrUtil.move(str, 7, 12, -20); result = StrUtil.move(str, 7, 12, -20);
Assertions.assertEquals("aaaaaa22222abbbbbbb", result); assertEquals("aaaaaa22222abbbbbbb", result);
result = StrUtil.move(str, 7, 12, 3); result = StrUtil.move(str, 7, 12, 3);
Assertions.assertEquals("aaaaaaabbb22222bbbb", result); assertEquals("aaaaaaabbb22222bbbb", result);
result = StrUtil.move(str, 7, 12, 7); result = StrUtil.move(str, 7, 12, 7);
Assertions.assertEquals("aaaaaaabbbbbbb22222", result); assertEquals("aaaaaaabbbbbbb22222", result);
result = StrUtil.move(str, 7, 12, 20); result = StrUtil.move(str, 7, 12, 20);
Assertions.assertEquals("aaaaaaab22222bbbbbb", result); assertEquals("aaaaaaab22222bbbbbb", result);
result = StrUtil.move(str, 7, 12, 0); result = StrUtil.move(str, 7, 12, 0);
Assertions.assertEquals("aaaaaaa22222bbbbbbb", result); assertEquals("aaaaaaa22222bbbbbbb", result);
} }
@Test @Test
public void removePrefixIgnorecaseTest() { public void removePrefixIgnorecaseTest() {
final String a = "aaabbb"; final String a = "aaabbb";
String prefix = "aaa"; String prefix = "aaa";
Assertions.assertEquals("bbb", StrUtil.removePrefixIgnoreCase(a, prefix)); assertEquals("bbb", StrUtil.removePrefixIgnoreCase(a, prefix));
prefix = "AAA"; prefix = "AAA";
Assertions.assertEquals("bbb", StrUtil.removePrefixIgnoreCase(a, prefix)); assertEquals("bbb", StrUtil.removePrefixIgnoreCase(a, prefix));
prefix = "AAABBB"; prefix = "AAABBB";
Assertions.assertEquals("", StrUtil.removePrefixIgnoreCase(a, prefix)); assertEquals("", StrUtil.removePrefixIgnoreCase(a, prefix));
} }
@Test @Test
public void limitLengthTest() { public void limitLengthTest() {
final String text = "我是一段正文,很长的正文,需要截取的正文"; final String text = "我是一段正文,很长的正文,需要截取的正文";
String str = StrUtil.limitLength(text, 5); String str = StrUtil.limitLength(text, 5);
Assertions.assertEquals("我是一段正...", str); assertEquals("我是一段正...", str);
str = StrUtil.limitLength(text, 21); str = StrUtil.limitLength(text, 21);
Assertions.assertEquals(text, str); assertEquals(text, str);
str = StrUtil.limitLength(text, 50); str = StrUtil.limitLength(text, 50);
Assertions.assertEquals(text, str); assertEquals(text, str);
} }
@Test @Test
@ -396,34 +397,34 @@ public class StrUtilTest {
@Test @Test
public void centerTest() { public void centerTest() {
Assertions.assertNull(StrUtil.center(null, 10)); Assertions.assertNull(StrUtil.center(null, 10));
Assertions.assertEquals(" ", StrUtil.center("", 4)); assertEquals(" ", StrUtil.center("", 4));
Assertions.assertEquals("ab", StrUtil.center("ab", -1)); assertEquals("ab", StrUtil.center("ab", -1));
Assertions.assertEquals(" ab ", StrUtil.center("ab", 4)); assertEquals(" ab ", StrUtil.center("ab", 4));
Assertions.assertEquals("abcd", StrUtil.center("abcd", 2)); assertEquals("abcd", StrUtil.center("abcd", 2));
Assertions.assertEquals(" a ", StrUtil.center("a", 4)); assertEquals(" a ", StrUtil.center("a", 4));
} }
@Test @Test
public void padPreTest() { public void padPreTest() {
Assertions.assertNull(StrUtil.padPre(null, 10, ' ')); Assertions.assertNull(StrUtil.padPre(null, 10, ' '));
Assertions.assertEquals("001", StrUtil.padPre("1", 3, '0')); assertEquals("001", StrUtil.padPre("1", 3, '0'));
Assertions.assertEquals("12", StrUtil.padPre("123", 2, '0')); assertEquals("12", StrUtil.padPre("123", 2, '0'));
Assertions.assertNull(StrUtil.padPre(null, 10, "AA")); Assertions.assertNull(StrUtil.padPre(null, 10, "AA"));
Assertions.assertEquals("AB1", StrUtil.padPre("1", 3, "ABC")); assertEquals("AB1", StrUtil.padPre("1", 3, "ABC"));
Assertions.assertEquals("12", StrUtil.padPre("123", 2, "ABC")); assertEquals("12", StrUtil.padPre("123", 2, "ABC"));
} }
@Test @Test
public void padAfterTest() { public void padAfterTest() {
Assertions.assertNull(StrUtil.padAfter(null, 10, ' ')); Assertions.assertNull(StrUtil.padAfter(null, 10, ' '));
Assertions.assertEquals("100", StrUtil.padAfter("1", 3, '0')); assertEquals("100", StrUtil.padAfter("1", 3, '0'));
Assertions.assertEquals("23", StrUtil.padAfter("123", 2, '0')); assertEquals("23", StrUtil.padAfter("123", 2, '0'));
Assertions.assertEquals("", StrUtil.padAfter("123", -1, '0')); assertEquals("", StrUtil.padAfter("123", -1, '0'));
Assertions.assertNull(StrUtil.padAfter(null, 10, "ABC")); Assertions.assertNull(StrUtil.padAfter(null, 10, "ABC"));
Assertions.assertEquals("1AB", StrUtil.padAfter("1", 3, "ABC")); assertEquals("1AB", StrUtil.padAfter("1", 3, "ABC"));
Assertions.assertEquals("23", StrUtil.padAfter("123", 2, "ABC")); assertEquals("23", StrUtil.padAfter("123", 2, "ABC"));
} }
@Test @Test
@ -444,38 +445,38 @@ public class StrUtilTest {
final String src2 = "/ * hutool */ asdas / * hutool */"; final String src2 = "/ * hutool */ asdas / * hutool */";
final String[] results1 = StrUtil.subBetweenAll(src1, "/**", "*/"); final String[] results1 = StrUtil.subBetweenAll(src1, "/**", "*/");
Assertions.assertEquals(0, results1.length); assertEquals(0, results1.length);
final String[] results2 = StrUtil.subBetweenAll(src2, "/*", "*/"); final String[] results2 = StrUtil.subBetweenAll(src2, "/*", "*/");
Assertions.assertEquals(0, results2.length); assertEquals(0, results2.length);
} }
@Test @Test
public void subBetweenAllTest3() { public void subBetweenAllTest3() {
final String src1 = "'abc'and'123'"; final String src1 = "'abc'and'123'";
String[] strings = StrUtil.subBetweenAll(src1, "'", "'"); String[] strings = StrUtil.subBetweenAll(src1, "'", "'");
Assertions.assertEquals(2, strings.length); assertEquals(2, strings.length);
Assertions.assertEquals("abc", strings[0]); assertEquals("abc", strings[0]);
Assertions.assertEquals("123", strings[1]); assertEquals("123", strings[1]);
final String src2 = "'abc''123'"; final String src2 = "'abc''123'";
strings = StrUtil.subBetweenAll(src2, "'", "'"); strings = StrUtil.subBetweenAll(src2, "'", "'");
Assertions.assertEquals(2, strings.length); assertEquals(2, strings.length);
Assertions.assertEquals("abc", strings[0]); assertEquals("abc", strings[0]);
Assertions.assertEquals("123", strings[1]); assertEquals("123", strings[1]);
final String src3 = "'abc'123'"; final String src3 = "'abc'123'";
strings = StrUtil.subBetweenAll(src3, "'", "'"); strings = StrUtil.subBetweenAll(src3, "'", "'");
Assertions.assertEquals(1, strings.length); assertEquals(1, strings.length);
Assertions.assertEquals("abc", strings[0]); assertEquals("abc", strings[0]);
} }
@Test @Test
public void subBetweenAllTest4() { public void subBetweenAllTest4() {
final String str = "你好:1388681xxxx用户已开通,1877275xxxx用户已开通,无法发送业务开通短信"; final String str = "你好:1388681xxxx用户已开通,1877275xxxx用户已开通,无法发送业务开通短信";
final String[] strings = StrUtil.subBetweenAll(str, "1877275xxxx", ","); final String[] strings = StrUtil.subBetweenAll(str, "1877275xxxx", ",");
Assertions.assertEquals(1, strings.length); assertEquals(1, strings.length);
Assertions.assertEquals("用户已开通", strings[0]); assertEquals("用户已开通", strings[0]);
} }
@Test @Test
@ -484,14 +485,14 @@ public class StrUtilTest {
final String str = RandomUtil.randomStringLower(RandomUtil.randomInt(1, 100)); final String str = RandomUtil.randomStringLower(RandomUtil.randomInt(1, 100));
for (int maxLength = 1; maxLength < str.length(); maxLength++) { for (int maxLength = 1; maxLength < str.length(); maxLength++) {
final String brief = StrUtil.brief(str, maxLength); final String brief = StrUtil.brief(str, maxLength);
Assertions.assertEquals(brief.length(), maxLength); assertEquals(brief.length(), maxLength);
} }
// case: 不会格式化的值 // case: 不会格式化的值
Assertions.assertEquals(str, StrUtil.brief(str, 0)); assertEquals(str, StrUtil.brief(str, 0));
Assertions.assertEquals(str, StrUtil.brief(str, -1)); assertEquals(str, StrUtil.brief(str, -1));
Assertions.assertEquals(str, StrUtil.brief(str, str.length())); assertEquals(str, StrUtil.brief(str, str.length()));
Assertions.assertEquals(str, StrUtil.brief(str, str.length() + 1)); assertEquals(str, StrUtil.brief(str, str.length() + 1));
} }
@Test @Test
@ -499,15 +500,15 @@ public class StrUtilTest {
final String str = "123"; final String str = "123";
int maxLength = 3; int maxLength = 3;
String brief = StrUtil.brief(str, maxLength); String brief = StrUtil.brief(str, maxLength);
Assertions.assertEquals("123", brief); assertEquals("123", brief);
maxLength = 2; maxLength = 2;
brief = StrUtil.brief(str, maxLength); brief = StrUtil.brief(str, maxLength);
Assertions.assertEquals("1.", brief); assertEquals("1.", brief);
maxLength = 1; maxLength = 1;
brief = StrUtil.brief(str, maxLength); brief = StrUtil.brief(str, maxLength);
Assertions.assertEquals("1", brief); assertEquals("1", brief);
} }
@Test @Test
@ -516,44 +517,44 @@ public class StrUtilTest {
int maxLength = 6; int maxLength = 6;
String brief = StrUtil.brief(str, maxLength); String brief = StrUtil.brief(str, maxLength);
Assertions.assertEquals(str, brief); assertEquals(str, brief);
maxLength = 5; maxLength = 5;
brief = StrUtil.brief(str, maxLength); brief = StrUtil.brief(str, maxLength);
Assertions.assertEquals("1...c", brief); assertEquals("1...c", brief);
maxLength = 4; maxLength = 4;
brief = StrUtil.brief(str, maxLength); brief = StrUtil.brief(str, maxLength);
Assertions.assertEquals("1..c", brief); assertEquals("1..c", brief);
maxLength = 3; maxLength = 3;
brief = StrUtil.brief(str, maxLength); brief = StrUtil.brief(str, maxLength);
Assertions.assertEquals("1.c", brief); assertEquals("1.c", brief);
maxLength = 2; maxLength = 2;
brief = StrUtil.brief(str, maxLength); brief = StrUtil.brief(str, maxLength);
Assertions.assertEquals("1.", brief); assertEquals("1.", brief);
maxLength = 1; maxLength = 1;
brief = StrUtil.brief(str, maxLength); brief = StrUtil.brief(str, maxLength);
Assertions.assertEquals("1", brief); assertEquals("1", brief);
} }
@Test @Test
public void filterTest() { public void filterTest() {
final String filterNumber = StrUtil.filter("hutool678", CharUtil::isNumber); final String filterNumber = StrUtil.filter("hutool678", CharUtil::isNumber);
Assertions.assertEquals("678", filterNumber); assertEquals("678", filterNumber);
final String cleanBlank = StrUtil.filter(" 你 好 ", c -> !CharUtil.isBlankChar(c)); final String cleanBlank = StrUtil.filter(" 你 好 ", c -> !CharUtil.isBlankChar(c));
Assertions.assertEquals("你好", cleanBlank); assertEquals("你好", cleanBlank);
} }
@Test @Test
public void wrapAllTest() { public void wrapAllTest() {
String[] strings = StrUtil.wrapAll("`", "`", SplitUtil.splitToArray("1,2,3,4", ",")); String[] strings = StrUtil.wrapAll("`", "`", SplitUtil.splitToArray("1,2,3,4", ","));
Assertions.assertEquals("[`1`, `2`, `3`, `4`]", StrUtil.utf8Str(strings)); assertEquals("[`1`, `2`, `3`, `4`]", StrUtil.utf8Str(strings));
strings = StrUtil.wrapAllWithPair("`", SplitUtil.splitToArray("1,2,3,4", ",")); strings = StrUtil.wrapAllWithPair("`", SplitUtil.splitToArray("1,2,3,4", ","));
Assertions.assertEquals("[`1`, `2`, `3`, `4`]", StrUtil.utf8Str(strings)); assertEquals("[`1`, `2`, `3`, `4`]", StrUtil.utf8Str(strings));
} }
@Test @Test
@ -568,18 +569,18 @@ public class StrUtilTest {
@Test @Test
public void indexedFormatTest() { public void indexedFormatTest() {
final String ret = StrUtil.indexedFormat("this is {0} for {1}", "a", 1000); final String ret = StrUtil.indexedFormat("this is {0} for {1}", "a", 1000);
Assertions.assertEquals("this is a for 1,000", ret); assertEquals("this is a for 1,000", ret);
} }
@Test @Test
public void hideTest() { public void hideTest() {
Assertions.assertNull(StrUtil.hide(null, 1, 1)); Assertions.assertNull(StrUtil.hide(null, 1, 1));
Assertions.assertEquals("", StrUtil.hide("", 1, 1)); assertEquals("", StrUtil.hide("", 1, 1));
Assertions.assertEquals("****duan@163.com", StrUtil.hide("jackduan@163.com", -1, 4)); assertEquals("****duan@163.com", StrUtil.hide("jackduan@163.com", -1, 4));
Assertions.assertEquals("ja*kduan@163.com", StrUtil.hide("jackduan@163.com", 2, 3)); assertEquals("ja*kduan@163.com", StrUtil.hide("jackduan@163.com", 2, 3));
Assertions.assertEquals("jackduan@163.com", StrUtil.hide("jackduan@163.com", 3, 2)); assertEquals("jackduan@163.com", StrUtil.hide("jackduan@163.com", 3, 2));
Assertions.assertEquals("jackduan@163.com", StrUtil.hide("jackduan@163.com", 16, 16)); assertEquals("jackduan@163.com", StrUtil.hide("jackduan@163.com", 16, 16));
Assertions.assertEquals("jackduan@163.com", StrUtil.hide("jackduan@163.com", 16, 17)); assertEquals("jackduan@163.com", StrUtil.hide("jackduan@163.com", 16, 17));
} }
@ -600,45 +601,57 @@ public class StrUtilTest {
// https://gitee.com/dromara/hutool/issues/I4M16G // https://gitee.com/dromara/hutool/issues/I4M16G
final String replace = "#{A}"; final String replace = "#{A}";
final String result = StrUtil.replace(replace, "#{AAAAAAA}", "1"); final String result = StrUtil.replace(replace, "#{AAAAAAA}", "1");
Assertions.assertEquals(replace, result); assertEquals(replace, result);
} }
@Test @Test
public void testReplaceByStr() { public void testReplaceByStr() {
final String replace = "SSM15930297701BeryAllen"; final String replace = "SSM15930297701BeryAllen";
final String result = StrUtil.replaceByCodePoint(replace, 5, 12, "***"); final String result = StrUtil.replaceByCodePoint(replace, 5, 12, "***");
Assertions.assertEquals("SSM15***01BeryAllen", result); assertEquals("SSM15***01BeryAllen", result);
final String emoji = StrUtil.replaceByCodePoint("\uD83D\uDE00aabb\uD83D\uDE00ccdd", 2, 6, "***"); final String emoji = StrUtil.replaceByCodePoint("\uD83D\uDE00aabb\uD83D\uDE00ccdd", 2, 6, "***");
Assertions.assertEquals("\uD83D\uDE00a***ccdd", emoji); assertEquals("\uD83D\uDE00a***ccdd", emoji);
} }
@Test @Test
public void testAddPrefixIfNot() { public void testAddPrefixIfNot() {
final String str = "hutool"; final String str = "hutool";
String result = StrUtil.addPrefixIfNot(str, "hu"); String result = StrUtil.addPrefixIfNot(str, "hu");
Assertions.assertEquals(str, result); assertEquals(str, result);
result = StrUtil.addPrefixIfNot(str, "Good"); result = StrUtil.addPrefixIfNot(str, "Good");
Assertions.assertEquals("Good" + str, result); assertEquals("Good" + str, result);
} }
@Test @Test
public void testAddSuffixIfNot() { public void testAddSuffixIfNot() {
final String str = "hutool"; final String str = "hutool";
String result = StrUtil.addSuffixIfNot(str, "tool"); String result = StrUtil.addSuffixIfNot(str, "tool");
Assertions.assertEquals(str, result); assertEquals(str, result);
result = StrUtil.addSuffixIfNot(str, " is Good"); result = StrUtil.addSuffixIfNot(str, " is Good");
Assertions.assertEquals(str + " is Good", result); assertEquals(str + " is Good", result);
result = StrUtil.addSuffixIfNot("", "/"); result = StrUtil.addSuffixIfNot("", "/");
Assertions.assertEquals("/", result); assertEquals("/", result);
} }
@Test @Test
public void issue2628Test(){ public void issue2628Test(){
final String s = StrUtil.indexedFormat("a{0,number,#}", 1234567); final String s = StrUtil.indexedFormat("a{0,number,#}", 1234567);
Assertions.assertEquals("a1234567", s); assertEquals("a1234567", s);
}
@Test
void pr1308Test(){
final String concat = StrUtil.concat(true,
"start",
StrUtil.subPre("123", 2),
"middle",
StrUtil.subSuf("123", 2),
"end");
assertEquals("start12middle3end", concat);
} }
} }