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}}laundry_pricer. METHODS setup. METHODS wash_basic FOR TESTING. METHODS dry_basic FOR TESTING. METHODS iron_basic FOR TESTING. METHODS iron_above_min FOR TESTING. METHODS express_no_member FOR TESTING. METHODS member_no_express FOR TESTING. METHODS member_then_express FOR TESTING. METHODS min_after_discount FOR TESTING. METHODS unknown_service FOR TESTING. METHODS rounding FOR TESTING. ENDCLASS. CLASS {{p}}t02_hidden 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 dry_basic. DATA(lv_price) = mo_cut->calculate( iv_weight_kg = '3.00' iv_service = {{p}}laundry_pricer=>c_service_dry 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 iron_basic. DATA(lv_price) = mo_cut->calculate( iv_weight_kg = '5.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( '10.00' ) act = lv_price ). ENDMETHOD. METHOD iron_above_min. 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 express_no_member. 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_false ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}laundry_pricer=>ty_amount( '15.00' ) act = lv_price ). ENDMETHOD. METHOD member_no_express. DATA(lv_price) = mo_cut->calculate( iv_weight_kg = '5.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( '11.25' ) 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. METHOD rounding. DATA(lv_price) = mo_cut->calculate( iv_weight_kg = '2.23' iv_service = {{p}}laundry_pricer=>c_service_wash iv_express = abap_true iv_member = abap_false ). cl_abap_unit_assert=>assert_equals( exp = CONV {{p}}laundry_pricer=>ty_amount( '10.58' ) act = lv_price ). ENDMETHOD. ENDCLASS.