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

140 lines
4.2 KiB
ABAP

CLASS {{p}}d02_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
TYPES ty_reason TYPE c LENGTH 10.
DATA mo_cut TYPE REF TO {{p}}shift_booker.
METHODS setup.
METHODS valid_shift
RETURNING VALUE(rs_shift) TYPE {{p}}shift_booker=>ty_shift.
METHODS expect_reason
IMPORTING is_shift TYPE {{p}}shift_booker=>ty_shift
iv_reason TYPE ty_reason.
METHODS expect_pay
IMPORTING is_shift TYPE {{p}}shift_booker=>ty_shift
iv_pay TYPE {{p}}shift_booker=>ty_amount.
METHODS books_standard_shift FOR TESTING.
METHODS books_overtime_shift FOR TESTING.
METHODS books_second_overtime FOR TESTING.
METHODS books_small_shift FOR TESTING.
METHODS rejects_empty_order FOR TESTING.
METHODS rejects_initial_date FOR TESTING.
METHODS rejects_zero_hours FOR TESTING.
METHODS rejects_unknown_mode FOR TESTING.
METHODS rejects_unknown_group FOR TESTING.
METHODS rejects_zero_pieces FOR TESTING.
METHODS order_rule_wins FOR TESTING.
ENDCLASS.
CLASS {{p}}d02_hidden IMPLEMENTATION.
METHOD setup.
mo_cut = NEW {{p}}shift_booker( ).
ENDMETHOD.
METHOD valid_shift.
rs_shift = VALUE #( order_no = '4711'
start_date = '20240212'
work_hours = '8.00'
calc_mode = 'STD'
group_code = 'A'
piece_count = 100 ).
ENDMETHOD.
METHOD expect_reason.
TRY.
mo_cut->evaluate( is_shift ).
cl_abap_unit_assert=>fail( msg = |no exception for { iv_reason }| ).
CATCH {{p}}cx_shift_error INTO DATA(lx_error).
cl_abap_unit_assert=>assert_equals( exp = iv_reason
act = lx_error->mv_reason ).
ENDTRY.
ENDMETHOD.
METHOD expect_pay.
TRY.
cl_abap_unit_assert=>assert_equals( exp = iv_pay
act = mo_cut->evaluate( is_shift ) ).
CATCH {{p}}cx_shift_error.
cl_abap_unit_assert=>fail( msg = 'unexpected exception' ).
ENDTRY.
ENDMETHOD.
METHOD books_standard_shift.
expect_pay( is_shift = valid_shift( ) iv_pay = '194.00' ).
ENDMETHOD.
METHOD books_overtime_shift.
DATA(ls_shift) = valid_shift( ).
ls_shift-work_hours = '7.50'.
ls_shift-calc_mode = 'OT1'.
ls_shift-group_code = 'B'.
ls_shift-piece_count = 40.
expect_pay( is_shift = ls_shift iv_pay = '267.50' ).
ENDMETHOD.
METHOD books_second_overtime.
DATA(ls_shift) = valid_shift( ).
ls_shift-work_hours = '6.00'.
ls_shift-calc_mode = 'OT2'.
ls_shift-group_code = 'C'.
ls_shift-piece_count = 10.
expect_pay( is_shift = ls_shift iv_pay = '317.00' ).
ENDMETHOD.
METHOD books_small_shift.
DATA(ls_shift) = valid_shift( ).
ls_shift-work_hours = '0.50'.
ls_shift-piece_count = 1.
expect_pay( is_shift = ls_shift iv_pay = '9.50' ).
ENDMETHOD.
METHOD rejects_empty_order.
DATA(ls_shift) = valid_shift( ).
ls_shift-order_no = ''.
expect_reason( is_shift = ls_shift iv_reason = 'ORDER' ).
ENDMETHOD.
METHOD rejects_initial_date.
DATA(ls_shift) = valid_shift( ).
ls_shift-start_date = '00000000'.
expect_reason( is_shift = ls_shift iv_reason = 'DATE' ).
ENDMETHOD.
METHOD rejects_zero_hours.
DATA(ls_shift) = valid_shift( ).
ls_shift-work_hours = '0.00'.
expect_reason( is_shift = ls_shift iv_reason = 'HOURS' ).
ENDMETHOD.
METHOD rejects_unknown_mode.
DATA(ls_shift) = valid_shift( ).
ls_shift-calc_mode = 'XXX'.
expect_reason( is_shift = ls_shift iv_reason = 'MODE' ).
ENDMETHOD.
METHOD rejects_unknown_group.
DATA(ls_shift) = valid_shift( ).
ls_shift-group_code = 'Z'.
expect_reason( is_shift = ls_shift iv_reason = 'GROUP' ).
ENDMETHOD.
METHOD rejects_zero_pieces.
DATA(ls_shift) = valid_shift( ).
ls_shift-piece_count = 0.
expect_reason( is_shift = ls_shift iv_reason = 'COUNT' ).
ENDMETHOD.
METHOD order_rule_wins.
DATA(ls_shift) = valid_shift( ).
ls_shift-order_no = ''.
ls_shift-work_hours = '0.00'.
expect_reason( is_shift = ls_shift iv_reason = 'ORDER' ).
ENDMETHOD.
ENDCLASS.