Skip to content

Commit 8008597

Browse files
committed
Helper methods for null to primitive default
1 parent 947dce2 commit 8008597

2 files changed

Lines changed: 126 additions & 1 deletion

File tree

src/main/org/firebirdsql/jaybird/util/Primitives.java

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
// SPDX-FileCopyrightText: Copyright 2022-2023 Mark Rotteveel
1+
// SPDX-FileCopyrightText: Copyright 2022-2026 Mark Rotteveel
22
// SPDX-License-Identifier: LGPL-2.1-or-later
33
package org.firebirdsql.jaybird.util;
44

5+
import org.jspecify.annotations.Nullable;
6+
57
import java.util.ArrayList;
68
import java.util.List;
79

@@ -65,4 +67,32 @@ public static List<Long> toLongList(int[] intValues) {
6567
return result;
6668
}
6769

70+
public static boolean orFalse(@Nullable Boolean x) {
71+
return Boolean.TRUE.equals(x);
72+
}
73+
74+
public static byte orZero(@Nullable Byte x) {
75+
return x != null ? x : 0;
76+
}
77+
78+
public static short orZero(@Nullable Short x) {
79+
return x != null ? x : 0;
80+
}
81+
82+
public static int orZero(@Nullable Integer x) {
83+
return x != null ? x : 0;
84+
}
85+
86+
public static long orZero(@Nullable Long x) {
87+
return x != null ? x : 0L;
88+
}
89+
90+
public static float orZero(@Nullable Float x) {
91+
return x != null ? x : 0f;
92+
}
93+
94+
public static double orZero(@Nullable Double x) {
95+
return x != null ? x : 0d;
96+
}
97+
6898
}
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
// SPDX-FileCopyrightText: Copyright 2026 Mark Rotteveel
2+
// SPDX-License-Identifier: LGPL-2.1-or-later
3+
package org.firebirdsql.jaybird.util;
4+
5+
import org.junit.jupiter.api.Test;
6+
import org.junit.jupiter.params.ParameterizedTest;
7+
import org.junit.jupiter.params.provider.ValueSource;
8+
9+
import static org.junit.jupiter.api.Assertions.assertEquals;
10+
import static org.junit.jupiter.api.Assertions.assertFalse;
11+
12+
/**
13+
* Tests for {@link Primitives}.
14+
*/
15+
@SuppressWarnings("ObviousNullCheck")
16+
class PrimitivesTest {
17+
18+
@ParameterizedTest
19+
@ValueSource(booleans = { true, false })
20+
void orFalse(boolean value) {
21+
assertEquals(value, Primitives.orFalse(value));
22+
}
23+
24+
@Test
25+
void orFalse_null() {
26+
assertFalse(Primitives.orFalse(null));
27+
}
28+
29+
@ParameterizedTest
30+
@ValueSource(bytes = { -1, 0, 1})
31+
void orZero_Byte(byte value) {
32+
assertEquals(value, Primitives.orZero(value));
33+
}
34+
35+
@Test
36+
void orZero_Byte_null() {
37+
assertEquals(0, Primitives.orZero((Byte) null));
38+
}
39+
40+
@ParameterizedTest
41+
@ValueSource(shorts = { -1, 0, 1})
42+
void orZero_Short(short value) {
43+
assertEquals(value, Primitives.orZero(value));
44+
}
45+
46+
@Test
47+
void orZero_Short_null() {
48+
assertEquals(0, Primitives.orZero((Short) null));
49+
}
50+
51+
@ParameterizedTest
52+
@ValueSource(ints = { -1, 0, 1})
53+
void orZero_Integer(int value) {
54+
assertEquals(value, Primitives.orZero(value));
55+
}
56+
57+
@Test
58+
void orZero_Integer_null() {
59+
assertEquals(0, Primitives.orZero((Integer) null));
60+
}
61+
62+
@ParameterizedTest
63+
@ValueSource(longs = { -1, 0, 1})
64+
void orZero_Long(long value) {
65+
assertEquals(value, Primitives.orZero(value));
66+
}
67+
68+
@Test
69+
void orZero_Long_null() {
70+
assertEquals(0, Primitives.orZero((Long) null));
71+
}
72+
73+
@ParameterizedTest
74+
@ValueSource(floats = { -1f, 0f, 1f})
75+
void orZero_Float(float value) {
76+
assertEquals(value, Primitives.orZero(value));
77+
}
78+
79+
@Test
80+
void orZero_Float_null() {
81+
assertEquals(0f, Primitives.orZero((Float) null));
82+
}
83+
84+
@ParameterizedTest
85+
@ValueSource(doubles = { -1d, 0d, 1d})
86+
void orZero_Double(double value) {
87+
assertEquals(value, Primitives.orZero(value));
88+
}
89+
90+
@Test
91+
void orZero_Double_null() {
92+
assertEquals(0d, Primitives.orZero((Double) null));
93+
}
94+
95+
}

0 commit comments

Comments
 (0)