Files
abap-llm/tasks_gen/eval/G0114/reference/dispatch_planner.testclasses.abap

127 lines
5.7 KiB
ABAP

CLASS ltc_dispatch_planner DEFINITION FINAL FOR TESTING
DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
TYPES ty_weight TYPE p LENGTH 8 DECIMALS 2.
DATA mo_cut TYPE REF TO {{p}}dispatch_planner.
METHODS setup.
METHODS plan_groups_districts FOR TESTING.
METHODS plan_ignores_zero FOR TESTING.
METHODS plan_sums_values FOR TESTING.
METHODS plan_sorts_result FOR TESTING.
METHODS plan_empty_input FOR TESTING.
METHODS merge_adds_values FOR TESTING.
METHODS merge_keeps_single FOR TESTING.
METHODS merge_urgency_min FOR TESTING.
METHODS merge_empty FOR TESTING.
ENDCLASS.
CLASS ltc_dispatch_planner IMPLEMENTATION.
METHOD setup.
mo_cut = NEW {{p}}dispatch_planner( ).
ENDMETHOD.
METHOD plan_groups_districts.
DATA lt_delivery TYPE {{p}}dispatch_planner=>tt_delivery.
lt_delivery = VALUE #(
( delivery_id = 'D1' district = 'NORD' parcels = 2 weight = '5.00' urgency = 1 )
( delivery_id = 'D2' district = 'SUED' parcels = 4 weight = '7.00' urgency = 3 )
( delivery_id = 'D3' district = 'NORD' parcels = 1 weight = '2.00' urgency = 5 ) ).
DATA(lt_result) = mo_cut->plan( lt_delivery ).
cl_abap_unit_assert=>assert_equals( exp = 2 act = lines( lt_result ) ).
DATA(ls_nord) = lt_result[ district = 'NORD' ].
cl_abap_unit_assert=>assert_equals( exp = 2 act = ls_nord-deliveries ).
cl_abap_unit_assert=>assert_equals( exp = 3 act = ls_nord-parcels ).
ENDMETHOD.
METHOD plan_ignores_zero.
DATA lt_delivery TYPE {{p}}dispatch_planner=>tt_delivery.
lt_delivery = VALUE #(
( delivery_id = 'D1' district = 'NORD' parcels = 0 weight = '5.00' urgency = 1 ) ).
DATA(lt_result) = mo_cut->plan( lt_delivery ).
cl_abap_unit_assert=>assert_initial( act = lt_result ).
ENDMETHOD.
METHOD plan_sums_values.
DATA lt_delivery TYPE {{p}}dispatch_planner=>tt_delivery.
lt_delivery = VALUE #(
( delivery_id = 'D1' district = 'NORD' parcels = 2 weight = '10.25' urgency = 1 )
( delivery_id = 'D2' district = 'NORD' parcels = 3 weight = '4.75' urgency = 4 ) ).
DATA(lt_result) = mo_cut->plan( lt_delivery ).
DATA(ls_line) = lt_result[ district = 'NORD' ].
cl_abap_unit_assert=>assert_equals( exp = 5 act = ls_line-parcels ).
DATA lv_weight TYPE ty_weight.
lv_weight = '15.00'.
cl_abap_unit_assert=>assert_equals( exp = lv_weight act = ls_line-weight ).
cl_abap_unit_assert=>assert_equals( exp = 1 act = ls_line-top_urgency ).
ENDMETHOD.
METHOD plan_sorts_result.
DATA lt_delivery TYPE {{p}}dispatch_planner=>tt_delivery.
lt_delivery = VALUE #(
( delivery_id = 'D1' district = 'WEST' parcels = 1 weight = '1.00' urgency = 1 )
( delivery_id = 'D2' district = 'NORD' parcels = 1 weight = '1.00' urgency = 1 ) ).
DATA(lt_result) = mo_cut->plan( lt_delivery ).
DATA(ls_first) = lt_result[ 1 ].
cl_abap_unit_assert=>assert_equals( exp = 'NORD' act = ls_first-district ).
ENDMETHOD.
METHOD plan_empty_input.
DATA lt_delivery TYPE {{p}}dispatch_planner=>tt_delivery.
DATA(lt_result) = mo_cut->plan( lt_delivery ).
cl_abap_unit_assert=>assert_initial( act = lt_result ).
ENDMETHOD.
METHOD merge_adds_values.
DATA lt_left TYPE {{p}}dispatch_planner=>tt_district.
DATA lt_right TYPE {{p}}dispatch_planner=>tt_district.
lt_left = VALUE #( ( district = 'NORD' deliveries = 2 parcels = 5
weight = '10.00' top_urgency = 3 ) ).
lt_right = VALUE #( ( district = 'NORD' deliveries = 1 parcels = 4
weight = '2.50' top_urgency = 2 ) ).
DATA(lt_result) = mo_cut->merge( it_left = lt_left it_right = lt_right ).
DATA(ls_line) = lt_result[ district = 'NORD' ].
cl_abap_unit_assert=>assert_equals( exp = 3 act = ls_line-deliveries ).
cl_abap_unit_assert=>assert_equals( exp = 9 act = ls_line-parcels ).
DATA lv_weight TYPE ty_weight.
lv_weight = '12.50'.
cl_abap_unit_assert=>assert_equals( exp = lv_weight act = ls_line-weight ).
cl_abap_unit_assert=>assert_equals( exp = 2 act = ls_line-top_urgency ).
ENDMETHOD.
METHOD merge_keeps_single.
DATA lt_left TYPE {{p}}dispatch_planner=>tt_district.
DATA lt_right TYPE {{p}}dispatch_planner=>tt_district.
lt_left = VALUE #( ( district = 'NORD' deliveries = 2 parcels = 5
weight = '10.00' top_urgency = 3 ) ).
lt_right = VALUE #( ( district = 'SUED' deliveries = 4 parcels = 8
weight = '6.00' top_urgency = 1 ) ).
DATA(lt_result) = mo_cut->merge( it_left = lt_left it_right = lt_right ).
cl_abap_unit_assert=>assert_equals( exp = 2 act = lines( lt_result ) ).
DATA(ls_sued) = lt_result[ district = 'SUED' ].
cl_abap_unit_assert=>assert_equals( exp = 4 act = ls_sued-deliveries ).
cl_abap_unit_assert=>assert_equals( exp = 1 act = ls_sued-top_urgency ).
ENDMETHOD.
METHOD merge_urgency_min.
DATA lt_left TYPE {{p}}dispatch_planner=>tt_district.
DATA lt_right TYPE {{p}}dispatch_planner=>tt_district.
lt_left = VALUE #( ( district = 'NORD' deliveries = 1 parcels = 1
weight = '1.00' top_urgency = 4 ) ).
lt_right = VALUE #( ( district = 'NORD' deliveries = 1 parcels = 1
weight = '1.00' top_urgency = 7 ) ).
DATA(lt_result) = mo_cut->merge( it_left = lt_left it_right = lt_right ).
DATA(ls_line) = lt_result[ district = 'NORD' ].
cl_abap_unit_assert=>assert_equals( exp = 4 act = ls_line-top_urgency ).
ENDMETHOD.
METHOD merge_empty.
DATA lt_left TYPE {{p}}dispatch_planner=>tt_district.
DATA lt_right TYPE {{p}}dispatch_planner=>tt_district.
DATA(lt_result) = mo_cut->merge( it_left = lt_left it_right = lt_right ).
cl_abap_unit_assert=>assert_initial( act = lt_result ).
ENDMETHOD.
ENDCLASS.