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,90 @@
CLASS ltc_tool_crib DEFINITION FINAL FOR TESTING
DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
TYPES tt_tool_ids TYPE STANDARD TABLE OF {{p}}tool_crib=>ty_tool_id WITH EMPTY KEY.
CONSTANTS c_drill TYPE {{p}}tool_crib=>ty_tool_id VALUE 'DRILL'.
CONSTANTS c_saw TYPE {{p}}tool_crib=>ty_tool_id VALUE 'SAW'.
CONSTANTS c_smith TYPE {{p}}tool_crib=>ty_employee VALUE 'SMITH'.
DATA mo_cut TYPE REF TO {{p}}tool_crib.
METHODS setup.
METHODS lend_records_loan FOR TESTING.
METHODS lend_twice_rejected FOR TESTING.
METHODS lend_unknown_tool FOR TESTING.
METHODS return_removes_loan FOR TESTING.
METHODS open_loans_are_sorted FOR TESTING.
METHODS overdue_loans_are_filtered FOR TESTING.
METHODS empty_input_rejected FOR TESTING.
METHODS input_is_normalized FOR TESTING.
ENDCLASS.
CLASS ltc_tool_crib IMPLEMENTATION.
METHOD setup.
mo_cut = NEW {{p}}tool_crib( ).
ENDMETHOD.
METHOD lend_records_loan.
cl_abap_unit_assert=>assert_true( act = mo_cut->lend( iv_tool_id = c_drill
iv_employee = c_smith
iv_due_date = '20250110' ) ).
cl_abap_unit_assert=>assert_true( act = mo_cut->is_on_loan( c_drill ) ).
ENDMETHOD.
METHOD lend_twice_rejected.
mo_cut->lend( iv_tool_id = c_drill iv_employee = c_smith iv_due_date = '20250110' ).
cl_abap_unit_assert=>assert_false( act = mo_cut->lend( iv_tool_id = c_drill
iv_employee = c_smith
iv_due_date = '20250111' ) ).
ENDMETHOD.
METHOD lend_unknown_tool.
cl_abap_unit_assert=>assert_false( act = mo_cut->lend( iv_tool_id = 'HAMMER'
iv_employee = c_smith
iv_due_date = '20250110' ) ).
ENDMETHOD.
METHOD return_removes_loan.
mo_cut->lend( iv_tool_id = c_drill iv_employee = c_smith iv_due_date = '20250110' ).
cl_abap_unit_assert=>assert_true( act = mo_cut->return_tool( c_drill ) ).
cl_abap_unit_assert=>assert_false( act = mo_cut->is_on_loan( c_drill ) ).
cl_abap_unit_assert=>assert_false( act = mo_cut->return_tool( c_drill ) ).
ENDMETHOD.
METHOD open_loans_are_sorted.
mo_cut->lend( iv_tool_id = c_saw iv_employee = c_smith iv_due_date = '20250310' ).
mo_cut->lend( iv_tool_id = c_drill iv_employee = c_smith iv_due_date = '20250110' ).
DATA(lt_loans) = mo_cut->open_loans( ).
DATA(lt_ids) = VALUE tt_tool_ids( ).
LOOP AT lt_loans INTO DATA(ls_loan).
INSERT ls_loan-tool_id INTO TABLE lt_ids.
ENDLOOP.
cl_abap_unit_assert=>assert_equals( exp = c_drill act = lt_ids[ 1 ] ).
cl_abap_unit_assert=>assert_equals( exp = c_saw act = lt_ids[ 2 ] ).
ENDMETHOD.
METHOD overdue_loans_are_filtered.
mo_cut->lend( iv_tool_id = c_drill iv_employee = c_smith iv_due_date = '20250109' ).
mo_cut->lend( iv_tool_id = c_saw iv_employee = c_smith iv_due_date = '20250110' ).
DATA(lt_loans) = mo_cut->overdue_loans( '20250110' ).
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_loans ) ).
ENDMETHOD.
METHOD empty_input_rejected.
cl_abap_unit_assert=>assert_false( act = mo_cut->lend( iv_tool_id = ' '
iv_employee = c_smith
iv_due_date = '20250110' ) ).
cl_abap_unit_assert=>assert_false( act = mo_cut->lend( iv_tool_id = c_drill
iv_employee = ' '
iv_due_date = '20250110' ) ).
ENDMETHOD.
METHOD input_is_normalized.
cl_abap_unit_assert=>assert_true( act = mo_cut->lend( iv_tool_id = 'drill'
iv_employee = 'smith'
iv_due_date = '20250110' ) ).
cl_abap_unit_assert=>assert_true( act = mo_cut->is_on_loan( c_drill ) ).
ENDMETHOD.
ENDCLASS.