CLASS {{p}}t14_test DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. METHODS fee_for IMPORTING iv_size TYPE string iv_long_hair TYPE abap_bool iv_weekend TYPE abap_bool iv_channel TYPE string RETURNING VALUE(rv_fee) TYPE decfloat34. METHODS base_fee FOR TESTING. METHODS surcharges FOR TESTING. METHODS partner_channel FOR TESTING. METHODS invalid_size FOR TESTING. ENDCLASS. CLASS {{p}}t14_test IMPLEMENTATION. METHOD fee_for. DATA lv_skip TYPE abap_bool. CALL FUNCTION '{{P}}GROOM_FEE' EXPORTING iv_size = iv_size iv_long_hair = iv_long_hair iv_weekend = iv_weekend iv_channel = iv_channel IMPORTING ev_skip = lv_skip CHANGING cv_fee = rv_fee EXCEPTIONS invalid_size = 1 OTHERS = 2. cl_abap_unit_assert=>assert_subrc( exp = 0 ). ENDMETHOD. METHOD base_fee. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '42.50' ) act = fee_for( iv_size = `M` iv_long_hair = abap_false iv_weekend = abap_false iv_channel = `SHOP` ) ). ENDMETHOD. METHOD surcharges. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '30.48' ) act = fee_for( iv_size = `S` iv_long_hair = abap_true iv_weekend = abap_false iv_channel = `SHOP` ) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '52.50' ) act = fee_for( iv_size = `M` iv_long_hair = abap_false iv_weekend = abap_true iv_channel = `SHOP` ) ). ENDMETHOD. METHOD partner_channel. DATA lv_skip TYPE abap_bool. DATA lv_fee TYPE decfloat34 VALUE 5. CALL FUNCTION '{{P}}GROOM_FEE' EXPORTING iv_size = `L` iv_long_hair = abap_false iv_weekend = abap_false iv_channel = `PARTNER` IMPORTING ev_skip = lv_skip CHANGING cv_fee = lv_fee. cl_abap_unit_assert=>assert_true( lv_skip ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 5 ) act = lv_fee ). ENDMETHOD. METHOD invalid_size. DATA lv_fee TYPE decfloat34. CALL FUNCTION '{{P}}GROOM_FEE' EXPORTING iv_size = `XL` iv_long_hair = abap_false iv_weekend = abap_false iv_channel = `SHOP` CHANGING cv_fee = lv_fee EXCEPTIONS invalid_size = 1 OTHERS = 2. cl_abap_unit_assert=>assert_equals( exp = 1 act = sy-subrc ). ENDMETHOD. ENDCLASS.