Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014aUaQeLnwbb1zTpN7kHeat
158 lines
7.5 KiB
ABAP
158 lines
7.5 KiB
ABAP
CLASS {{p}}t11_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
|
|
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_grinder TYPE {{p}}tool_crib=>ty_tool_id VALUE 'GRINDER'.
|
|
CONSTANTS c_wrench TYPE {{p}}tool_crib=>ty_tool_id VALUE 'WRENCH'.
|
|
CONSTANTS c_smith TYPE {{p}}tool_crib=>ty_employee VALUE 'SMITH'.
|
|
|
|
DATA mo_cut TYPE REF TO {{p}}tool_crib.
|
|
|
|
METHODS setup.
|
|
METHODS tool_ids
|
|
IMPORTING it_loans TYPE {{p}}tool_crib=>tt_loans
|
|
RETURNING VALUE(rt_ids) TYPE tt_tool_ids.
|
|
METHODS first_loan
|
|
IMPORTING it_loans TYPE {{p}}tool_crib=>tt_loans
|
|
RETURNING VALUE(rs_loan) TYPE {{p}}tool_crib=>ty_loan.
|
|
METHODS lend_new_tool_ok FOR TESTING.
|
|
METHODS lend_twice_rejected FOR TESTING.
|
|
METHODS return_tool_ok FOR TESTING.
|
|
METHODS open_loans_due_date_order FOR TESTING.
|
|
METHODS open_loans_tool_id_order FOR TESTING.
|
|
METHODS overdue_only_before_today FOR TESTING.
|
|
METHODS overdue_initial_today_empty FOR TESTING.
|
|
METHODS empty_tool_id_rejected FOR TESTING.
|
|
METHODS invalid_loan_rejected FOR TESTING.
|
|
METHODS unknown_tool_rejected FOR TESTING.
|
|
METHODS lower_case_and_spaces FOR TESTING.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS {{p}}t11_hidden IMPLEMENTATION.
|
|
METHOD setup.
|
|
mo_cut = NEW {{p}}tool_crib( ).
|
|
ENDMETHOD.
|
|
|
|
METHOD tool_ids.
|
|
LOOP AT it_loans INTO DATA(ls_loan).
|
|
INSERT ls_loan-tool_id INTO TABLE rt_ids.
|
|
ENDLOOP.
|
|
ENDMETHOD.
|
|
|
|
METHOD first_loan.
|
|
LOOP AT it_loans INTO rs_loan.
|
|
EXIT.
|
|
ENDLOOP.
|
|
ENDMETHOD.
|
|
|
|
METHOD lend_new_tool_ok.
|
|
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 ) ).
|
|
cl_abap_unit_assert=>assert_false( act = mo_cut->is_on_loan( c_saw ) ).
|
|
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 = 'JONES'
|
|
iv_due_date = '20250210' ) ).
|
|
DATA(lt_loans) = mo_cut->open_loans( ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_loans ) ).
|
|
DATA(ls_loan) = first_loan( lt_loans ).
|
|
cl_abap_unit_assert=>assert_equals( exp = c_smith act = ls_loan-employee ).
|
|
ENDMETHOD.
|
|
|
|
METHOD return_tool_ok.
|
|
cl_abap_unit_assert=>assert_false( act = mo_cut->return_tool( c_saw ) ).
|
|
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 ) ).
|
|
DATA(lt_loans) = mo_cut->open_loans( ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lines( lt_loans ) ).
|
|
ENDMETHOD.
|
|
|
|
METHOD open_loans_due_date_order.
|
|
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' ).
|
|
mo_cut->lend( iv_tool_id = c_grinder iv_employee = c_smith iv_due_date = '20250210' ).
|
|
DATA(lt_loans) = mo_cut->open_loans( ).
|
|
DATA(lt_ids) = tool_ids( lt_loans ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 3 act = lines( lt_ids ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = c_drill act = lt_ids[ 1 ] ).
|
|
cl_abap_unit_assert=>assert_equals( exp = c_grinder act = lt_ids[ 2 ] ).
|
|
cl_abap_unit_assert=>assert_equals( exp = c_saw act = lt_ids[ 3 ] ).
|
|
ENDMETHOD.
|
|
|
|
METHOD open_loans_tool_id_order.
|
|
mo_cut->lend( iv_tool_id = c_wrench iv_employee = c_smith iv_due_date = '20250110' ).
|
|
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) = tool_ids( lt_loans ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 2 act = lines( lt_ids ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = c_drill act = lt_ids[ 1 ] ).
|
|
cl_abap_unit_assert=>assert_equals( exp = c_wrench act = lt_ids[ 2 ] ).
|
|
ENDMETHOD.
|
|
|
|
METHOD overdue_only_before_today.
|
|
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' ).
|
|
mo_cut->lend( iv_tool_id = c_grinder iv_employee = c_smith iv_due_date = '20250111' ).
|
|
DATA(lt_loans) = mo_cut->overdue_loans( '20250110' ).
|
|
DATA(lt_ids) = tool_ids( lt_loans ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_ids ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = c_drill act = lt_ids[ 1 ] ).
|
|
ENDMETHOD.
|
|
|
|
METHOD overdue_initial_today_empty.
|
|
DATA lv_today TYPE d.
|
|
mo_cut->lend( iv_tool_id = c_drill iv_employee = c_smith iv_due_date = '20250109' ).
|
|
DATA(lt_loans) = mo_cut->overdue_loans( lv_today ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lines( lt_loans ) ).
|
|
ENDMETHOD.
|
|
|
|
METHOD empty_tool_id_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->is_on_loan( ' ' ) ).
|
|
cl_abap_unit_assert=>assert_false( act = mo_cut->return_tool( ' ' ) ).
|
|
DATA(lt_loans) = mo_cut->open_loans( ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lines( lt_loans ) ).
|
|
ENDMETHOD.
|
|
|
|
METHOD invalid_loan_rejected.
|
|
DATA lv_initial_date TYPE d.
|
|
cl_abap_unit_assert=>assert_false( act = mo_cut->lend( iv_tool_id = c_drill
|
|
iv_employee = ' '
|
|
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 = lv_initial_date ) ).
|
|
cl_abap_unit_assert=>assert_false( act = mo_cut->is_on_loan( c_drill ) ).
|
|
ENDMETHOD.
|
|
|
|
METHOD unknown_tool_rejected.
|
|
cl_abap_unit_assert=>assert_false( act = mo_cut->lend( iv_tool_id = 'HAMMER'
|
|
iv_employee = c_smith
|
|
iv_due_date = '20250110' ) ).
|
|
cl_abap_unit_assert=>assert_false( act = mo_cut->is_on_loan( 'HAMMER' ) ).
|
|
ENDMETHOD.
|
|
|
|
METHOD lower_case_and_spaces.
|
|
cl_abap_unit_assert=>assert_true( act = mo_cut->lend( iv_tool_id = 'd r i l l'
|
|
iv_employee = 'smith'
|
|
iv_due_date = '20250110' ) ).
|
|
cl_abap_unit_assert=>assert_true( act = mo_cut->is_on_loan( c_drill ) ).
|
|
DATA(lt_loans) = mo_cut->open_loans( ).
|
|
DATA(ls_loan) = first_loan( lt_loans ).
|
|
cl_abap_unit_assert=>assert_equals( exp = c_drill act = ls_loan-tool_id ).
|
|
cl_abap_unit_assert=>assert_equals( exp = c_smith act = ls_loan-employee ).
|
|
ENDMETHOD.
|
|
ENDCLASS.
|