CLASS {{p}}t14_test DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. METHODS call_fee IMPORTING iv_tour_type TYPE string iv_passengers TYPE i iv_minutes TYPE i iv_member TYPE abap_bool DEFAULT abap_false iv_fee TYPE decfloat34 DEFAULT 7 EXPORTING ev_fee TYPE decfloat34 ev_skip TYPE abap_bool ev_subrc TYPE sysubrc. METHODS scenic_price FOR TESTING. METHODS member_price FOR TESTING. METHODS training_price FOR TESTING. METHODS charter_price FOR TESTING. METHODS invalid_input FOR TESTING. ENDCLASS. CLASS {{p}}t14_test IMPLEMENTATION. METHOD call_fee. ev_fee = iv_fee. CALL FUNCTION '{{P}}HELI_FEE' EXPORTING iv_tour_type = iv_tour_type iv_passengers = iv_passengers iv_minutes = iv_minutes iv_member = iv_member IMPORTING ev_skip = ev_skip CHANGING cv_fee = ev_fee EXCEPTIONS invalid_passengers = 1 invalid_minutes = 2 OTHERS = 3. ev_subrc = sy-subrc. ENDMETHOD. METHOD scenic_price. call_fee( EXPORTING iv_tour_type = `SC` iv_passengers = 2 iv_minutes = 10 IMPORTING ev_fee = DATA(lv_fee) ev_skip = DATA(lv_skip) ev_subrc = DATA(lv_rc) ). cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rc ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 110 ) act = lv_fee ). cl_abap_unit_assert=>assert_false( lv_skip ). ENDMETHOD. METHOD member_price. call_fee( EXPORTING iv_tour_type = `SC` iv_passengers = 3 iv_minutes = 7 iv_member = abap_true IMPORTING ev_fee = DATA(lv_fee) ev_subrc = DATA(lv_rc) ). cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rc ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '88.38' ) act = lv_fee ). ENDMETHOD. METHOD training_price. call_fee( EXPORTING iv_tour_type = `TR` iv_passengers = 2 iv_minutes = 10 IMPORTING ev_fee = DATA(lv_fee) ev_subrc = DATA(lv_rc) ). cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rc ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 120 ) act = lv_fee ). ENDMETHOD. METHOD charter_price. call_fee( EXPORTING iv_tour_type = `CH` iv_passengers = 2 iv_minutes = 10 iv_fee = 7 IMPORTING ev_fee = DATA(lv_fee) ev_skip = DATA(lv_skip) ev_subrc = DATA(lv_rc) ). cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rc ). cl_abap_unit_assert=>assert_true( lv_skip ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 7 ) act = lv_fee ). ENDMETHOD. METHOD invalid_input. call_fee( EXPORTING iv_tour_type = `SC` iv_passengers = 0 iv_minutes = 10 IMPORTING ev_subrc = DATA(lv_rc) ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_rc ). call_fee( EXPORTING iv_tour_type = `TR` iv_passengers = 2 iv_minutes = 4 IMPORTING ev_subrc = DATA(lv_rc_minutes) ). cl_abap_unit_assert=>assert_equals( exp = 2 act = lv_rc_minutes ). ENDMETHOD. ENDCLASS.