11package com .thealgorithms .maths ;
22
33import static org .junit .jupiter .api .Assertions .assertEquals ;
4+
45import org .junit .jupiter .api .Test ;
56
67/**
78 * Test class for SumOfSquares
9+ *
810 * @author BEASTSHRIRAM
911 */
1012class SumOfSquaresTest {
1113
1214 @ Test
1315 void testPerfectSquares () {
1416 // Perfect squares should return 1
15- assertEquals (1 , SumOfSquares .minSquares (1 )); // 1^2
16- assertEquals (1 , SumOfSquares .minSquares (4 )); // 2^2
17- assertEquals (1 , SumOfSquares .minSquares (9 )); // 3^2
18- assertEquals (1 , SumOfSquares .minSquares (16 )); // 4^2
19- assertEquals (1 , SumOfSquares .minSquares (25 )); // 5^2
17+ assertEquals (1 , SumOfSquares .minSquares (1 )); // 1^2
18+ assertEquals (1 , SumOfSquares .minSquares (4 )); // 2^2
19+ assertEquals (1 , SumOfSquares .minSquares (9 )); // 3^2
20+ assertEquals (1 , SumOfSquares .minSquares (16 )); // 4^2
21+ assertEquals (1 , SumOfSquares .minSquares (25 )); // 5^2
2022 }
2123
2224 @ Test
2325 void testTwoSquares () {
2426 // Numbers that can be expressed as sum of two squares
25- assertEquals (2 , SumOfSquares .minSquares (2 )); // 1^2 + 1^2
26- assertEquals (2 , SumOfSquares .minSquares (5 )); // 1^2 + 2^2
27- assertEquals (2 , SumOfSquares .minSquares (8 )); // 2^2 + 2^2
28- assertEquals (2 , SumOfSquares .minSquares (10 )); // 1^2 + 3^2
29- assertEquals (2 , SumOfSquares .minSquares (13 )); // 2^2 + 3^2
27+ assertEquals (2 , SumOfSquares .minSquares (2 )); // 1^2 + 1^2
28+ assertEquals (2 , SumOfSquares .minSquares (5 )); // 1^2 + 2^2
29+ assertEquals (2 , SumOfSquares .minSquares (8 )); // 2^2 + 2^2
30+ assertEquals (2 , SumOfSquares .minSquares (10 )); // 1^2 + 3^2
31+ assertEquals (2 , SumOfSquares .minSquares (13 )); // 2^2 + 3^2
3032 }
3133
3234 @ Test
3335 void testThreeSquares () {
3436 // Numbers that require exactly three squares
35- assertEquals (3 , SumOfSquares .minSquares (3 )); // 1^2 + 1^2 + 1^2
36- assertEquals (3 , SumOfSquares .minSquares (6 )); // 1^2 + 1^2 + 2^2
37- assertEquals (3 , SumOfSquares .minSquares (11 )); // 1^2 + 1^2 + 3^2
38- assertEquals (3 , SumOfSquares .minSquares (12 )); // 2^2 + 2^2 + 2^2
39- assertEquals (3 , SumOfSquares .minSquares (14 )); // 1^2 + 2^2 + 3^2
37+ assertEquals (3 , SumOfSquares .minSquares (3 )); // 1^2 + 1^2 + 1^2
38+ assertEquals (3 , SumOfSquares .minSquares (6 )); // 1^2 + 1^2 + 2^2
39+ assertEquals (3 , SumOfSquares .minSquares (11 )); // 1^2 + 1^2 + 3^2
40+ assertEquals (3 , SumOfSquares .minSquares (12 )); // 2^2 + 2^2 + 2^2
41+ assertEquals (3 , SumOfSquares .minSquares (14 )); // 1^2 + 2^2 + 3^2
4042 }
4143
4244 @ Test
4345 void testFourSquares () {
4446 // Numbers that require exactly four squares (form 4^a * (8b + 7))
45- assertEquals (4 , SumOfSquares .minSquares (7 )); // 1^2 + 1^2 + 1^2 + 2^2
46- assertEquals (4 , SumOfSquares .minSquares (15 )); // 1^2 + 1^2 + 2^2 + 3^2
47- assertEquals (4 , SumOfSquares .minSquares (23 )); // 1^2 + 1^2 + 3^2 + 3^2
48- assertEquals (4 , SumOfSquares .minSquares (28 )); // 4 * 7, so needs 4 squares
49- assertEquals (4 , SumOfSquares .minSquares (31 )); // 1^2 + 2^2 + 3^2 + 3^2
47+ assertEquals (4 , SumOfSquares .minSquares (7 )); // 1^2 + 1^2 + 1^2 + 2^2
48+ assertEquals (4 , SumOfSquares .minSquares (15 )); // 1^2 + 1^2 + 2^2 + 3^2
49+ assertEquals (4 , SumOfSquares .minSquares (23 )); // 1^2 + 1^2 + 3^2 + 3^2
50+ assertEquals (4 , SumOfSquares .minSquares (28 )); // 4 * 7, so needs 4 squares
51+ assertEquals (4 , SumOfSquares .minSquares (31 )); // 1^2 + 2^2 + 3^2 + 3^2
5052 }
5153
5254 @ Test
5355 void testLargerNumbers () {
5456 // Test some larger numbers
5557 assertEquals (1 , SumOfSquares .minSquares (100 )); // 10^2
56- assertEquals (2 , SumOfSquares .minSquares (65 )); // 1^2 + 8^2
57- assertEquals (3 , SumOfSquares .minSquares (19 )); // 1^2 + 3^2 + 3^2
58- assertEquals (4 , SumOfSquares .minSquares (60 )); // 4 * 15, and 15 = 8*1 + 7
58+ assertEquals (2 , SumOfSquares .minSquares (65 )); // 1^2 + 8^2
59+ assertEquals (3 , SumOfSquares .minSquares (19 )); // 1^2 + 3^2 + 3^2
60+ assertEquals (4 , SumOfSquares .minSquares (60 )); // 4 * 15, and 15 = 8*1 + 7
5961 }
6062
6163 @ Test
6264 void testEdgeCases () {
6365 // Test edge case
64- assertEquals (1 , SumOfSquares .minSquares (0 )); // 0^2
66+ assertEquals (1 , SumOfSquares .minSquares (0 )); // 0^2
6567 }
6668}
0 commit comments