Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014aUaQeLnwbb1zTpN7kHeat
74 lines
2.8 KiB
ABAP
74 lines
2.8 KiB
ABAP
CLASS ltc_canteen_planner DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
|
PRIVATE SECTION.
|
|
DATA mo_cut TYPE REF TO {{p}}if_canteen_plan.
|
|
METHODS setup.
|
|
METHODS merges_two_lists FOR TESTING.
|
|
METHODS sorts_by_ingredient FOR TESTING.
|
|
METHODS rounds_packs_up FOR TESTING.
|
|
METHODS lists_unknown FOR TESTING.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS ltc_canteen_planner IMPLEMENTATION.
|
|
METHOD setup.
|
|
mo_cut = NEW {{p}}canteen_planner( ).
|
|
ENDMETHOD.
|
|
|
|
METHOD merges_two_lists.
|
|
DATA(lt_a) = VALUE {{p}}if_canteen_plan=>tt_order(
|
|
( ingredient = 'FLOUR' quantity = 2 ) ).
|
|
DATA(lt_b) = VALUE {{p}}if_canteen_plan=>tt_order(
|
|
( ingredient = 'FLOUR' quantity = 3 ) ).
|
|
|
|
DATA(lt_demand) = mo_cut->merge_orders( it_orders_a = lt_a
|
|
it_orders_b = lt_b ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_demand ) ).
|
|
DATA lv_expected TYPE {{p}}if_canteen_plan=>ty_quantity.
|
|
lv_expected = 5.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_expected
|
|
act = lt_demand[ 1 ]-quantity ).
|
|
ENDMETHOD.
|
|
|
|
METHOD sorts_by_ingredient.
|
|
DATA(lt_a) = VALUE {{p}}if_canteen_plan=>tt_order(
|
|
( ingredient = 'SUGAR' quantity = 1 )
|
|
( ingredient = 'FLOUR' quantity = 1 ) ).
|
|
|
|
DATA(lt_demand) = mo_cut->merge_orders(
|
|
it_orders_a = lt_a
|
|
it_orders_b = VALUE {{p}}if_canteen_plan=>tt_order( ) ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 'FLOUR'
|
|
act = lt_demand[ 1 ]-ingredient ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'SUGAR'
|
|
act = lt_demand[ 2 ]-ingredient ).
|
|
ENDMETHOD.
|
|
|
|
METHOD rounds_packs_up.
|
|
DATA(lt_demand) = VALUE {{p}}if_canteen_plan=>tt_order(
|
|
( ingredient = 'FLOUR' quantity = 25 ) ).
|
|
DATA(lt_catalogue) = VALUE {{p}}if_canteen_plan=>tt_master(
|
|
( ingredient = 'FLOUR' pack_size = 10 ) ).
|
|
|
|
DATA(lt_packs) = mo_cut->pack_requirement( it_demand = lt_demand
|
|
it_catalogue = lt_catalogue ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_packs ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 3 act = lt_packs[ 1 ]-packs ).
|
|
ENDMETHOD.
|
|
|
|
METHOD lists_unknown.
|
|
DATA(lt_demand) = VALUE {{p}}if_canteen_plan=>tt_order(
|
|
( ingredient = 'COCOA' quantity = 1 ) ).
|
|
DATA(lt_catalogue) = VALUE {{p}}if_canteen_plan=>tt_master(
|
|
( ingredient = 'FLOUR' pack_size = 10 ) ).
|
|
|
|
DATA(lt_missing) = mo_cut->missing_ingredients( it_demand = lt_demand
|
|
it_catalogue = lt_catalogue ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_missing ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'COCOA' act = lt_missing[ 1 ] ).
|
|
ENDMETHOD.
|
|
ENDCLASS.
|