CLASS ltc_watch_order_pool DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. DATA mo_cut TYPE REF TO {{p}}if_watch_order. METHODS setup. METHODS merge_keeps_first_entry FOR TESTING. METHODS open_orders_are_sorted FOR TESTING. METHODS totals_only_open_orders FOR TESTING. METHODS find_order_returns_entry FOR TESTING. METHODS find_order_unknown_is_empty FOR TESTING. ENDCLASS. CLASS ltc_watch_order_pool IMPLEMENTATION. METHOD setup. mo_cut = NEW {{p}}watch_order_pool( ). ENDMETHOD. METHOD merge_keeps_first_entry. DATA(lt_intake) = VALUE {{p}}if_watch_order=>tt_orders( ( order_id = 'A1' customer = 'MUELLER' duration_min = 30 status = 'O' ) ). DATA(lt_workshop) = VALUE {{p}}if_watch_order=>tt_orders( ( order_id = 'A1' customer = 'OTHER' duration_min = 99 status = 'O' ) ). DATA(lt_merged) = mo_cut->merge_orders( it_intake = lt_intake it_workshop = lt_workshop ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_merged ) ). cl_abap_unit_assert=>assert_equals( exp = 'MUELLER' act = lt_merged[ 1 ]-customer ). ENDMETHOD. METHOD open_orders_are_sorted. DATA(lt_orders) = VALUE {{p}}if_watch_order=>tt_orders( ( order_id = 'B2' customer = 'BETA' duration_min = 2 status = 'O' ) ( order_id = 'B1' customer = 'ALPHA' duration_min = 1 status = 'O' ) ( order_id = 'B3' customer = 'GAMMA' duration_min = 3 status = 'C' ) ). DATA(lt_open) = mo_cut->open_orders( lt_orders ). cl_abap_unit_assert=>assert_equals( exp = 2 act = lines( lt_open ) ). cl_abap_unit_assert=>assert_equals( exp = 'B1' act = lt_open[ 1 ]-order_id ). ENDMETHOD. METHOD totals_only_open_orders. DATA(lt_orders) = VALUE {{p}}if_watch_order=>tt_orders( ( order_id = 'C1' customer = 'ALPHA' duration_min = 10 status = 'O' ) ( order_id = 'C2' customer = 'ALPHA' duration_min = 90 status = 'C' ) ). DATA(lt_totals) = mo_cut->customer_totals( lt_orders ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_totals ) ). cl_abap_unit_assert=>assert_equals( exp = 10 act = lt_totals[ 1 ]-total_min ). ENDMETHOD. METHOD find_order_returns_entry. DATA(lt_orders) = VALUE {{p}}if_watch_order=>tt_orders( ( order_id = 'D1' customer = 'ALPHA' duration_min = 5 status = 'O' ) ). DATA(ls_order) = mo_cut->find_order( it_orders = lt_orders iv_order_id = 'D1' ). cl_abap_unit_assert=>assert_equals( exp = 'ALPHA' act = ls_order-customer ). ENDMETHOD. METHOD find_order_unknown_is_empty. DATA(lt_orders) = VALUE {{p}}if_watch_order=>tt_orders( ( order_id = 'E1' customer = 'ALPHA' duration_min = 5 status = 'O' ) ). DATA(ls_order) = mo_cut->find_order( it_orders = lt_orders iv_order_id = 'E9' ). cl_abap_unit_assert=>assert_initial( ls_order-order_id ). ENDMETHOD. ENDCLASS.