Files
abap-llm/tasks_gen/train/G1061/hidden/watch_order_hidden.clas.abap
2026-10-05 18:02:52 +02:00

143 lines
7.4 KiB
ABAP

CLASS {{p}}watch_order_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
DATA mo_cut TYPE REF TO {{p}}if_watch_order.
METHODS setup.
METHODS merge_keeps_intake_first FOR TESTING.
METHODS merge_sorts_by_order_id FOR TESTING.
METHODS merge_removes_duplicates FOR TESTING.
METHODS merge_empty_input FOR TESTING.
METHODS open_orders_filters_status FOR TESTING.
METHODS open_orders_removes_dups FOR TESTING.
METHODS totals_sum_open_only FOR TESTING.
METHODS totals_sorted_by_customer FOR TESTING.
METHODS totals_ignore_duplicate FOR TESTING.
METHODS find_order_returns_first FOR TESTING.
METHODS find_order_not_found FOR TESTING.
ENDCLASS.
CLASS {{p}}watch_order_hidden IMPLEMENTATION.
METHOD setup.
mo_cut = NEW {{p}}watch_order_pool( ).
ENDMETHOD.
METHOD merge_keeps_intake_first.
DATA(lt_intake) = VALUE {{p}}if_watch_order=>tt_orders(
( order_id = 'A1' customer = 'MUELLER' duration_min = 30 status = 'O' )
( order_id = 'A2' customer = 'SCHMIDT' duration_min = 20 status = 'O' ) ).
DATA(lt_workshop) = VALUE {{p}}if_watch_order=>tt_orders(
( order_id = 'A2' customer = 'OTHER' duration_min = 99 status = 'C' )
( order_id = 'A3' customer = 'WEBER' duration_min = 10 status = 'O' ) ).
DATA(lt_merged) = mo_cut->merge_orders( it_intake = lt_intake
it_workshop = lt_workshop ).
cl_abap_unit_assert=>assert_equals( exp = 3 act = lines( lt_merged ) ).
cl_abap_unit_assert=>assert_equals( exp = 'SCHMIDT' act = lt_merged[ 2 ]-customer ).
cl_abap_unit_assert=>assert_equals( exp = 20 act = lt_merged[ 2 ]-duration_min ).
ENDMETHOD.
METHOD merge_sorts_by_order_id.
DATA(lt_intake) = VALUE {{p}}if_watch_order=>tt_orders(
( order_id = 'B3' customer = 'GAMMA' duration_min = 1 status = 'O' )
( order_id = 'B1' customer = 'ALPHA' duration_min = 2 status = 'O' ) ).
DATA(lt_workshop) = VALUE {{p}}if_watch_order=>tt_orders(
( order_id = 'B2' customer = 'BETA' duration_min = 3 status = 'O' ) ).
DATA(lt_merged) = mo_cut->merge_orders( it_intake = lt_intake
it_workshop = lt_workshop ).
cl_abap_unit_assert=>assert_equals( exp = 'B1' act = lt_merged[ 1 ]-order_id ).
cl_abap_unit_assert=>assert_equals( exp = 'B2' act = lt_merged[ 2 ]-order_id ).
cl_abap_unit_assert=>assert_equals( exp = 'B3' act = lt_merged[ 3 ]-order_id ).
ENDMETHOD.
METHOD merge_removes_duplicates.
DATA(lt_intake) = VALUE {{p}}if_watch_order=>tt_orders(
( order_id = 'C1' customer = 'FIRST' duration_min = 5 status = 'O' )
( order_id = 'C1' customer = 'SECOND' duration_min = 7 status = 'O' ) ).
DATA(lt_workshop) = VALUE {{p}}if_watch_order=>tt_orders( ).
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 = 'FIRST' act = lt_merged[ 1 ]-customer ).
ENDMETHOD.
METHOD merge_empty_input.
DATA(lt_merged) = mo_cut->merge_orders(
it_intake = VALUE {{p}}if_watch_order=>tt_orders( )
it_workshop = VALUE {{p}}if_watch_order=>tt_orders( ) ).
cl_abap_unit_assert=>assert_equals( exp = 0 act = lines( lt_merged ) ).
ENDMETHOD.
METHOD open_orders_filters_status.
DATA(lt_orders) = VALUE {{p}}if_watch_order=>tt_orders(
( order_id = 'D1' customer = 'ALPHA' duration_min = 1 status = 'C' )
( order_id = 'D2' customer = 'BETA' duration_min = 2 status = 'O' )
( order_id = 'D3' customer = 'GAMMA' duration_min = 3 status = 'O' ) ).
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 = 'D2' act = lt_open[ 1 ]-order_id ).
cl_abap_unit_assert=>assert_equals( exp = 'D3' act = lt_open[ 2 ]-order_id ).
ENDMETHOD.
METHOD open_orders_removes_dups.
DATA(lt_orders) = VALUE {{p}}if_watch_order=>tt_orders(
( order_id = 'E1' customer = 'FIRST' duration_min = 1 status = 'O' )
( order_id = 'E1' customer = 'SECOND' duration_min = 2 status = 'O' ) ).
DATA(lt_open) = mo_cut->open_orders( lt_orders ).
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_open ) ).
cl_abap_unit_assert=>assert_equals( exp = 'FIRST' act = lt_open[ 1 ]-customer ).
ENDMETHOD.
METHOD totals_sum_open_only.
DATA(lt_orders) = VALUE {{p}}if_watch_order=>tt_orders(
( order_id = 'F1' customer = 'ALPHA' duration_min = 10 status = 'O' )
( order_id = 'F2' customer = 'ALPHA' duration_min = 5 status = 'O' )
( order_id = 'F3' customer = 'ALPHA' duration_min = 100 status = 'C' )
( order_id = 'F4' customer = 'BETA' duration_min = 7 status = 'O' ) ).
DATA(lt_totals) = mo_cut->customer_totals( lt_orders ).
cl_abap_unit_assert=>assert_equals( exp = 2 act = lines( lt_totals ) ).
cl_abap_unit_assert=>assert_equals( exp = 15 act = lt_totals[ 1 ]-total_min ).
cl_abap_unit_assert=>assert_equals( exp = 7 act = lt_totals[ 2 ]-total_min ).
ENDMETHOD.
METHOD totals_sorted_by_customer.
DATA(lt_orders) = VALUE {{p}}if_watch_order=>tt_orders(
( order_id = 'G1' customer = 'ZETA' duration_min = 1 status = 'O' )
( order_id = 'G2' customer = 'ALPHA' duration_min = 2 status = 'O' )
( order_id = 'G3' customer = 'MIKE' duration_min = 3 status = 'O' ) ).
DATA(lt_totals) = mo_cut->customer_totals( lt_orders ).
cl_abap_unit_assert=>assert_equals( exp = 'ALPHA' act = lt_totals[ 1 ]-customer ).
cl_abap_unit_assert=>assert_equals( exp = 'MIKE' act = lt_totals[ 2 ]-customer ).
cl_abap_unit_assert=>assert_equals( exp = 'ZETA' act = lt_totals[ 3 ]-customer ).
ENDMETHOD.
METHOD totals_ignore_duplicate.
DATA(lt_orders) = VALUE {{p}}if_watch_order=>tt_orders(
( order_id = 'H1' customer = 'ALPHA' duration_min = 10 status = 'O' )
( order_id = 'H1' customer = 'ALPHA' duration_min = 10 status = 'O' ) ).
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_first.
DATA(lt_orders) = VALUE {{p}}if_watch_order=>tt_orders(
( order_id = 'I1' customer = 'FIRST' duration_min = 4 status = 'O' )
( order_id = 'I1' customer = 'SECOND' duration_min = 9 status = 'O' )
( order_id = 'I2' customer = 'OTHER' duration_min = 1 status = 'O' ) ).
DATA(ls_order) = mo_cut->find_order( it_orders = lt_orders
iv_order_id = 'I1' ).
cl_abap_unit_assert=>assert_equals( exp = 'FIRST' act = ls_order-customer ).
cl_abap_unit_assert=>assert_equals( exp = 4 act = ls_order-duration_min ).
ENDMETHOD.
METHOD find_order_not_found.
DATA(lt_orders) = VALUE {{p}}if_watch_order=>tt_orders(
( order_id = 'J1' customer = 'ALPHA' duration_min = 1 status = 'O' ) ).
DATA(ls_order) = mo_cut->find_order( it_orders = lt_orders
iv_order_id = 'ZZ' ).
cl_abap_unit_assert=>assert_initial( ls_order-order_id ).
cl_abap_unit_assert=>assert_initial( ls_order-customer ).
cl_abap_unit_assert=>assert_equals( exp = 0 act = ls_order-duration_min ).
ENDMETHOD.
ENDCLASS.