CLASS {{p}}t42_test DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. METHODS fee_for IMPORTING iv_style TYPE string iv_sessions TYPE i RETURNING VALUE(rv_fee) TYPE decfloat34. METHODS line_fee FOR TESTING. METHODS shade_fee FOR TESTING. METHODS fee_limits FOR TESTING. METHODS deposit_flag FOR TESTING. METHODS invalid_sessions FOR TESTING. ENDCLASS. CLASS {{p}}t42_test IMPLEMENTATION. METHOD fee_for. DATA lv_deposit TYPE abap_bool. CALL FUNCTION '{{P}}TATTOO_FEE' EXPORTING iv_style = iv_style iv_sessions = iv_sessions IMPORTING ev_deposit = lv_deposit CHANGING cv_fee = rv_fee EXCEPTIONS invalid_sessions = 1 OTHERS = 2. cl_abap_unit_assert=>assert_subrc( exp = 0 ). ENDMETHOD. METHOD line_fee. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '200.00' ) act = fee_for( iv_style = `LINE` iv_sessions = 2 ) ). ENDMETHOD. METHOD shade_fee. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '146.66' ) act = fee_for( iv_style = `SHADE` iv_sessions = 2 ) ). ENDMETHOD. METHOD fee_limits. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '150.00' ) act = fee_for( iv_style = `LINE` iv_sessions = 1 ) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '800.00' ) act = fee_for( iv_style = `LINE` iv_sessions = 20 ) ). ENDMETHOD. METHOD deposit_flag. DATA lv_deposit TYPE abap_bool. DATA lv_fee TYPE decfloat34. CALL FUNCTION '{{P}}TATTOO_FEE' EXPORTING iv_style = `LINE` iv_sessions = 7 IMPORTING ev_deposit = lv_deposit CHANGING cv_fee = lv_fee. cl_abap_unit_assert=>assert_true( lv_deposit ). ENDMETHOD. METHOD invalid_sessions. DATA lv_fee TYPE decfloat34. CALL FUNCTION '{{P}}TATTOO_FEE' EXPORTING iv_style = `LINE` iv_sessions = 0 CHANGING cv_fee = lv_fee EXCEPTIONS invalid_sessions = 1 OTHERS = 2. cl_abap_unit_assert=>assert_equals( exp = 1 act = sy-subrc ). ENDMETHOD. ENDCLASS.