From 2c1ec6c272cf71246d0d09275b8a35293b78d41e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ozan=20=C3=96zayranci?= <38402864+oozan@users.noreply.github.com> Date: Wed, 22 Jul 2026 18:23:50 +0300 Subject: [PATCH 1/3] fix: reject negative input in SumOfSquares --- src/main/java/com/thealgorithms/maths/SumOfSquares.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/com/thealgorithms/maths/SumOfSquares.java b/src/main/java/com/thealgorithms/maths/SumOfSquares.java index c050d5a75f7b..e9022271d454 100644 --- a/src/main/java/com/thealgorithms/maths/SumOfSquares.java +++ b/src/main/java/com/thealgorithms/maths/SumOfSquares.java @@ -18,8 +18,13 @@ private SumOfSquares() { * * @param n the target number * @return minimum number of squares needed + * @throws IllegalArgumentException if {@code n} is negative */ public static int minSquares(int n) { + if (n < 0) { + throw new IllegalArgumentException("Input must be non-negative"); + } + if (isPerfectSquare(n)) { return 1; } From 6c09d56a6243735b111231c59521014845fbbc57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ozan=20=C3=96zayranci?= <38402864+oozan@users.noreply.github.com> Date: Wed, 22 Jul 2026 18:23:52 +0300 Subject: [PATCH 2/3] test: cover negative SumOfSquares input --- .../java/com/thealgorithms/maths/SumOfSquaresTest.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/thealgorithms/maths/SumOfSquaresTest.java b/src/test/java/com/thealgorithms/maths/SumOfSquaresTest.java index 834fe61a049e..98674d05708c 100644 --- a/src/test/java/com/thealgorithms/maths/SumOfSquaresTest.java +++ b/src/test/java/com/thealgorithms/maths/SumOfSquaresTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.maths; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; import org.junit.jupiter.api.Test; @@ -63,6 +64,11 @@ void testLargerNumbers() { @Test void testEdgeCases() { // Test edge case - assertEquals(1, SumOfSquares.minSquares(0)); // 0^2 + + @Test + void testNegativeInput() { + assertThrows(IllegalArgumentException.class, () -> SumOfSquares.minSquares(-1)); + } + assertEquals(1, SumOfSquares.minSquares(0)); // 0^2 } } From 90cb3eb7af32174b51ab6c2dea263afa9c47cb8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ozan=20=C3=96zayranci?= <38402864+oozan@users.noreply.github.com> Date: Wed, 22 Jul 2026 18:30:57 +0300 Subject: [PATCH 3/3] fix: correct SumOfSquares test structure --- src/test/java/com/thealgorithms/maths/SumOfSquaresTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/java/com/thealgorithms/maths/SumOfSquaresTest.java b/src/test/java/com/thealgorithms/maths/SumOfSquaresTest.java index 98674d05708c..03f9d60c9385 100644 --- a/src/test/java/com/thealgorithms/maths/SumOfSquaresTest.java +++ b/src/test/java/com/thealgorithms/maths/SumOfSquaresTest.java @@ -64,11 +64,11 @@ void testLargerNumbers() { @Test void testEdgeCases() { // Test edge case - + assertEquals(1, SumOfSquares.minSquares(0)); // 0^2 + } + @Test void testNegativeInput() { assertThrows(IllegalArgumentException.class, () -> SumOfSquares.minSquares(-1)); } - assertEquals(1, SumOfSquares.minSquares(0)); // 0^2 - } }