@@ -103,7 +103,7 @@ def test_generate_knntriplets_under_edge(k_genuine, k_impostor, T_test):
103103
104104
105105@pytest .mark .parametrize ("k_genuine, k_impostor," ,
106- [(2 , 3 ), (3 , 3 ), (2 , 4 ), (3 , 4 )])
106+ [(3 , 3 ), (2 , 4 ), (3 , 4 ), (10 , 9 ), ( 144 , 33 )])
107107def test_generate_knntriplets (k_genuine , k_impostor ):
108108 """Checks edge and over the edge cases of knn triplet construction with not
109109 enough neighbors"""
@@ -118,8 +118,23 @@ def test_generate_knntriplets(k_genuine, k_impostor):
118118 X = np .array ([[0 , 0 ], [2 , 2 ], [4 , 4 ], [8 , 8 ], [16 , 16 ], [32 , 32 ], [33 , 33 ]])
119119 y = np .array ([1 , 1 , 1 , 2 , 2 , 2 , - 1 ])
120120
121- T = Constraints (y ).generate_knntriplets (X , k_genuine , k_impostor )
122-
121+ msg1 = ("The class 1 has 3 elements, which is not sufficient to "
122+ f"generate { k_genuine + 1 } genuine neighbors "
123+ "as specified by k_genuine" )
124+ msg2 = ("The class 2 has 3 elements, which is not sufficient to "
125+ f"generate { k_genuine + 1 } genuine neighbors "
126+ "as specified by k_genuine" )
127+ msg3 = ("The class 1 has 3 elements of other classes, which is "
128+ f"not sufficient to generate { k_impostor } impostor "
129+ "neighbors as specified by k_impostor" )
130+ msg4 = ("The class 2 has 3 elements of other classes, which is "
131+ f"not sufficient to generate { k_impostor } impostor "
132+ "neighbors as specified by k_impostor" )
133+ msgs = [msg1 , msg2 , msg3 , msg4 ]
134+ with pytest .warns (UserWarning ) as user_warning :
135+ T = Constraints (y ).generate_knntriplets (X , k_genuine , k_impostor )
136+ assert any ([[msg in str (warn .message ) for msg in msgs ]
137+ for warn in user_warning ])
123138 assert np .array_equal (sorted (T .tolist ()), T_test )
124139
125140
0 commit comments