From 63fbef41835f04e07e818db74303adb7b28819c1 Mon Sep 17 00:00:00 2001 From: Looly Date: Wed, 24 Jan 2024 16:39:59 +0800 Subject: [PATCH] add test --- .../dromara/hutool/core/array/ArrayUtil.java | 27 +++++- .../org/dromara/hutool/core/util/ObjUtil.java | 2 +- .../hutool/core/array/ArrayUtilTest.java | 84 ++++++++++++++++++- 3 files changed, 106 insertions(+), 7 deletions(-) diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/array/ArrayUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/array/ArrayUtil.java index 5b8692eec..9dd325bea 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/array/ArrayUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/array/ArrayUtil.java @@ -305,9 +305,9 @@ public class ArrayUtil extends PrimitiveArrayUtil { * @param 元素类型 * @param args 被检查对象 * @return 是否存在 {@code null} 或空对象 - * @since 6.0.0 - * @author dazer * @throws IllegalArgumentException 如果提供的args的item存在数组或集合,抛出异常 + * @author dazer + * @since 6.0.0 */ @SafeVarargs public static boolean hasEmptyVarargs(final T... args) { @@ -340,9 +340,9 @@ public class ArrayUtil extends PrimitiveArrayUtil { * @param 元素类型 * @param args 被检查的对象,一个或者多个 * @return 是否都为空 - * @since 6.0.0 - * @author dazer * @throws IllegalArgumentException 如果提供的args的item存在数组或集合,抛出异常 + * @author dazer + * @since 6.0.0 */ @SafeVarargs public static boolean isAllEmptyVarargs(final T... args) { @@ -705,6 +705,25 @@ public class ArrayUtil extends PrimitiveArrayUtil { return ArrayWrapper.of(array).setOrPadding(index, value).getRaw(); } + /** + * 将元素值设置为数组的某个位置,当index小于数组的长度时,替换指定位置的值,否则追加paddingValue直到到达index后,设置值 + * + * @param 数组类型 + * @param 元素类型 + * @param array 已有数组 + * @param index 位置,大于等于长度则追加,否则替换 + * @param value 新值 + * @param paddingValue 填充值 + * @return 新数组或原有数组 + * @since 6.0.0 + */ + public static A setOrPadding(final A array, final int index, final E value, final E paddingValue) { + if (index == 0 && isEmpty(array)) { + return ofArray(value, null == array ? null : array.getClass().getComponentType()); + } + return ArrayWrapper.of(array).setOrPadding(index, value, paddingValue).getRaw(); + } + /** * 合并所有数组,返回合并后的新数组
* 忽略null的数组 diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/util/ObjUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/util/ObjUtil.java index 145ae9533..8882e2c22 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/util/ObjUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/util/ObjUtil.java @@ -221,7 +221,7 @@ public class ObjUtil { *
  • {@code null}:默认返回{@code true};
  • *
  • 数组:等同于{@link ArrayUtil#isEmpty(Object)};
  • *
  • {@link CharSequence}:等同于{@link CharSequenceUtil#isEmpty(CharSequence)};
  • - *
  • {@link Collection}:等同于{@link CollUtil#isEmpty(Collection)};
  • + *
  • {@link Collection}:等同于{@link CollUtil#isEmpty(Collection)};
  • *
  • {@link Map}:等同于{@link MapUtil#isEmpty(Map)};
  • *
  • * {@link Iterator}或{@link Iterable}:等同于{@link IterUtil#isEmpty(Iterator)}、 diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/array/ArrayUtilTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/array/ArrayUtilTest.java index 930ac7a9e..a98ecd48a 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/array/ArrayUtilTest.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/array/ArrayUtilTest.java @@ -15,7 +15,6 @@ package org.dromara.hutool.core.array; import org.dromara.hutool.core.collection.ListUtil; import org.dromara.hutool.core.lang.Console; import org.dromara.hutool.core.util.CharsetUtil; -import org.dromara.hutool.core.util.ObjUtil; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -55,6 +54,10 @@ public class ArrayUtilTest { final Object[] e = new Object[]{"1", "2", 3, 4D}; final boolean empty = ArrayUtil.isEmpty(e); Assertions.assertFalse(empty); + + // 当这个对象并非数组对象且非`null`时,返回`false`,即当用户传入非数组对象,理解为单个元素的数组。 + final Object nonArrayObj = "a"; + Assertions.assertFalse(ArrayUtil.isEmpty(nonArrayObj)); } @Test @@ -231,6 +234,14 @@ public class ArrayUtilTest { Assertions.assertArrayEquals(new String[]{"1", "2", "3", "4", "a", "b", "c"}, result); } + @Test + public void appendTest2() { + final String[] a = {"1", "2", "3", "4"}; + + final String[] result = ArrayUtil.append(a, "a", "b", "c"); + Assertions.assertArrayEquals(new String[]{"1", "2", "3", "4", "a", "b", "c"}, result); + } + @Test public void insertTest() { final String[] a = {"1", "2", "3", "4"}; @@ -344,6 +355,13 @@ public class ArrayUtilTest { Assertions.assertFalse(ArrayUtil.isAllNotNull(hasNull)); } + @Test + void firstNonNullTest() { + final String[] a = {null, null, "cc", null, "bb", "dd"}; + final String s = ArrayUtil.firstNonNull(a); + Assertions.assertEquals("cc", s); + } + @Test public void indexOfSubTest() { final Integer[] a = {0x12, 0x34, 0x56, 0x78, 0x9A}; @@ -464,6 +482,23 @@ public class ArrayUtilTest { } } + @Test + public void wrapIntTest() { + final int[] a = new int[]{1, 2, 3, 4}; + final Integer[] wrapA = ArrayUtil.wrap(a); + for (final Integer o : wrapA) { + Assertions.assertInstanceOf(Integer.class, o); + } + } + + @Test + public void unWrapIntTest() { + final Integer[] a = new Integer[]{1, 2, 3, 4}; + final int[] wrapA = ArrayUtil.unWrap(a); + final Class componentType = wrapA.getClass().getComponentType(); + Assertions.assertEquals(int.class, componentType); + } + @Test public void splitTest() { final byte[] array = new byte[1024]; @@ -567,6 +602,14 @@ public class ArrayUtilTest { Assertions.assertArrayEquals(new String[]{null, null, "Good"}, newArr); } + @Test + void setOrPaddingTest2(){ + final String[] arr = new String[0]; + final String[] newArr = ArrayUtil.setOrPadding(arr, 2, "Good"); + Console.log(newArr); + Assertions.assertArrayEquals(new String[]{null, null, "Good"}, newArr); + } + @Test public void getAnyTest() { final String[] a = {"a", "b", "c", "d", "e"}; @@ -576,6 +619,12 @@ public class ArrayUtilTest { Assertions.assertTrue(ArrayUtil.containsAll(c, resultO[0], resultO[1])); } + @Test + void hasNullTest() { + final String[] a = {"e", null}; + Assertions.assertTrue(ArrayUtil.hasNull(a)); + } + @Test public void hasNonNullTest() { String[] a = {null, "e"}; @@ -758,7 +807,7 @@ public class ArrayUtilTest { @Test public void equalsTest() { - final boolean b = ObjUtil.equals(new int[]{1, 2, 3}, new int[]{1, 2, 3}); + final boolean b = ArrayUtil.equals(new int[]{1, 2, 3}, new int[]{1, 2, 3}); Assertions.assertTrue(b); } @@ -792,8 +841,39 @@ public class ArrayUtilTest { Assertions.assertTrue(ArrayUtil.hasEmptyVarargs("", "apple", "pear")); } + @Test + void hasEmptyTest() { + final String[] a = {"", "a"}; + Assertions.assertTrue(ArrayUtil.hasEmpty(a)); + + Object[] b = {"a", new ArrayList<>()}; + Assertions.assertTrue(ArrayUtil.hasEmpty(b)); + + b = new Object[]{"a", new HashMap<>()}; + Assertions.assertTrue(ArrayUtil.hasEmpty(b)); + } + @Test public void isAllEmptyTest() { Assertions.assertFalse(ArrayUtil.isAllEmptyVarargs("apple", "pear", "", "orange")); } + + @Test + void emptyCountTest() { + final Object[] b = {"a", new ArrayList<>(), new HashMap<>(), new int[0]}; + final int emptyCount = ArrayUtil.emptyCount(b); + Assertions.assertEquals(3, emptyCount); + } + + @Test + void hasBlankTest() { + final String[] a = {" ", "aa"}; + Assertions.assertTrue(ArrayUtil.hasBlank(a)); + } + + @Test + void isAllBlankTest() { + final String[] a = {" ", " ", ""}; + Assertions.assertTrue(ArrayUtil.isAllBlank(a)); + } }