mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-18 13:10:44 +00:00
Add good getFirstNonNull method
This commit is contained in:
@ -728,4 +728,29 @@ public class ValueUtils
|
||||
.with(ChronoField.NANO_OF_DAY, 0);
|
||||
return (startOfMonth.toInstant(zone.getRules().getOffset(computerTime)));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Return the first argument that isn't null.
|
||||
** If all were null, return null.
|
||||
*******************************************************************************/
|
||||
public static <T> T getFirstNonNull(T... ts)
|
||||
{
|
||||
if(ts == null || ts.length == 0)
|
||||
{
|
||||
return (null);
|
||||
}
|
||||
|
||||
for(T t : ts)
|
||||
{
|
||||
if(t != null)
|
||||
{
|
||||
return (t);
|
||||
}
|
||||
}
|
||||
|
||||
return (null);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -268,8 +268,28 @@ class ValueUtilsTest extends BaseTest
|
||||
assertEquals("1", ValueUtils.getValueAsType(String.class, 1));
|
||||
assertEquals(BigDecimal.ONE, ValueUtils.getValueAsType(BigDecimal.class, 1));
|
||||
assertEquals(true, ValueUtils.getValueAsType(Boolean.class, "true"));
|
||||
assertArrayEquals("a".getBytes(StandardCharsets.UTF_8), ValueUtils.getValueAsType(byte[].class, "a"));
|
||||
assertArrayEquals("a" .getBytes(StandardCharsets.UTF_8), ValueUtils.getValueAsType(byte[].class, "a"));
|
||||
assertThrows(QValueException.class, () -> ValueUtils.getValueAsType(Serializable.class, 1));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
@Test
|
||||
void testGetFirstNonNull()
|
||||
{
|
||||
assertEquals(0, ValueUtils.getFirstNonNull(0));
|
||||
assertEquals(1, ValueUtils.getFirstNonNull(1, 2));
|
||||
assertEquals(2, ValueUtils.getFirstNonNull(null, 2));
|
||||
assertEquals(3, ValueUtils.getFirstNonNull(null, null, 3));
|
||||
|
||||
assertNull(ValueUtils.getFirstNonNull());
|
||||
assertNull(ValueUtils.getFirstNonNull(new Object[] { }));
|
||||
assertNull(ValueUtils.getFirstNonNull(null));
|
||||
assertNull(ValueUtils.getFirstNonNull(null, null));
|
||||
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user