CLASS {{p}}shred_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC 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 zero_boxes_is_free FOR TESTING. METHODS negative_boxes_free FOR TESTING. METHODS plant_minimum_charge FOR TESTING. METHODS onsite_minimum_charge FOR TESTING. METHODS onsite_surcharge FOR TESTING. METHODS no_discount_below_ten FOR TESTING. METHODS mid_volume_discount FOR TESTING. METHODS high_volume_discount FOR TESTING. METHODS express_surcharge FOR TESTING. METHODS contract_discount FOR TESTING. METHODS all_effects_combined FOR TESTING. METHODS unknown_size_uses_medium FOR TESTING. ENDCLASS. CLASS {{p}}shred_hidden 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 zero_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 negative_boxes_free. expect_price( iv_expected = '0.00' iv_boxes = -3 iv_size = 60 iv_service = 'O' iv_express = abap_true iv_contract = abap_true ). 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 onsite_surcharge. expect_price( iv_expected = '107.50' iv_boxes = 5 iv_size = 240 iv_service = 'O' iv_express = abap_false iv_contract = abap_false ). ENDMETHOD. METHOD no_discount_below_ten. expect_price( iv_expected = '72.00' iv_boxes = 9 iv_size = 60 iv_service = 'P' iv_express = abap_false iv_contract = abap_false ). ENDMETHOD. METHOD mid_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 high_volume_discount. expect_price( iv_expected = '270.00' iv_boxes = 25 iv_size = 120 iv_service = 'P' iv_express = abap_false iv_contract = abap_false ). ENDMETHOD. METHOD express_surcharge. expect_price( iv_expected = '205.20' iv_boxes = 10 iv_size = 240 iv_service = 'P' iv_express = abap_true iv_contract = abap_false ). ENDMETHOD. METHOD contract_discount. expect_price( iv_expected = '153.90' iv_boxes = 10 iv_size = 240 iv_service = 'P' iv_express = abap_false iv_contract = abap_true ). ENDMETHOD. METHOD all_effects_combined. 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_uses_medium. 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.