CLASS ltc_shred_pricer DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. DATA mo_cut TYPE REF TO {{p}}shred_pricer. METHODS setup. METHODS expect_price IMPORTING iv_expected TYPE {{p}}shred_pricer=>ty_price iv_boxes TYPE i iv_size TYPE {{p}}shred_pricer=>ty_size iv_service TYPE {{p}}shred_pricer=>ty_service iv_express TYPE abap_bool iv_contract TYPE abap_bool. METHODS no_boxes_is_free FOR TESTING. METHODS plant_minimum_charge FOR TESTING. METHODS onsite_minimum_charge FOR TESTING. METHODS volume_discount FOR TESTING. METHODS contract_and_express FOR TESTING. METHODS unknown_size_falls_back FOR TESTING. ENDCLASS. CLASS ltc_shred_pricer IMPLEMENTATION. METHOD setup. mo_cut = NEW {{p}}shred_pricer( ). ENDMETHOD. METHOD expect_price. cl_abap_unit_assert=>assert_equals( exp = iv_expected act = mo_cut->calculate_price( iv_boxes = iv_boxes iv_size = iv_size iv_service = iv_service iv_express = iv_express iv_contract = iv_contract ) ). ENDMETHOD. METHOD no_boxes_is_free. expect_price( iv_expected = '0.00' iv_boxes = 0 iv_size = 120 iv_service = 'P' iv_express = abap_false iv_contract = abap_false ). ENDMETHOD. METHOD plant_minimum_charge. expect_price( iv_expected = '35.00' iv_boxes = 1 iv_size = 60 iv_service = 'P' iv_express = abap_false iv_contract = abap_false ). ENDMETHOD. METHOD onsite_minimum_charge. expect_price( iv_expected = '60.00' iv_boxes = 1 iv_size = 60 iv_service = 'O' iv_express = abap_false iv_contract = abap_false ). ENDMETHOD. METHOD volume_discount. expect_price( iv_expected = '182.40' iv_boxes = 24 iv_size = 60 iv_service = 'P' iv_express = abap_false iv_contract = abap_false ). ENDMETHOD. METHOD contract_and_express. expect_price( iv_expected = '437.40' iv_boxes = 25 iv_size = 240 iv_service = 'P' iv_express = abap_true iv_contract = abap_true ). ENDMETHOD. METHOD unknown_size_falls_back. expect_price( iv_expected = '114.00' iv_boxes = 10 iv_size = 100 iv_service = 'P' iv_express = abap_false iv_contract = abap_false ). ENDMETHOD. ENDCLASS.