Fix coverage with several contract classes; table annotation and file path checks; clean task dir on write

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014aUaQeLnwbb1zTpN7kHeat
This commit is contained in:
Kral
2026-10-03 08:44:35 +02:00
parent fb576b0954
commit 03ab36149e
388 changed files with 28620 additions and 339 deletions

View File

@@ -0,0 +1,93 @@
CLASS ltc_refill_planner DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
DATA mo_cut TYPE REF TO {{p}}refill_planner.
METHODS setup.
METHODS adds_machine FOR TESTING.
METHODS replaces_machine FOR TESTING.
METHODS accumulates_refill FOR TESTING.
METHODS rejects_bad_quantity FOR TESTING.
METHODS ignores_unknown_machine FOR TESTING.
METHODS sorts_low_fill_level FOR TESTING.
METHODS ranks_largest_refills FOR TESTING.
METHODS sums_per_district FOR TESTING.
ENDCLASS.
CLASS ltc_refill_planner IMPLEMENTATION.
METHOD setup.
mo_cut = NEW {{p}}refill_planner( ).
ENDMETHOD.
METHOD adds_machine.
mo_cut->add_machine( iv_machine_id = 'M1' iv_district = 'D1' iv_fill_level = 10 ).
DATA(lt_machines) = mo_cut->machines_below( 50 ).
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_machines ) ).
ENDMETHOD.
METHOD replaces_machine.
mo_cut->add_machine( iv_machine_id = 'M1' iv_district = 'D1' iv_fill_level = 10 ).
mo_cut->add_machine( iv_machine_id = 'M1' iv_district = 'D2' iv_fill_level = 20 ).
DATA(lt_machines) = mo_cut->machines_below( 50 ).
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_machines ) ).
LOOP AT lt_machines INTO DATA(ls_machine).
cl_abap_unit_assert=>assert_equals( exp = 'D2' act = ls_machine-district ).
ENDLOOP.
ENDMETHOD.
METHOD accumulates_refill.
mo_cut->add_machine( iv_machine_id = 'M1' iv_district = 'D1' iv_fill_level = 10 ).
mo_cut->add_refill( iv_machine_id = 'M1' iv_quantity = 5 ).
mo_cut->add_refill( iv_machine_id = 'M1' iv_quantity = 7 ).
cl_abap_unit_assert=>assert_equals( exp = 12 act = mo_cut->get_refill( 'M1' ) ).
ENDMETHOD.
METHOD rejects_bad_quantity.
mo_cut->add_machine( iv_machine_id = 'M1' iv_district = 'D1' iv_fill_level = 10 ).
cl_abap_unit_assert=>assert_equals( exp = abap_false
act = mo_cut->add_refill( iv_machine_id = 'M1' iv_quantity = 0 ) ).
ENDMETHOD.
METHOD ignores_unknown_machine.
cl_abap_unit_assert=>assert_equals( exp = abap_false
act = mo_cut->add_refill( iv_machine_id = 'M9' iv_quantity = 5 ) ).
ENDMETHOD.
METHOD sorts_low_fill_level.
DATA lv_position TYPE i.
mo_cut->add_machine( iv_machine_id = 'M2' iv_district = 'D1' iv_fill_level = 20 ).
mo_cut->add_machine( iv_machine_id = 'M1' iv_district = 'D1' iv_fill_level = 10 ).
DATA(lt_machines) = mo_cut->machines_below( 25 ).
cl_abap_unit_assert=>assert_equals( exp = 2 act = lines( lt_machines ) ).
LOOP AT lt_machines INTO DATA(ls_machine).
lv_position = lv_position + 1.
IF lv_position = 1.
cl_abap_unit_assert=>assert_equals( exp = 'M1' act = ls_machine-machine_id ).
ENDIF.
ENDLOOP.
ENDMETHOD.
METHOD ranks_largest_refills.
mo_cut->add_machine( iv_machine_id = 'M1' iv_district = 'D1' iv_fill_level = 10 ).
mo_cut->add_machine( iv_machine_id = 'M2' iv_district = 'D1' iv_fill_level = 10 ).
mo_cut->add_refill( iv_machine_id = 'M1' iv_quantity = 3 ).
mo_cut->add_refill( iv_machine_id = 'M2' iv_quantity = 8 ).
DATA(lt_refills) = mo_cut->top_refills( 1 ).
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_refills ) ).
LOOP AT lt_refills INTO DATA(ls_refill).
cl_abap_unit_assert=>assert_equals( exp = 'M2' act = ls_refill-machine_id ).
ENDLOOP.
ENDMETHOD.
METHOD sums_per_district.
mo_cut->add_machine( iv_machine_id = 'M1' iv_district = 'D1' iv_fill_level = 10 ).
mo_cut->add_machine( iv_machine_id = 'M2' iv_district = 'D1' iv_fill_level = 10 ).
mo_cut->add_refill( iv_machine_id = 'M1' iv_quantity = 3 ).
mo_cut->add_refill( iv_machine_id = 'M2' iv_quantity = 8 ).
DATA(lt_summary) = mo_cut->district_summary( ).
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_summary ) ).
LOOP AT lt_summary INTO DATA(ls_row).
cl_abap_unit_assert=>assert_equals( exp = 2 act = ls_row-machines ).
cl_abap_unit_assert=>assert_equals( exp = 11 act = ls_row-quantity ).
ENDLOOP.
ENDMETHOD.
ENDCLASS.