001// Generated by delombok at Sat Feb 25 17:58:34 UTC 2023 002package io.cui.tools.base; 003 004/** 005 * Utility Class providing some boolean operations. In essence, it simplifies 'or' and 'and' 006 * operations. 007 * Some examples from the unit-tests: 008 * 009 * <pre> 010 * 011 * @Test 012 * void shouldDetectAnyTrue() { 013 * assertTrue(BooleanOperations.isAnyTrue(true)); 014 * assertTrue(BooleanOperations.isAnyTrue(true, true)); 015 * assertTrue(BooleanOperations.isAnyTrue(true, false)); 016 * assertFalse(BooleanOperations.isAnyTrue(false, false)); 017 * // Not really sensible, but defined contract -> Corner Case 018 * assertFalse(BooleanOperations.isAnyTrue()); 019 * assertFalse(BooleanOperations.isAnyTrue(null)); 020 * } 021 * 022 * @Test 023 * void shouldDetectAnyFalse() { 024 * assertFalse(BooleanOperations.isAnyFalse(true)); 025 * assertTrue(BooleanOperations.isAnyFalse(true, false)); 026 * assertTrue(BooleanOperations.isAnyFalse(false, false)); 027 * // Not really sensible, but defined contract -> Corner Case 028 * assertFalse(BooleanOperations.isAnyFalse()); 029 * assertFalse(BooleanOperations.isAnyFalse(null)); 030 * } 031 * 032 * @Test 033 * void shouldDetectAllFalse() { 034 * assertFalse(BooleanOperations.areAllFalse(true)); 035 * assertFalse(BooleanOperations.areAllFalse(true, false)); 036 * assertFalse(BooleanOperations.areAllFalse(true, true)); 037 * assertTrue(BooleanOperations.areAllFalse(false, false)); 038 * // Not really sensible, but defined contract -> Corner Case 039 * assertFalse(BooleanOperations.areAllFalse()); 040 * assertFalse(BooleanOperations.areAllFalse(null)); 041 * } 042 * 043 * @Test 044 * void shouldDetectAllTrue() { 045 * assertTrue(BooleanOperations.areAllTrue(true)); 046 * assertFalse(BooleanOperations.areAllTrue(true, false)); 047 * assertTrue(BooleanOperations.areAllTrue(true, true)); 048 * assertFalse(BooleanOperations.areAllTrue(false, false)); 049 * // Not really sensible, but defined contract -> Corner Case 050 * assertTrue(BooleanOperations.areAllTrue()); 051 * assertTrue(BooleanOperations.areAllTrue(null)); 052 * } 053 * </pre> 054 * 055 * 056 * 057 * @author Eugen Fischer 058 * @author Oliver Wolff 059 */ 060public final class BooleanOperations { 061 private static boolean containsTrue(final boolean... parameter) { 062 if (isEmpty(parameter)) { 063 return false; 064 } 065 for (boolean element : parameter) { 066 if (element) { 067 return true; 068 } 069 } 070 return false; 071 } 072 073 private static boolean isEmpty(boolean[] parameter) { 074 return null == parameter || 0 == parameter.length; 075 } 076 077 private static boolean containsFalse(final boolean... parameter) { 078 if (isEmpty(parameter)) { 079 return false; 080 } 081 for (boolean element : parameter) { 082 if (!element) { 083 return true; 084 } 085 } 086 return false; 087 } 088 089 /** 090 * Shorthand for checking if at least one of the given booleans is {@code true} 091 * 092 * @param parameter ellipsis of boolean values 093 * @return {@code true} if one of parameters is {@code true}, {@code false} otherwise 094 */ 095 public static boolean isAnyTrue(final boolean... parameter) { 096 return containsTrue(parameter); 097 } 098 099 /** 100 * Shorthand for checking if all the given booleans are {@code true} 101 * 102 * @param parameter ellipsis of boolean values 103 * @return {@code true} if all parameters are {@code true} or no parameter is given ratio: no 104 * given false, {@code false} otherwise 105 */ 106 public static boolean areAllTrue(final boolean... parameter) { 107 if (isEmpty(parameter)) { 108 return true; 109 } 110 return !containsFalse(parameter); 111 } 112 113 /** 114 * Shorthand for checking if all given booleans are {@code false} 115 * 116 * @param parameter ellipsis of boolean values 117 * @return {@code true} if all parameters are {@code false}, {@code true} otherwise. 118 * {@code false} if no parameter is passed, ratio: no given false 119 */ 120 public static boolean areAllFalse(final boolean... parameter) { 121 if (isEmpty(parameter)) { 122 return false; 123 } 124 return !containsTrue(parameter); 125 } 126 127 /** 128 * Shorthand for checking if at least one of the given booleans is {@code false} 129 * 130 * @param parameter ellipsis of boolean values 131 * @return {@code true} if one of parameters is {@code false}, {@code true} otherwise 132 */ 133 public static boolean isAnyFalse(final boolean... parameter) { 134 return containsFalse(parameter); 135 } 136 137 /** 138 * @param value to be checked 139 * @return true, if the given value represents a boolean value i.e. "true" or "false" ignoring 140 * case. 141 */ 142 public static boolean isValidBoolean(String value) { 143 return Boolean.TRUE.toString().equalsIgnoreCase(value) || Boolean.FALSE.toString().equalsIgnoreCase(value); 144 } 145 146 @java.lang.SuppressWarnings("all") 147 @lombok.Generated 148 private BooleanOperations() { 149 throw new java.lang.UnsupportedOperationException("This is a utility class and cannot be instantiated"); 150 } 151}