CLASS {{p}}t14_test DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. METHODS fee_for IMPORTING iv_material TYPE string iv_seam_cm TYPE decfloat34 iv_express TYPE abap_bool DEFAULT abap_false RETURNING VALUE(rv_fee) TYPE decfloat34. METHODS steel_charge FOR TESTING. METHODS stainless_charge FOR TESTING. METHODS aluminium_charge FOR TESTING. METHODS express_and_discount FOR TESTING. METHODS minimum_charge FOR TESTING. ENDCLASS. CLASS {{p}}t14_test IMPLEMENTATION. METHOD fee_for. CALL FUNCTION '{{P}}WELD_FEE' EXPORTING iv_material = iv_material iv_seam_cm = iv_seam_cm iv_express = iv_express CHANGING cv_fee = rv_fee EXCEPTIONS invalid_length = 1 OTHERS = 2. cl_abap_unit_assert=>assert_subrc( exp = 0 ). ENDMETHOD. METHOD steel_charge. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 120 ) act = fee_for( iv_material = `ST` iv_seam_cm = 10 ) ). ENDMETHOD. METHOD stainless_charge. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 200 ) act = fee_for( iv_material = `SS` iv_seam_cm = 10 ) ). ENDMETHOD. METHOD aluminium_charge. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 840 ) act = fee_for( iv_material = `AL` iv_seam_cm = 30 ) ). ENDMETHOD. METHOD express_and_discount. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 3375 ) act = fee_for( iv_material = `ST` iv_seam_cm = 250 iv_express = abap_true ) ). ENDMETHOD. METHOD minimum_charge. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 40 ) act = fee_for( iv_material = `ST` iv_seam_cm = 2 ) ). ENDMETHOD. ENDCLASS.