CLASS {{p}}t02_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. DATA mo_cut TYPE REF TO {{p}}if_crane_hire. METHODS setup. METHODS base_fee_road FOR TESTING. METHODS gravel_factor FOR TESTING. METHODS soil_factor_rounds FOR TESTING. METHODS permit_surcharge FOR TESTING. METHODS minimum_fee FOR TESTING. METHODS radius_out_of_range FOR TESTING. METHODS load_out_of_range FOR TESTING. METHODS capacity_exceeded FOR TESTING. METHODS capacity_band_edges FOR TESTING. METHODS unknown_ground FOR TESTING. METHODS ground_case_spaces FOR TESTING. METHODS validation_order FOR TESTING. ENDCLASS. CLASS {{p}}t02_hidden IMPLEMENTATION. METHOD setup. mo_cut = NEW {{p}}crane_hire_calc( ). ENDMETHOD. METHOD base_fee_road. 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_factor. 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 = {{p}}if_crane_hire=>c_reason-ok act = ls_result-reason ). cl_abap_unit_assert=>assert_equals( exp = 805 act = ls_result-fee ). ENDMETHOD. METHOD soil_factor_rounds. 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 = {{p}}if_crane_hire=>c_reason-ok act = ls_result-reason ). cl_abap_unit_assert=>assert_equals( exp = 1013 act = ls_result-fee ). ENDMETHOD. METHOD permit_surcharge. 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 = {{p}}if_crane_hire=>c_reason-ok act = ls_result-reason ). 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 ). ls_result = mo_cut->hire( iv_radius_m = 5 iv_load_kg = 500 iv_ground = `GRAVEL` iv_permit = abap_false ). cl_abap_unit_assert=>assert_equals( exp = 300 act = ls_result-fee ). ENDMETHOD. METHOD radius_out_of_range. DATA(ls_result) = mo_cut->hire( iv_radius_m = 4 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 ). cl_abap_unit_assert=>assert_equals( exp = 0 act = ls_result-fee ). 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 ). ls_result = mo_cut->hire( iv_radius_m = 60 iv_load_kg = 1500 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 = 975 act = ls_result-fee ). ENDMETHOD. METHOD load_out_of_range. 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 ). cl_abap_unit_assert=>assert_equals( exp = 0 act = ls_result-fee ). 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 = {{p}}if_crane_hire=>c_reason-ok act = ls_result-reason ). ENDMETHOD. METHOD capacity_exceeded. 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 ). cl_abap_unit_assert=>assert_equals( exp = 0 act = ls_result-fee ). ls_result = mo_cut->hire( iv_radius_m = 60 iv_load_kg = 1501 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 capacity_band_edges. DATA(ls_result) = mo_cut->hire( iv_radius_m = 10 iv_load_kg = 12000 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 = 750 act = ls_result-fee ). ls_result = mo_cut->hire( iv_radius_m = 11 iv_load_kg = 12000 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 ). ls_result = mo_cut->hire( iv_radius_m = 45 iv_load_kg = 3000 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 = 825 act = ls_result-fee ). ls_result = mo_cut->hire( iv_radius_m = 46 iv_load_kg = 3000 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 unknown_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 ). cl_abap_unit_assert=>assert_equals( exp = 0 act = ls_result-fee ). ENDMETHOD. METHOD ground_case_spaces. 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 = {{p}}if_crane_hire=>c_reason-ok act = ls_result-reason ). cl_abap_unit_assert=>assert_equals( exp = 805 act = ls_result-fee ). ENDMETHOD. METHOD validation_order. DATA(ls_result) = mo_cut->hire( iv_radius_m = 4 iv_load_kg = 100 iv_ground = `FIELD` iv_permit = abap_false ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_crane_hire=>c_reason-radius act = ls_result-reason ). ls_result = mo_cut->hire( iv_radius_m = 20 iv_load_kg = 100 iv_ground = `FIELD` iv_permit = abap_false ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_crane_hire=>c_reason-load act = ls_result-reason ). ls_result = mo_cut->hire( iv_radius_m = 25 iv_load_kg = 6000 iv_ground = `FIELD` iv_permit = abap_false ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_crane_hire=>c_reason-capacity act = ls_result-reason ). 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.