CLASS {{p}}duty_test DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. METHODS duty_for IMPORTING iv_value TYPE decfloat34 iv_country TYPE string iv_category TYPE string RETURNING VALUE(rv_duty) TYPE decfloat34. METHODS food_duty FOR TESTING. METHODS rounding FOR TESTING. METHODS minimum FOR TESTING. METHODS preferential FOR TESTING. METHODS negative_value FOR TESTING. ENDCLASS. CLASS {{p}}duty_test IMPLEMENTATION. METHOD duty_for. CALL FUNCTION '{{P}}CUSTOMS_DUTY_OLD' EXPORTING iv_value = iv_value iv_country = iv_country iv_category = iv_category IMPORTING ev_duty = rv_duty EXCEPTIONS invalid_value = 1 OTHERS = 2. cl_abap_unit_assert=>assert_subrc( exp = 0 ). ENDMETHOD. METHOD food_duty. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 50 ) act = duty_for( iv_value = 1000 iv_country = 'US' iv_category = 'FOOD' ) ). ENDMETHOD. METHOD rounding. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '6.19' ) act = duty_for( iv_value = '123.7' iv_country = 'US' iv_category = 'FOOD' ) ). ENDMETHOD. METHOD minimum. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 5 ) act = duty_for( iv_value = 50 iv_country = 'US' iv_category = 'FOOD' ) ). ENDMETHOD. METHOD preferential. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 0 ) act = duty_for( iv_value = 10000 iv_country = 'FR' iv_category = 'FOOD' ) ). ENDMETHOD. METHOD negative_value. DATA lv_duty TYPE decfloat34. CALL FUNCTION '{{P}}CUSTOMS_DUTY_OLD' EXPORTING iv_value = -1 iv_country = 'US' iv_category = 'FOOD' IMPORTING ev_duty = lv_duty EXCEPTIONS invalid_value = 1 OTHERS = 2. cl_abap_unit_assert=>assert_equals( exp = 1 act = sy-subrc ). ENDMETHOD. ENDCLASS.