Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014aUaQeLnwbb1zTpN7kHeat
139 lines
6.4 KiB
ABAP
139 lines
6.4 KiB
ABAP
CLASS {{p}}t41_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
|
|
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
|
PRIVATE SECTION.
|
|
METHODS call_score
|
|
IMPORTING iv_years TYPE i iv_degree TYPE string iv_match TYPE i
|
|
EXPORTING ev_score TYPE i ev_rating TYPE string ev_subrc TYPE sysubrc.
|
|
METHODS class_experience_points FOR TESTING.
|
|
METHODS class_education_points FOR TESTING.
|
|
METHODS class_skill_rounding FOR TESTING.
|
|
METHODS class_rating_limits FOR TESTING.
|
|
METHODS class_invalid_years FOR TESTING.
|
|
METHODS class_invalid_match FOR TESTING.
|
|
METHODS class_invalid_degree FOR TESTING.
|
|
METHODS func_returns_result FOR TESTING.
|
|
METHODS func_raises_years FOR TESTING.
|
|
METHODS func_raises_match FOR TESTING.
|
|
METHODS func_raises_degree FOR TESTING.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS {{p}}t41_hidden IMPLEMENTATION.
|
|
|
|
METHOD call_score.
|
|
CLEAR: ev_score, ev_rating.
|
|
CALL FUNCTION '{{P}}APPL_SCORE'
|
|
EXPORTING
|
|
iv_years = iv_years
|
|
iv_degree = iv_degree
|
|
iv_match = iv_match
|
|
IMPORTING
|
|
ev_score = ev_score
|
|
ev_rating = ev_rating
|
|
EXCEPTIONS
|
|
invalid_years = 1
|
|
invalid_match = 2
|
|
invalid_degree = 3
|
|
OTHERS = 4.
|
|
ev_subrc = sy-subrc.
|
|
ENDMETHOD.
|
|
|
|
METHOD class_experience_points.
|
|
DATA(lo_scorer) = NEW {{p}}app_scorer( ).
|
|
DATA(ls_two) = lo_scorer->evaluate( iv_years = 2 iv_degree = 'VOC' iv_match = 0 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 26 act = ls_two-score ).
|
|
DATA(ls_cap) = lo_scorer->evaluate( iv_years = 9 iv_degree = 'VOC' iv_match = 0 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 50 act = ls_cap-score ).
|
|
ENDMETHOD.
|
|
|
|
METHOD class_education_points.
|
|
DATA(lo_scorer) = NEW {{p}}app_scorer( ).
|
|
DATA(ls_phd) = lo_scorer->evaluate( iv_years = 0 iv_degree = 'PHD' iv_match = 0 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 30 act = ls_phd-score ).
|
|
DATA(ls_mas) = lo_scorer->evaluate( iv_years = 0 iv_degree = 'MAS' iv_match = 0 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 25 act = ls_mas-score ).
|
|
DATA(ls_bac) = lo_scorer->evaluate( iv_years = 0 iv_degree = 'BAC' iv_match = 0 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 20 act = ls_bac-score ).
|
|
DATA(ls_voc) = lo_scorer->evaluate( iv_years = 0 iv_degree = 'VOC' iv_match = 0 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 10 act = ls_voc-score ).
|
|
ENDMETHOD.
|
|
|
|
METHOD class_skill_rounding.
|
|
DATA(lo_scorer) = NEW {{p}}app_scorer( ).
|
|
DATA(ls_full) = lo_scorer->evaluate( iv_years = 0 iv_degree = 'VOC' iv_match = 100 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 40 act = ls_full-score ).
|
|
DATA(ls_half) = lo_scorer->evaluate( iv_years = 0 iv_degree = 'VOC' iv_match = 35 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 21 act = ls_half-score ).
|
|
DATA(ls_down) = lo_scorer->evaluate( iv_years = 0 iv_degree = 'VOC' iv_match = 33 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 20 act = ls_down-score ).
|
|
DATA(ls_low) = lo_scorer->evaluate( iv_years = 0 iv_degree = 'VOC' iv_match = 1 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 10 act = ls_low-score ).
|
|
ENDMETHOD.
|
|
|
|
METHOD class_rating_limits.
|
|
DATA(lo_scorer) = NEW {{p}}app_scorer( ).
|
|
DATA(ls_invite) = lo_scorer->evaluate( iv_years = 5 iv_degree = 'MAS' iv_match = 33 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 75 act = ls_invite-score ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'INVITE' act = ls_invite-rating ).
|
|
DATA(ls_review) = lo_scorer->evaluate( iv_years = 5 iv_degree = 'MAS' iv_match = 30 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 74 act = ls_review-score ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'REVIEW' act = ls_review-rating ).
|
|
DATA(ls_edge) = lo_scorer->evaluate( iv_years = 5 iv_degree = 'VOC' iv_match = 0 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 50 act = ls_edge-score ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'REVIEW' act = ls_edge-rating ).
|
|
DATA(ls_low) = lo_scorer->evaluate( iv_years = 3 iv_degree = 'MAS' iv_match = 0 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 49 act = ls_low-score ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'REJECT' act = ls_low-rating ).
|
|
ENDMETHOD.
|
|
|
|
METHOD class_invalid_years.
|
|
DATA(lo_scorer) = NEW {{p}}app_scorer( ).
|
|
DATA(ls_result) = lo_scorer->evaluate( iv_years = -1 iv_degree = 'PHD' iv_match = 100 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'YEAR' act = ls_result-status ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = ls_result-score ).
|
|
cl_abap_unit_assert=>assert_initial( act = ls_result-rating ).
|
|
ENDMETHOD.
|
|
|
|
METHOD class_invalid_match.
|
|
DATA(lo_scorer) = NEW {{p}}app_scorer( ).
|
|
DATA(ls_high) = lo_scorer->evaluate( iv_years = 1 iv_degree = 'PHD' iv_match = 101 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'MATC' act = ls_high-status ).
|
|
DATA(ls_low) = lo_scorer->evaluate( iv_years = 1 iv_degree = 'PHD' iv_match = -1 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'MATC' act = ls_low-status ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = ls_low-score ).
|
|
ENDMETHOD.
|
|
|
|
METHOD class_invalid_degree.
|
|
DATA(lo_scorer) = NEW {{p}}app_scorer( ).
|
|
DATA(ls_result) = lo_scorer->evaluate( iv_years = 1 iv_degree = 'XYZ' iv_match = 50 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'DEGR' act = ls_result-status ).
|
|
cl_abap_unit_assert=>assert_initial( act = ls_result-rating ).
|
|
ENDMETHOD.
|
|
|
|
METHOD func_returns_result.
|
|
call_score( EXPORTING iv_years = 5 iv_degree = 'PHD' iv_match = 100
|
|
IMPORTING ev_score = DATA(lv_score) ev_rating = DATA(lv_rating) ev_subrc = DATA(lv_rc) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rc ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 100 act = lv_score ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'INVITE' act = lv_rating ).
|
|
ENDMETHOD.
|
|
|
|
METHOD func_raises_years.
|
|
call_score( EXPORTING iv_years = -3 iv_degree = 'PHD' iv_match = 100
|
|
IMPORTING ev_subrc = DATA(lv_rc) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_rc ).
|
|
ENDMETHOD.
|
|
|
|
METHOD func_raises_match.
|
|
call_score( EXPORTING iv_years = 5 iv_degree = 'PHD' iv_match = 200
|
|
IMPORTING ev_subrc = DATA(lv_rc) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 2 act = lv_rc ).
|
|
ENDMETHOD.
|
|
|
|
METHOD func_raises_degree.
|
|
call_score( EXPORTING iv_years = 5 iv_degree = 'ABC' iv_match = 100
|
|
IMPORTING ev_subrc = DATA(lv_rc) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 3 act = lv_rc ).
|
|
ENDMETHOD.
|
|
ENDCLASS.
|