CLASS ltc_skip_hire_calc DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. DATA mo_cut TYPE REF TO {{p}}skip_hire_calc. METHODS setup. METHODS minimum_charge_applies FOR TESTING. METHODS extra_days_are_charged FOR TESTING. METHODS hazardous_and_permit FOR TESTING. METHODS bulk_discount FOR TESTING. METHODS invalid_rows_are_free FOR TESTING. ENDCLASS. CLASS ltc_skip_hire_calc IMPLEMENTATION. METHOD setup. mo_cut = NEW {{p}}skip_hire_calc( ). ENDMETHOD. METHOD minimum_charge_applies. DATA(lt_containers) = VALUE {{p}}skip_hire_calc=>tt_containers( ( size = 'SMALL' days = 1 hazardous = abap_false permit = abap_false ) ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}skip_hire_calc=>ty_amount( '120.00' ) act = mo_cut->hire_charge( lt_containers ) ). ENDMETHOD. METHOD extra_days_are_charged. DATA(lt_containers) = VALUE {{p}}skip_hire_calc=>tt_containers( ( size = 'MEDIUM' days = 10 hazardous = abap_false permit = abap_false ) ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}skip_hire_calc=>ty_amount( '176.00' ) act = mo_cut->hire_charge( lt_containers ) ). ENDMETHOD. METHOD hazardous_and_permit. DATA(lt_containers) = VALUE {{p}}skip_hire_calc=>tt_containers( ( size = 'SMALL' days = 1 hazardous = abap_true permit = abap_true ) ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}skip_hire_calc=>ty_amount( '195.00' ) act = mo_cut->hire_charge( lt_containers ) ). ENDMETHOD. METHOD bulk_discount. DATA(lt_containers) = VALUE {{p}}skip_hire_calc=>tt_containers( ( size = 'MEDIUM' days = 1 hazardous = abap_false permit = abap_false ) ( size = 'MEDIUM' days = 1 hazardous = abap_false permit = abap_false ) ( size = 'MEDIUM' days = 1 hazardous = abap_false permit = abap_false ) ( size = 'MEDIUM' days = 1 hazardous = abap_false permit = abap_false ) ( size = 'MEDIUM' days = 1 hazardous = abap_false permit = abap_false ) ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}skip_hire_calc=>ty_amount( '630.00' ) act = mo_cut->hire_charge( lt_containers ) ). ENDMETHOD. METHOD invalid_rows_are_free. DATA(lt_containers) = VALUE {{p}}skip_hire_calc=>tt_containers( ( size = 'HUGE' days = 3 hazardous = abap_true permit = abap_true ) ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}skip_hire_calc=>ty_amount( '0.00' ) act = mo_cut->hire_charge( lt_containers ) ). ENDMETHOD. ENDCLASS.