Skip to content

Commit 8662745

Browse files
committed
Prevent overflow in AreSame comparison
1 parent abd8055 commit 8662745

2 files changed

Lines changed: 8 additions & 1 deletion

File tree

src/main/java/kyu6/AreSame.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,11 @@ public class AreSame {
1212
public static boolean comp(int[] a, int[] b) {
1313
return a != null && b != null && Arrays.equals(
1414
Arrays.stream(a)
15-
.map(i -> i * i)
15+
.mapToLong(i -> (long) i * i)
1616
.sorted()
1717
.toArray(),
1818
Arrays.stream(b)
19+
.mapToLong(i -> i)
1920
.sorted()
2021
.toArray());
2122
}

src/test/java/kyu6/AreSameTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@
1717
import static kyu6.AreSame.*;
1818
@Tag("smoke")
1919
public class AreSameTest {
20+
@Test
21+
void rejectsOverflowedSquares() {
22+
assertFalse(comp(new int[]{46341}, new int[]{-2147479015}));
23+
assertFalse(comp(new int[]{Integer.MIN_VALUE}, new int[]{0}));
24+
}
25+
2026
@Test
2127
void smokeTestsShouldExecuteApi() {
2228
quality.SmokeMethodTestHarness.verify(kyu6.AreSame.class);

0 commit comments

Comments
 (0)