CLASS ltc_pest_fee DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. DATA mo_cut TYPE REF TO {{p}}pest_fee. METHODS setup. METHODS rats_with_area FOR TESTING. METHODS mice_base_fee FOR TESTING. METHODS unknown_pest_is_free FOR TESTING. METHODS urgent_job FOR TESTING. METHODS contract_discount FOR TESTING. METHODS minimum_fee FOR TESTING. ENDCLASS. CLASS ltc_pest_fee IMPLEMENTATION. METHOD setup. mo_cut = NEW {{p}}pest_fee( ). ENDMETHOD. METHOD rats_with_area. DATA lv_exp TYPE {{p}}pest_fee=>ty_fee. lv_exp = 135. cl_abap_unit_assert=>assert_equals( exp = lv_exp act = mo_cut->calculate_fee( iv_pest_type = 'RATS' iv_area = 101 iv_urgent = abap_false iv_contract = abap_false ) ). ENDMETHOD. METHOD mice_base_fee. DATA lv_exp TYPE {{p}}pest_fee=>ty_fee. lv_exp = 55. cl_abap_unit_assert=>assert_equals( exp = lv_exp act = mo_cut->calculate_fee( iv_pest_type = 'MICE' iv_area = 0 iv_urgent = abap_false iv_contract = abap_false ) ). ENDMETHOD. METHOD unknown_pest_is_free. DATA lv_exp TYPE {{p}}pest_fee=>ty_fee. lv_exp = 0. cl_abap_unit_assert=>assert_equals( exp = lv_exp act = mo_cut->calculate_fee( iv_pest_type = 'BIRD' iv_area = 500 iv_urgent = abap_true iv_contract = abap_true ) ). ENDMETHOD. METHOD urgent_job. DATA lv_exp TYPE {{p}}pest_fee=>ty_fee. lv_exp = 125. cl_abap_unit_assert=>assert_equals( exp = lv_exp act = mo_cut->calculate_fee( iv_pest_type = 'ANTS' iv_area = 100 iv_urgent = abap_true iv_contract = abap_false ) ). ENDMETHOD. METHOD contract_discount. DATA lv_exp TYPE {{p}}pest_fee=>ty_fee. lv_exp = 153. cl_abap_unit_assert=>assert_equals( exp = lv_exp act = mo_cut->calculate_fee( iv_pest_type = 'RATS' iv_area = 0 iv_urgent = abap_true iv_contract = abap_true ) ). ENDMETHOD. METHOD minimum_fee. DATA lv_exp TYPE {{p}}pest_fee=>ty_fee. lv_exp = 50. cl_abap_unit_assert=>assert_equals( exp = lv_exp act = mo_cut->calculate_fee( iv_pest_type = 'MICE' iv_area = 0 iv_urgent = abap_false iv_contract = abap_true ) ). ENDMETHOD. ENDCLASS.