Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014aUaQeLnwbb1zTpN7kHeat
74 lines
3.2 KiB
ABAP
74 lines
3.2 KiB
ABAP
CLASS ltc_departure_planner DEFINITION FINAL FOR TESTING
|
|
DURATION SHORT RISK LEVEL HARMLESS.
|
|
PRIVATE SECTION.
|
|
DATA mo_cut TYPE REF TO {{p}}departure_planner.
|
|
METHODS setup.
|
|
METHODS stores_depot FOR TESTING.
|
|
METHODS ignores_duplicate FOR TESTING.
|
|
METHODS next_departure_ok FOR TESTING.
|
|
METHODS next_departure_none FOR TESTING.
|
|
METHODS stop_list_ok FOR TESTING.
|
|
METHODS empty_input_ok FOR TESTING.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS ltc_departure_planner IMPLEMENTATION.
|
|
METHOD setup.
|
|
mo_cut = NEW {{p}}departure_planner( ).
|
|
ENDMETHOD.
|
|
|
|
METHOD stores_depot.
|
|
DATA lt_input TYPE {{p}}departure_planner=>tt_departures.
|
|
lt_input = VALUE #( ( stop = 'A100' line = 'L10' depart = '080000' ) ).
|
|
mo_cut->add_depot( iv_depot = 'D1' it_departures = lt_input ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = mo_cut->count( ) ).
|
|
DATA ls_next TYPE {{p}}departure_planner=>ty_departure.
|
|
ls_next = mo_cut->next_departure( iv_stop = 'A100' iv_from = '000000' ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'D1' act = ls_next-depot ).
|
|
ENDMETHOD.
|
|
|
|
METHOD ignores_duplicate.
|
|
DATA lt_input TYPE {{p}}departure_planner=>tt_departures.
|
|
lt_input = VALUE #( ( stop = 'A100' line = 'L10' depart = '080000' ) ).
|
|
mo_cut->add_depot( iv_depot = 'D1' it_departures = lt_input ).
|
|
mo_cut->add_depot( iv_depot = 'D2' it_departures = lt_input ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = mo_cut->count( ) ).
|
|
ENDMETHOD.
|
|
|
|
METHOD next_departure_ok.
|
|
DATA lt_input TYPE {{p}}departure_planner=>tt_departures.
|
|
lt_input = VALUE #( ( stop = 'A100' line = 'L10' depart = '080000' )
|
|
( stop = 'A100' line = 'L20' depart = '083000' ) ).
|
|
mo_cut->add_depot( iv_depot = 'D1' it_departures = lt_input ).
|
|
DATA ls_next TYPE {{p}}departure_planner=>ty_departure.
|
|
ls_next = mo_cut->next_departure( iv_stop = 'A100' iv_from = '080001' ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'L20' act = ls_next-line ).
|
|
ENDMETHOD.
|
|
|
|
METHOD next_departure_none.
|
|
DATA lt_input TYPE {{p}}departure_planner=>tt_departures.
|
|
lt_input = VALUE #( ( stop = 'A100' line = 'L10' depart = '080000' ) ).
|
|
mo_cut->add_depot( iv_depot = 'D1' it_departures = lt_input ).
|
|
DATA ls_next TYPE {{p}}departure_planner=>ty_departure.
|
|
ls_next = mo_cut->next_departure( iv_stop = 'A100' iv_from = '090000' ).
|
|
cl_abap_unit_assert=>assert_initial( act = ls_next-stop ).
|
|
ENDMETHOD.
|
|
|
|
METHOD stop_list_ok.
|
|
DATA lt_input TYPE {{p}}departure_planner=>tt_departures.
|
|
lt_input = VALUE #( ( stop = 'A100' line = 'L20' depart = '083000' )
|
|
( stop = 'A100' line = 'L10' depart = '080000' ) ).
|
|
mo_cut->add_depot( iv_depot = 'D1' it_departures = lt_input ).
|
|
DATA lt_stop TYPE {{p}}departure_planner=>tt_departures.
|
|
lt_stop = mo_cut->departures_at_stop( 'A100' ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 2 act = lines( lt_stop ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = '080000' act = lt_stop[ 1 ]-depart ).
|
|
ENDMETHOD.
|
|
|
|
METHOD empty_input_ok.
|
|
DATA lt_input TYPE {{p}}departure_planner=>tt_departures.
|
|
mo_cut->add_depot( iv_depot = 'D1' it_departures = lt_input ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = mo_cut->count( ) ).
|
|
ENDMETHOD.
|
|
ENDCLASS.
|