CLASS {{p}}t31_test DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. METHODS fee_for IMPORTING iv_width TYPE i iv_height TYPE i iv_glass TYPE string iv_urgent TYPE abap_bool DEFAULT abap_false RETURNING VALUE(rv_fee) TYPE decfloat34. METHODS simple_fee FOR TESTING. METHODS minimum_fee FOR TESTING. METHODS urgent_fee FOR TESTING. METHODS invalid_input FOR TESTING. ENDCLASS. CLASS {{p}}t31_test IMPLEMENTATION. METHOD fee_for. CALL FUNCTION '{{P}}GLAZ_FEE' EXPORTING iv_width_mm = iv_width iv_height_mm = iv_height iv_glass = iv_glass iv_urgent = iv_urgent IMPORTING ev_fee = rv_fee EXCEPTIONS invalid_input = 1 OTHERS = 2. cl_abap_unit_assert=>assert_subrc( exp = 0 ). ENDMETHOD. METHOD simple_fee. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '45.00' ) act = fee_for( iv_width = 1000 iv_height = 1000 iv_glass = `SIMPLE` ) ). ENDMETHOD. METHOD minimum_fee. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '35.00' ) act = fee_for( iv_width = 400 iv_height = 400 iv_glass = `SIMPLE` ) ). ENDMETHOD. METHOD urgent_fee. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '67.50' ) act = fee_for( iv_width = 1000 iv_height = 1000 iv_glass = `SIMPLE` iv_urgent = abap_true ) ). ENDMETHOD. METHOD invalid_input. DATA lv_fee TYPE decfloat34. CALL FUNCTION '{{P}}GLAZ_FEE' EXPORTING iv_width_mm = 0 iv_height_mm = 1000 iv_glass = `SIMPLE` iv_urgent = abap_false IMPORTING ev_fee = lv_fee EXCEPTIONS invalid_input = 1 OTHERS = 2. cl_abap_unit_assert=>assert_equals( exp = 1 act = sy-subrc ). ENDMETHOD. ENDCLASS.