diff --git a/hutool-core/src/main/java/cn/hutool/core/util/BooleanUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/BooleanUtil.java index cf5e974b1..3e62a8177 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/BooleanUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/BooleanUtil.java @@ -357,8 +357,13 @@ public class BooleanUtil { if (ArrayUtil.isEmpty(array)) { throw new IllegalArgumentException("The Array must not be empty !"); } - final boolean[] primitive = Convert.convert(boolean[].class, array); - return and(primitive); + + for (final Boolean b : array) { + if(isFalse(b)){ + return false; + } + } + return true; } /** @@ -408,8 +413,13 @@ public class BooleanUtil { if (ArrayUtil.isEmpty(array)) { throw new IllegalArgumentException("The Array must not be empty !"); } - final boolean[] primitive = Convert.convert(boolean[].class, array); - return or(primitive); + + for (final Boolean b : array) { + if(isTrue(b)){ + return true; + } + } + return false; } /** diff --git a/hutool-core/src/main/java/cn/hutool/core/util/PrimitiveArrayUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/PrimitiveArrayUtil.java index 9c7e4e8c7..9cf2d9a6d 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/PrimitiveArrayUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/PrimitiveArrayUtil.java @@ -1228,7 +1228,8 @@ public class PrimitiveArrayUtil { } /** - * 包装类数组转为原始类型数组 + * 包装类数组转为原始类型数组
+ * {@code null} 按照 {@code false} 对待 * * @param values 包装类型数组 * @return 原始类型数组 diff --git a/hutool-core/src/test/java/cn/hutool/core/util/BooleanUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/BooleanUtilTest.java index c6f458596..0d87f7357 100644 --- a/hutool-core/src/test/java/cn/hutool/core/util/BooleanUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/util/BooleanUtilTest.java @@ -4,7 +4,7 @@ import org.junit.Assert; import org.junit.Test; public class BooleanUtilTest { - + @Test public void toBooleanTest() { Assert.assertTrue(BooleanUtil.toBoolean("true")); @@ -16,27 +16,74 @@ public class BooleanUtilTest { Assert.assertTrue(BooleanUtil.toBoolean("是")); Assert.assertTrue(BooleanUtil.toBoolean("对")); Assert.assertTrue(BooleanUtil.toBoolean("真")); - + Assert.assertFalse(BooleanUtil.toBoolean("false")); Assert.assertFalse(BooleanUtil.toBoolean("6455434")); Assert.assertFalse(BooleanUtil.toBoolean("")); } @Test - public void andTest(){ - Assert.assertFalse(BooleanUtil.and(true,false)); - Assert.assertFalse(BooleanUtil.andOfWrap(true,false)); + public void andTest() { + Assert.assertFalse(BooleanUtil.and(true, false)); + Assert.assertFalse(BooleanUtil.andOfWrap(true, false)); } @Test - public void orTest(){ - Assert.assertTrue(BooleanUtil.or(true,false)); - Assert.assertTrue(BooleanUtil.orOfWrap(true,false)); + public void orTest() { + Assert.assertTrue(BooleanUtil.or(true, false)); + Assert.assertTrue(BooleanUtil.orOfWrap(true, false)); } @Test - public void xorTest(){ - Assert.assertTrue(BooleanUtil.xor(true,false)); - Assert.assertTrue(BooleanUtil.xorOfWrap(true,false)); + public void xorTest() { + Assert.assertTrue(BooleanUtil.xor(true, false)); + Assert.assertTrue(BooleanUtil.xorOfWrap(true, false)); + } + + @SuppressWarnings("ConstantConditions") + @Test + public void isTrueIsFalseTest() { + Assert.assertFalse(BooleanUtil.isTrue(null)); + Assert.assertFalse(BooleanUtil.isFalse(null)); + } + + @Test + public void orOfWrapTest() { + Assert.assertFalse(BooleanUtil.orOfWrap(Boolean.FALSE, null)); + Assert.assertTrue(BooleanUtil.orOfWrap(Boolean.TRUE, null)); + } + + @SuppressWarnings("ConstantConditions") + @Test + public void negateTest() { + Assert.assertFalse(BooleanUtil.negate(Boolean.TRUE)); + Assert.assertTrue(BooleanUtil.negate(Boolean.FALSE)); + + Assert.assertFalse(BooleanUtil.negate(Boolean.TRUE.booleanValue())); + Assert.assertTrue(BooleanUtil.negate(Boolean.FALSE.booleanValue())); + } + + @Test + public void toStringTest() { + Assert.assertEquals("true", BooleanUtil.toStringTrueFalse(true)); + Assert.assertEquals("false", BooleanUtil.toStringTrueFalse(false)); + + Assert.assertEquals("yes", BooleanUtil.toStringYesNo(true)); + Assert.assertEquals("no", BooleanUtil.toStringYesNo(false)); + + Assert.assertEquals("on", BooleanUtil.toStringOnOff(true)); + Assert.assertEquals("off", BooleanUtil.toStringOnOff(false)); + } + + @SuppressWarnings("ConstantConditions") + @Test + public void toBooleanObjectTest(){ + Assert.assertTrue(BooleanUtil.toBooleanObject("yes")); + Assert.assertTrue(BooleanUtil.toBooleanObject("真")); + Assert.assertTrue(BooleanUtil.toBooleanObject("是")); + Assert.assertTrue(BooleanUtil.toBooleanObject("√")); + + Assert.assertNull(BooleanUtil.toBooleanObject(null)); + Assert.assertNull(BooleanUtil.toBooleanObject("不识别")); } }