CLASS ltc_claim_checker DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. DATA mo_cut TYPE REF TO {{p}}claim_checker. METHODS setup. METHODS claim RETURNING VALUE(rs_claim) TYPE {{p}}claim_checker=>ty_claim. METHODS payout IMPORTING is_claim TYPE {{p}}claim_checker=>ty_claim RETURNING VALUE(rv_payout) TYPE {{p}}claim_checker=>ty_amount. METHODS pays_claim FOR TESTING. METHODS caps_payout FOR TESTING. METHODS rejects_policy FOR TESTING. METHODS rejects_late FOR TESTING. METHODS rejects_old_car FOR TESTING. METHODS rejects_photos FOR TESTING. METHODS rejects_damage FOR TESTING. METHODS rejects_deductible FOR TESTING. ENDCLASS. CLASS ltc_claim_checker IMPLEMENTATION. METHOD setup. mo_cut = NEW {{p}}claim_checker( ). ENDMETHOD. METHOD claim. rs_claim = VALUE #( policy_id = 'P123456789' vehicle_age = 3 damage = '2500.00' deductible = '500.00' report_days = 5 photo_count = 3 ). ENDMETHOD. METHOD payout. TRY. rv_payout = mo_cut->check_claim( is_claim ). CATCH {{p}}cx_claim_error INTO DATA(lo_error). cl_abap_unit_assert=>fail( msg = |Unexpected rejection { lo_error->mv_reason }| ). ENDTRY. ENDMETHOD. METHOD pays_claim. cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}claim_checker=>ty_amount( '2000.00' ) act = payout( claim( ) ) ). ENDMETHOD. METHOD caps_payout. DATA(ls_claim) = claim( ). ls_claim-damage = '50000.00'. cl_abap_unit_assert=>assert_equals( exp = {{p}}claim_checker=>c_max_payout act = payout( ls_claim ) ). ENDMETHOD. METHOD rejects_policy. DATA(ls_claim) = claim( ). ls_claim-policy_id = 'X123456789'. TRY. mo_cut->check_claim( ls_claim ). cl_abap_unit_assert=>fail( msg = 'no exception' ). CATCH {{p}}cx_claim_error INTO DATA(lo_error). cl_abap_unit_assert=>assert_equals( exp = 'POLICY' act = lo_error->mv_reason ). ENDTRY. ENDMETHOD. METHOD rejects_late. DATA(ls_claim) = claim( ). ls_claim-report_days = 20. TRY. mo_cut->check_claim( ls_claim ). cl_abap_unit_assert=>fail( msg = 'no exception' ). CATCH {{p}}cx_claim_error INTO DATA(lo_error). cl_abap_unit_assert=>assert_equals( exp = 'LATE' act = lo_error->mv_reason ). ENDTRY. ENDMETHOD. METHOD rejects_old_car. DATA(ls_claim) = claim( ). ls_claim-vehicle_age = 20. TRY. mo_cut->check_claim( ls_claim ). cl_abap_unit_assert=>fail( msg = 'no exception' ). CATCH {{p}}cx_claim_error INTO DATA(lo_error). cl_abap_unit_assert=>assert_equals( exp = 'AGED' act = lo_error->mv_reason ). ENDTRY. ENDMETHOD. METHOD rejects_photos. DATA(ls_claim) = claim( ). ls_claim-photo_count = 0. TRY. mo_cut->check_claim( ls_claim ). cl_abap_unit_assert=>fail( msg = 'no exception' ). CATCH {{p}}cx_claim_error INTO DATA(lo_error). cl_abap_unit_assert=>assert_equals( exp = 'PHOTOS' act = lo_error->mv_reason ). ENDTRY. ENDMETHOD. METHOD rejects_damage. DATA(ls_claim) = claim( ). ls_claim-damage = 0. TRY. mo_cut->check_claim( ls_claim ). cl_abap_unit_assert=>fail( msg = 'no exception' ). CATCH {{p}}cx_claim_error INTO DATA(lo_error). cl_abap_unit_assert=>assert_equals( exp = 'DAMAGE' act = lo_error->mv_reason ). ENDTRY. ENDMETHOD. METHOD rejects_deductible. DATA(ls_claim) = claim( ). ls_claim-deductible = '9000.00'. TRY. mo_cut->check_claim( ls_claim ). cl_abap_unit_assert=>fail( msg = 'no exception' ). CATCH {{p}}cx_claim_error INTO DATA(lo_error). cl_abap_unit_assert=>assert_equals( exp = 'DEDUCT' act = lo_error->mv_reason ). ENDTRY. ENDMETHOD. ENDCLASS.