CLASS {{p}}lkr_test DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. METHODS fee_for IMPORTING iv_size_code TYPE string iv_days TYPE i iv_member TYPE abap_bool RETURNING VALUE(rv_fee) TYPE decfloat34. METHODS daily_rate FOR TESTING. METHODS member_discount FOR TESTING. METHODS invalid_days FOR TESTING. ENDCLASS. CLASS {{p}}lkr_test IMPLEMENTATION. METHOD fee_for. CALL FUNCTION '{{P}}LKR_FEE' EXPORTING iv_size_code = iv_size_code iv_days = iv_days iv_member = iv_member IMPORTING ev_fee = rv_fee EXCEPTIONS invalid_days = 1 OTHERS = 2. cl_abap_unit_assert=>assert_subrc( exp = 0 ). ENDMETHOD. METHOD daily_rate. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '12.75' ) act = fee_for( iv_size_code = 'M' iv_days = 3 iv_member = abap_false ) ). ENDMETHOD. METHOD member_discount. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '6.38' ) act = fee_for( iv_size_code = 'M' iv_days = 3 iv_member = abap_true ) ). ENDMETHOD. METHOD invalid_days. DATA lv_fee TYPE decfloat34. CALL FUNCTION '{{P}}LKR_FEE' EXPORTING iv_size_code = 'S' iv_days = 0 IMPORTING ev_fee = lv_fee EXCEPTIONS invalid_days = 1 OTHERS = 2. cl_abap_unit_assert=>assert_equals( exp = 1 act = sy-subrc ). ENDMETHOD. ENDCLASS.