@@ -216,3 +216,43 @@ def test_score_manager_constraint_analysis_map():
216
216
217
217
constraint_analysis = score_analysis .constraint_analysis (ConstraintRef ('package' , 'Maximize Value' ))
218
218
assert constraint_analysis .constraint_name == 'Maximize Value'
219
+ assert constraint_analysis .match_count == 3
220
+
221
+
222
+ ignored_java_functions = {
223
+ 'equals' ,
224
+ 'getClass' ,
225
+ 'hashCode' ,
226
+ 'notify' ,
227
+ 'notifyAll' ,
228
+ 'toString' ,
229
+ 'wait' ,
230
+ 'compareTo' ,
231
+ }
232
+
233
+
234
+ def test_has_all_methods ():
235
+ missing = []
236
+ for python_type , java_type in ((ScoreExplanation , JavaScoreExplanation ),
237
+ (ScoreAnalysis , JavaScoreAnalysis ),
238
+ (ConstraintAnalysis , JavaConstraintAnalysis ),
239
+ (ScoreExplanation , JavaScoreExplanation ),
240
+ (ConstraintMatch , JavaConstraintMatch ),
241
+ (ConstraintMatchTotal , JavaConstraintMatchTotal ),
242
+ (Indictment , JavaIndictment )):
243
+ for function_name , function_impl in inspect .getmembers (java_type , inspect .isfunction ):
244
+ if function_name in ignored_java_functions :
245
+ continue
246
+
247
+ snake_case_name = re .sub ('(.)([A-Z][a-z]+)' , r'\1_\2' , function_name )
248
+ snake_case_name = re .sub ('([a-z0-9])([A-Z])' , r'\1_\2' , snake_case_name ).lower ()
249
+ snake_case_name_without_prefix = re .sub ('(.)([A-Z][a-z]+)' , r'\1_\2' , function_name [3 :] if function_name .startswith ("get" ) else function_name )
250
+ snake_case_name_without_prefix = re .sub ('([a-z0-9])([A-Z])' , r'\1_\2' , snake_case_name_without_prefix ).lower ()
251
+ if not hasattr (python_type , snake_case_name ) and not hasattr (python_type , snake_case_name_without_prefix ):
252
+ missing .append ((java_type , python_type , snake_case_name ))
253
+
254
+ if missing :
255
+ assertion_msg = ''
256
+ for java_type , python_type , snake_case_name in missing :
257
+ assertion_msg += f'{ python_type } is missing a method ({ snake_case_name } ) from java_type ({ java_type } ).)\n '
258
+ raise AssertionError (assertion_msg )
0 commit comments