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:
107
tasks_gen/eval/G0117/reference/tool_crib.clas.abap
Normal file
107
tasks_gen/eval/G0117/reference/tool_crib.clas.abap
Normal file
@@ -0,0 +1,107 @@
|
||||
CLASS {{p}}tool_crib DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
||||
PUBLIC SECTION.
|
||||
TYPES ty_tool_id TYPE c LENGTH 10.
|
||||
TYPES ty_employee TYPE c LENGTH 20.
|
||||
TYPES:
|
||||
BEGIN OF ty_loan,
|
||||
tool_id TYPE ty_tool_id,
|
||||
employee TYPE ty_employee,
|
||||
due_date TYPE d,
|
||||
END OF ty_loan.
|
||||
TYPES tt_loans TYPE SORTED TABLE OF ty_loan
|
||||
WITH NON-UNIQUE KEY due_date tool_id.
|
||||
|
||||
METHODS lend
|
||||
IMPORTING iv_tool_id TYPE ty_tool_id
|
||||
iv_employee TYPE ty_employee
|
||||
iv_due_date TYPE d
|
||||
RETURNING VALUE(rv_accepted) TYPE abap_bool.
|
||||
METHODS return_tool
|
||||
IMPORTING iv_tool_id TYPE ty_tool_id
|
||||
RETURNING VALUE(rv_found) TYPE abap_bool.
|
||||
METHODS is_on_loan
|
||||
IMPORTING iv_tool_id TYPE ty_tool_id
|
||||
RETURNING VALUE(rv_on_loan) TYPE abap_bool.
|
||||
METHODS open_loans
|
||||
RETURNING VALUE(rt_loans) TYPE tt_loans.
|
||||
METHODS overdue_loans
|
||||
IMPORTING iv_today TYPE d
|
||||
RETURNING VALUE(rt_loans) TYPE tt_loans.
|
||||
|
||||
PRIVATE SECTION.
|
||||
TYPES tt_loan_store TYPE SORTED TABLE OF ty_loan WITH UNIQUE KEY tool_id.
|
||||
DATA mt_loans TYPE tt_loan_store.
|
||||
|
||||
METHODS normalize_tool_id
|
||||
IMPORTING iv_tool_id TYPE ty_tool_id
|
||||
RETURNING VALUE(rv_tool_id) TYPE ty_tool_id.
|
||||
METHODS normalize_employee
|
||||
IMPORTING iv_employee TYPE ty_employee
|
||||
RETURNING VALUE(rv_employee) TYPE ty_employee.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}tool_crib IMPLEMENTATION.
|
||||
METHOD lend.
|
||||
DATA(lv_tool_id) = normalize_tool_id( iv_tool_id ).
|
||||
DATA(lv_employee) = normalize_employee( iv_employee ).
|
||||
|
||||
IF lv_tool_id IS INITIAL OR lv_employee IS INITIAL OR iv_due_date IS INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
IF {{p}}tool_master=>is_valid_tool( lv_tool_id ) = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
IF is_on_loan( lv_tool_id ) = abap_true.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA(ls_loan) = VALUE ty_loan( tool_id = lv_tool_id
|
||||
employee = lv_employee
|
||||
due_date = iv_due_date ).
|
||||
INSERT ls_loan INTO TABLE mt_loans.
|
||||
rv_accepted = abap_true.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD return_tool.
|
||||
DATA(lv_tool_id) = normalize_tool_id( iv_tool_id ).
|
||||
IF lv_tool_id IS INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
DELETE TABLE mt_loans WITH TABLE KEY tool_id = lv_tool_id.
|
||||
rv_found = xsdbool( sy-subrc = 0 ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD is_on_loan.
|
||||
DATA(lv_tool_id) = normalize_tool_id( iv_tool_id ).
|
||||
IF lv_tool_id IS INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
rv_on_loan = xsdbool( line_exists( mt_loans[ tool_id = lv_tool_id ] ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD open_loans.
|
||||
LOOP AT mt_loans INTO DATA(ls_loan).
|
||||
INSERT ls_loan INTO TABLE rt_loans.
|
||||
ENDLOOP.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD overdue_loans.
|
||||
IF iv_today IS INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
LOOP AT mt_loans INTO DATA(ls_loan).
|
||||
IF ls_loan-due_date < iv_today.
|
||||
INSERT ls_loan INTO TABLE rt_loans.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD normalize_tool_id.
|
||||
rv_tool_id = to_upper( replace( val = iv_tool_id sub = ` ` with = `` occ = 0 ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD normalize_employee.
|
||||
rv_employee = to_upper( replace( val = iv_employee sub = ` ` with = `` occ = 0 ) ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
90
tasks_gen/eval/G0117/reference/tool_crib.testclasses.abap
Normal file
90
tasks_gen/eval/G0117/reference/tool_crib.testclasses.abap
Normal 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.
|
||||
Reference in New Issue
Block a user