Skip to content

Commit 7cd1ff2

Browse files
authored
fix(math): handle null and empty inputs in average methods (#760)
1 parent fb15622 commit 7cd1ff2

2 files changed

Lines changed: 33 additions & 0 deletions

File tree

geaflow/geaflow-utils/src/main/java/org/apache/geaflow/utils/math/MathUtil.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,9 @@ private static long[] toArray(List<Long> input) {
184184
* @return The average(values)
185185
*/
186186
public static long average(long[] values) {
187+
if (values == null || values.length == 0) {
188+
return 0;
189+
}
187190
//Find average
188191
double sum = 0d;
189192
for (long value : values) {
@@ -198,6 +201,9 @@ public static long average(long[] values) {
198201
* @return The average(values)
199202
*/
200203
public static long average(List<Long> values) {
204+
if (values == null || values.isEmpty()) {
205+
return 0;
206+
}
201207
//Find average
202208
double sum = 0d;
203209
for (long value : values) {

geaflow/geaflow-utils/src/test/java/org/apache/geaflow/utils/math/MathUtilTest.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
package org.apache.geaflow.utils.math;
2121

22+
import java.util.ArrayList;
2223
import java.util.Arrays;
2324
import java.util.List;
2425
import org.testng.Assert;
@@ -69,6 +70,32 @@ public void testAverage() {
6970
Assert.assertEquals(7, result);
7071
}
7172

73+
@Test
74+
public void testAverageEmptyArray() {
75+
// Test empty array returns 0
76+
long[] emptyArray = new long[0];
77+
long result = MathUtil.average(emptyArray);
78+
Assert.assertEquals(0, result);
79+
80+
// Test null array returns 0
81+
long[] nullArray = null;
82+
result = MathUtil.average(nullArray);
83+
Assert.assertEquals(0, result);
84+
}
85+
86+
@Test
87+
public void testAverageEmptyList() {
88+
// Test empty list returns 0
89+
List<Long> emptyList = new ArrayList<>();
90+
long result = MathUtil.average(emptyList);
91+
Assert.assertEquals(0, result);
92+
93+
// Test null list returns 0
94+
List<Long> nullList = null;
95+
result = MathUtil.average(nullList);
96+
Assert.assertEquals(0, result);
97+
}
98+
7299
@Test
73100
public void testMedian() {
74101
List<Long> array = Arrays.asList(1L, 2L, 8L, 9L, 13L, 3L, 12L, 4L, 7L, 6L, 11L, 10L, 5L);

0 commit comments

Comments
 (0)