CLASS ltc_laundry_pricer DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. DATA mo_cut TYPE REF TO {{p}}laundry_pricer. METHODS setup. METHODS wash_basic FOR TESTING. METHODS iron_rate FOR TESTING. METHODS member_then_express FOR TESTING. METHODS min_after_discount FOR TESTING. METHODS unknown_service FOR TESTING. ENDCLASS. CLASS ltc_laundry_pricer IMPLEMENTATION. METHOD setup. mo_cut = NEW {{p}}laundry_pricer( ). ENDMETHOD. METHOD wash_basic. DATA(lv_price) = mo_cut->calculate( iv_weight_kg = '2.00' iv_service = {{p}}laundry_pricer=>c_service_wash iv_express = abap_false iv_member = abap_false ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}laundry_pricer=>ty_amount( '10.00' ) act = lv_price ). ENDMETHOD. METHOD iron_rate. DATA(lv_price) = mo_cut->calculate( iv_weight_kg = '8.00' iv_service = {{p}}laundry_pricer=>c_service_iron iv_express = abap_false iv_member = abap_false ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}laundry_pricer=>ty_amount( '12.00' ) act = lv_price ). ENDMETHOD. METHOD member_then_express. DATA(lv_price) = mo_cut->calculate( iv_weight_kg = '4.00' iv_service = {{p}}laundry_pricer=>c_service_wash iv_express = abap_true iv_member = abap_true ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}laundry_pricer=>ty_amount( '14.00' ) act = lv_price ). ENDMETHOD. METHOD min_after_discount. DATA(lv_price) = mo_cut->calculate( iv_weight_kg = '2.00' iv_service = {{p}}laundry_pricer=>c_service_wash iv_express = abap_false iv_member = abap_true ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}laundry_pricer=>ty_amount( '10.00' ) act = lv_price ). ENDMETHOD. METHOD unknown_service. DATA(lv_price) = mo_cut->calculate( iv_weight_kg = '2.00' iv_service = 'XXXX' iv_express = abap_false iv_member = abap_false ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}laundry_pricer=>ty_amount( '10.00' ) act = lv_price ). ENDMETHOD. ENDCLASS.