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.