CLASS {{p}}t14_test DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. TYPES: BEGIN OF ty_result, fee TYPE decfloat34, note TYPE string, subrc TYPE sysubrc, END OF ty_result. METHODS calc IMPORTING iv_visitor TYPE string iv_day TYPE string iv_size TYPE i iv_member TYPE abap_bool RETURNING VALUE(rs_result) TYPE ty_result. METHODS adult_fee FOR TESTING. METHODS family_fee FOR TESTING. METHODS weekend_and_member FOR TESTING. METHODS invalid_input FOR TESTING. ENDCLASS. CLASS {{p}}t14_test IMPLEMENTATION. METHOD calc. rs_result-fee = 0. rs_result-note = ''. CALL FUNCTION '{{P}}MUSEUM_FEE_OLD' EXPORTING iv_visitor = iv_visitor iv_day = iv_day iv_size = iv_size iv_member = iv_member IMPORTING ev_fee = rs_result-fee ev_note = rs_result-note EXCEPTIONS invalid_input = 1 OTHERS = 2. rs_result-subrc = sy-subrc. ENDMETHOD. METHOD adult_fee. DATA(ls_r) = me->calc( iv_visitor = 'ADULT' iv_day = 'MON' iv_size = 2 iv_member = abap_false ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 24 ) act = ls_r-fee ). ENDMETHOD. METHOD family_fee. DATA(ls_r) = me->calc( iv_visitor = 'FAMILY' iv_day = 'MON' iv_size = 6 iv_member = abap_false ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 42 ) act = ls_r-fee ). ENDMETHOD. METHOD weekend_and_member. DATA(ls_r) = me->calc( iv_visitor = 'ADULT' iv_day = 'SAT' iv_size = 2 iv_member = abap_true ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '18.8' ) act = ls_r-fee ). ENDMETHOD. METHOD invalid_input. DATA(ls_r) = me->calc( iv_visitor = 'ADULT' iv_day = 'MON' iv_size = 0 iv_member = abap_false ). cl_abap_unit_assert=>assert_equals( exp = 1 act = ls_r-subrc ). ENDMETHOD. ENDCLASS.