@@ -54,6 +54,55 @@ void genericSearchFindsExistingTarget() {
5454 assertFalse (SearchSortedMatrix .search (matrix , 20 , Comparator .naturalOrder ()));
5555 }
5656
57+ @ Test
58+ void genericNullMatrixReturnsFalse () {
59+ assertFalse (SearchSortedMatrix .search ((Integer [][]) null , 42 , Comparator .naturalOrder ()));
60+ }
61+
62+ @ Test
63+ void genericEmptyMatrixReturnsFalse () {
64+ assertFalse (SearchSortedMatrix .search (new Integer [0 ][], 42 , Comparator .naturalOrder ()));
65+ }
66+
67+ @ Test
68+ void genericEmptyFirstRowReturnsFalse () {
69+ assertFalse (SearchSortedMatrix .search (new Integer [][] {{}}, 42 , Comparator .naturalOrder ()));
70+ }
71+
72+ @ Test
73+ void genericNullFirstRowReturnsFalse () {
74+ assertFalse (SearchSortedMatrix .search (new Integer [][] {null }, 42 , Comparator .naturalOrder ()));
75+ }
76+
77+ @ Test
78+ void genericRejectsJaggedMatrix () {
79+ final Integer [][] jagged = {
80+ {1 , 2 , 3 },
81+ {4 , 5 },
82+ };
83+
84+ assertThrows (IllegalArgumentException .class , () -> SearchSortedMatrix .search (jagged , 5 , Comparator .naturalOrder ()));
85+ }
86+
87+ @ Test
88+ void genericRejectsNullRow () {
89+ final Integer [][] hasNullRow = {
90+ {1 , 2 , 3 },
91+ null ,
92+ };
93+
94+ assertThrows (IllegalArgumentException .class , () -> SearchSortedMatrix .search (hasNullRow , 2 , Comparator .naturalOrder ()));
95+ }
96+
97+ @ Test
98+ void genericNullComparatorThrows () {
99+ final Integer [][] matrix = {
100+ {1 , 2 , 3 },
101+ };
102+
103+ assertThrows (NullPointerException .class , () -> SearchSortedMatrix .search (matrix , 2 , null ));
104+ }
105+
57106 @ Test
58107 void returnsFalseWhenTargetDoesNotExist () {
59108 final int [][] matrix = {
0 commit comments