Files
abap-llm/tasks_gen/train/G1144/hidden/move_hidden.clas.abap
2026-10-05 18:02:52 +02:00

136 lines
5.6 KiB
ABAP

CLASS {{p}}move_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
METHODS call
IMPORTING iv_order_no TYPE string
iv_move_date TYPE d
iv_work_hours TYPE decfloat34
iv_box_count TYPE i
iv_calc_mode TYPE string
EXPORTING ev_fee TYPE decfloat34
ev_msg TYPE string
ev_subrc TYPE sysubrc.
METHODS eco_base_fee FOR TESTING.
METHODS std_base_fee FOR TESTING.
METHODS box_fee_added FOR TESTING.
METHODS exp_surcharge FOR TESTING.
METHODS rounds_half_up FOR TESTING.
METHODS rejects_empty_order FOR TESTING.
METHODS rejects_empty_date FOR TESTING.
METHODS rejects_bad_hours FOR TESTING.
METHODS rejects_negative_boxes FOR TESTING.
METHODS rejects_unknown_mode FOR TESTING.
METHODS first_error_wins FOR TESTING.
ENDCLASS.
CLASS {{p}}move_hidden IMPLEMENTATION.
METHOD call.
ev_fee = 0.
ev_msg = ''.
CALL FUNCTION '{{P}}MOVE_FEE'
EXPORTING
iv_order_no = iv_order_no
iv_move_date = iv_move_date
iv_work_hours = iv_work_hours
iv_box_count = iv_box_count
iv_calc_mode = iv_calc_mode
IMPORTING
ev_fee = ev_fee
ev_msg = ev_msg
EXCEPTIONS
invalid_order = 1
invalid_date = 2
invalid_hours = 3
invalid_count = 4
unknown_mode = 5
OTHERS = 6.
ev_subrc = sy-subrc.
ENDMETHOD.
METHOD eco_base_fee.
call( EXPORTING iv_order_no = `A1` iv_move_date = '20250101'
iv_work_hours = 3 iv_box_count = 0 iv_calc_mode = `ECO`
IMPORTING ev_fee = DATA(lv_fee) ev_msg = DATA(lv_msg) 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( 135 ) act = lv_fee ).
cl_abap_unit_assert=>assert_equals( exp = `OK` act = lv_msg ).
ENDMETHOD.
METHOD std_base_fee.
call( EXPORTING iv_order_no = `A2` iv_move_date = '20250201'
iv_work_hours = 2 iv_box_count = 0 iv_calc_mode = `STD`
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 box_fee_added.
call( EXPORTING iv_order_no = `A3` iv_move_date = '20250201'
iv_work_hours = 1 iv_box_count = 4 iv_calc_mode = `STD`
IMPORTING ev_fee = DATA(lv_fee) ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 66 ) act = lv_fee ).
ENDMETHOD.
METHOD exp_surcharge.
call( EXPORTING iv_order_no = `A4` iv_move_date = '20250201'
iv_work_hours = 1 iv_box_count = 2 iv_calc_mode = `EXP`
IMPORTING ev_fee = DATA(lv_fee) ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '93.6' ) act = lv_fee ).
ENDMETHOD.
METHOD rounds_half_up.
call( EXPORTING iv_order_no = `A5` iv_move_date = '20250201'
iv_work_hours = '1.005' iv_box_count = 0 iv_calc_mode = `ECO`
IMPORTING ev_fee = DATA(lv_fee) ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '45.23' ) act = lv_fee ).
ENDMETHOD.
METHOD rejects_empty_order.
call( EXPORTING iv_order_no = `` iv_move_date = '20250101'
iv_work_hours = 1 iv_box_count = 0 iv_calc_mode = `STD`
IMPORTING ev_msg = DATA(lv_msg) ev_subrc = DATA(lv_rc) ).
cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_rc ).
cl_abap_unit_assert=>assert_equals( exp = `Order number is missing` act = lv_msg ).
ENDMETHOD.
METHOD rejects_empty_date.
call( EXPORTING iv_order_no = `A6` iv_move_date = '00000000'
iv_work_hours = 1 iv_box_count = 0 iv_calc_mode = `STD`
IMPORTING ev_msg = DATA(lv_msg) ev_subrc = DATA(lv_rc) ).
cl_abap_unit_assert=>assert_equals( exp = 2 act = lv_rc ).
cl_abap_unit_assert=>assert_equals( exp = `Move date is missing` act = lv_msg ).
ENDMETHOD.
METHOD rejects_bad_hours.
call( EXPORTING iv_order_no = `A7` iv_move_date = '20250101'
iv_work_hours = 0 iv_box_count = 0 iv_calc_mode = `STD`
IMPORTING ev_msg = DATA(lv_msg) ev_subrc = DATA(lv_rc) ).
cl_abap_unit_assert=>assert_equals( exp = 3 act = lv_rc ).
cl_abap_unit_assert=>assert_equals( exp = `Work hours are not positive` act = lv_msg ).
ENDMETHOD.
METHOD rejects_negative_boxes.
call( EXPORTING iv_order_no = `A8` iv_move_date = '20250101'
iv_work_hours = 1 iv_box_count = -1 iv_calc_mode = `STD`
IMPORTING ev_msg = DATA(lv_msg) ev_subrc = DATA(lv_rc) ).
cl_abap_unit_assert=>assert_equals( exp = 4 act = lv_rc ).
cl_abap_unit_assert=>assert_equals( exp = `Box count is negative` act = lv_msg ).
ENDMETHOD.
METHOD rejects_unknown_mode.
call( EXPORTING iv_order_no = `A9` iv_move_date = '20250101'
iv_work_hours = 1 iv_box_count = 0 iv_calc_mode = `FIX`
IMPORTING ev_msg = DATA(lv_msg) ev_subrc = DATA(lv_rc) ).
cl_abap_unit_assert=>assert_equals( exp = 5 act = lv_rc ).
cl_abap_unit_assert=>assert_equals( exp = `Calculation mode is unknown` act = lv_msg ).
ENDMETHOD.
METHOD first_error_wins.
call( EXPORTING iv_order_no = `` iv_move_date = '00000000'
iv_work_hours = -2 iv_box_count = -1 iv_calc_mode = `FIX`
IMPORTING ev_subrc = DATA(lv_rc) ).
cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_rc ).
ENDMETHOD.
ENDCLASS.