CLASS ltc_crane_hire DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. DATA mo_cut TYPE REF TO {{p}}if_crane_hire. METHODS setup. METHODS road_fee FOR TESTING. METHODS gravel_fee FOR TESTING. METHODS soil_fee FOR TESTING. METHODS permit_fee FOR TESTING. METHODS minimum_fee FOR TESTING. METHODS invalid_radius FOR TESTING. METHODS invalid_load FOR TESTING. METHODS over_capacity FOR TESTING. METHODS invalid_ground FOR TESTING. ENDCLASS. CLASS ltc_crane_hire IMPLEMENTATION. METHOD setup. mo_cut = NEW {{p}}crane_hire_calc( ). ENDMETHOD. METHOD road_fee. DATA(ls_result) = mo_cut->hire( iv_radius_m = 20 iv_load_kg = 5000 iv_ground = `ROAD` iv_permit = abap_false ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_crane_hire=>c_reason-ok act = ls_result-reason ). cl_abap_unit_assert=>assert_equals( exp = 550 act = ls_result-fee ). ENDMETHOD. METHOD gravel_fee. DATA(ls_result) = mo_cut->hire( iv_radius_m = 30 iv_load_kg = 5000 iv_ground = `GRAVEL` iv_permit = abap_false ). cl_abap_unit_assert=>assert_equals( exp = 805 act = ls_result-fee ). ENDMETHOD. METHOD soil_fee. DATA(ls_result) = mo_cut->hire( iv_radius_m = 10 iv_load_kg = 12000 iv_ground = `SOIL` iv_permit = abap_false ). cl_abap_unit_assert=>assert_equals( exp = 1013 act = ls_result-fee ). ENDMETHOD. METHOD permit_fee. DATA(ls_result) = mo_cut->hire( iv_radius_m = 20 iv_load_kg = 5000 iv_ground = `ROAD` iv_permit = abap_true ). cl_abap_unit_assert=>assert_equals( exp = 800 act = ls_result-fee ). ENDMETHOD. METHOD minimum_fee. DATA(ls_result) = mo_cut->hire( iv_radius_m = 5 iv_load_kg = 500 iv_ground = `ROAD` iv_permit = abap_false ). cl_abap_unit_assert=>assert_equals( exp = 300 act = ls_result-fee ). ENDMETHOD. METHOD invalid_radius. DATA(ls_result) = mo_cut->hire( iv_radius_m = 61 iv_load_kg = 5000 iv_ground = `ROAD` iv_permit = abap_false ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_crane_hire=>c_reason-radius act = ls_result-reason ). ENDMETHOD. METHOD invalid_load. DATA(ls_result) = mo_cut->hire( iv_radius_m = 20 iv_load_kg = 499 iv_ground = `ROAD` iv_permit = abap_false ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_crane_hire=>c_reason-load act = ls_result-reason ). ENDMETHOD. METHOD over_capacity. DATA(ls_result) = mo_cut->hire( iv_radius_m = 25 iv_load_kg = 6000 iv_ground = `ROAD` iv_permit = abap_false ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_crane_hire=>c_reason-capacity act = ls_result-reason ). ENDMETHOD. METHOD invalid_ground. DATA(ls_result) = mo_cut->hire( iv_radius_m = 20 iv_load_kg = 5000 iv_ground = `FIELD` iv_permit = abap_false ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_crane_hire=>c_reason-ground act = ls_result-reason ). ENDMETHOD. ENDCLASS.