CLASS {{p}}t14_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. METHODS call IMPORTING iv_service TYPE string iv_weight TYPE decfloat34 iv_distance TYPE decfloat34 iv_price TYPE decfloat34 DEFAULT 7 EXPORTING ev_skip TYPE abap_bool ev_price TYPE decfloat34 ev_subrc TYPE sysubrc. METHODS express_price FOR TESTING. METHODS standard_price FOR TESTING. METHODS price_rounding FOR TESTING. METHODS minimum_charge FOR TESTING. METHODS unknown_service FOR TESTING. METHODS out_of_area FOR TESTING. METHODS invalid_weight FOR TESTING. METHODS skip_false_normal FOR TESTING. ENDCLASS. CLASS {{p}}t14_hidden IMPLEMENTATION. METHOD call. ev_price = iv_price. CALL FUNCTION '{{P}}DLV_PRICE' EXPORTING iv_service = iv_service iv_weight = iv_weight iv_distance = iv_distance IMPORTING ev_skip = ev_skip CHANGING cv_price = ev_price EXCEPTIONS invalid_weight = 1 OTHERS = 2. ev_subrc = sy-subrc. ENDMETHOD. METHOD express_price. call( EXPORTING iv_service = `EX` iv_weight = 2 iv_distance = 10 IMPORTING ev_price = DATA(lv_price) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 21 ) act = lv_price ). ENDMETHOD. METHOD standard_price. call( EXPORTING iv_service = `ST` iv_weight = 5 iv_distance = 20 IMPORTING ev_price = DATA(lv_price) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 15 ) act = lv_price ). ENDMETHOD. METHOD price_rounding. call( EXPORTING iv_service = `EX` iv_weight = '1.25' iv_distance = '7.7' IMPORTING ev_price = DATA(lv_price) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '18.50' ) act = lv_price ). ENDMETHOD. METHOD minimum_charge. call( EXPORTING iv_service = `ST` iv_weight = '0.5' iv_distance = 1 IMPORTING ev_price = DATA(lv_price) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 6 ) act = lv_price ). ENDMETHOD. METHOD unknown_service. call( EXPORTING iv_service = `XX` iv_weight = 2 iv_distance = 10 IMPORTING ev_skip = DATA(lv_skip) ev_price = DATA(lv_price) ). cl_abap_unit_assert=>assert_equals( exp = abap_true act = lv_skip ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 0 ) act = lv_price ). ENDMETHOD. METHOD out_of_area. call( EXPORTING iv_service = `EX` iv_weight = 2 iv_distance = 400 iv_price = 7 IMPORTING ev_skip = DATA(lv_skip) ev_price = DATA(lv_price) ). cl_abap_unit_assert=>assert_equals( exp = abap_true act = lv_skip ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 7 ) act = lv_price ). ENDMETHOD. METHOD invalid_weight. call( EXPORTING iv_service = `EX` iv_weight = 0 iv_distance = 10 IMPORTING ev_subrc = DATA(lv_rc) ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_rc ). ENDMETHOD. METHOD skip_false_normal. call( EXPORTING iv_service = `EX` iv_weight = 2 iv_distance = 10 IMPORTING ev_skip = DATA(lv_skip) ). cl_abap_unit_assert=>assert_equals( exp = abap_false act = lv_skip ). ENDMETHOD. ENDCLASS.