CLASS {{p}}t14_test DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. METHODS price_for IMPORTING iv_service TYPE string iv_weight TYPE decfloat34 iv_distance TYPE decfloat34 RETURNING VALUE(rv_price) TYPE decfloat34. METHODS express_price FOR TESTING. METHODS standard_price FOR TESTING. METHODS minimum_charge FOR TESTING. METHODS out_of_area_skips FOR TESTING. ENDCLASS. CLASS {{p}}t14_test IMPLEMENTATION. METHOD price_for. DATA lv_skip TYPE abap_bool. CALL FUNCTION '{{P}}DLV_PRICE' EXPORTING iv_service = iv_service iv_weight = iv_weight iv_distance = iv_distance IMPORTING ev_skip = lv_skip CHANGING cv_price = rv_price EXCEPTIONS invalid_weight = 1 OTHERS = 2. cl_abap_unit_assert=>assert_subrc( exp = 0 ). ENDMETHOD. METHOD express_price. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 21 ) act = price_for( iv_service = `EX` iv_weight = 2 iv_distance = 10 ) ). ENDMETHOD. METHOD standard_price. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 15 ) act = price_for( iv_service = `ST` iv_weight = 5 iv_distance = 20 ) ). ENDMETHOD. METHOD minimum_charge. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 6 ) act = price_for( iv_service = `ST` iv_weight = '0.5' iv_distance = 1 ) ). ENDMETHOD. METHOD out_of_area_skips. DATA lv_skip TYPE abap_bool. DATA lv_price TYPE decfloat34 VALUE 7. CALL FUNCTION '{{P}}DLV_PRICE' EXPORTING iv_service = `EX` iv_weight = 2 iv_distance = 400 IMPORTING ev_skip = lv_skip CHANGING cv_price = lv_price. cl_abap_unit_assert=>assert_true( lv_skip ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 7 ) act = lv_price ). ENDMETHOD. ENDCLASS.