Stage 2 summary at 50 accepted trajectories
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
79
tasks_gen/train/G1061/reference/watch_order_pool.clas.abap
Normal file
79
tasks_gen/train/G1061/reference/watch_order_pool.clas.abap
Normal file
@@ -0,0 +1,79 @@
|
||||
CLASS {{p}}watch_order_pool DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
||||
PUBLIC SECTION.
|
||||
INTERFACES {{p}}if_watch_order.
|
||||
|
||||
PRIVATE SECTION.
|
||||
TYPES ty_orders TYPE SORTED TABLE OF {{p}}if_watch_order=>ty_order
|
||||
WITH UNIQUE KEY order_id.
|
||||
TYPES ty_totals TYPE SORTED TABLE OF {{p}}if_watch_order=>ty_customer_total
|
||||
WITH UNIQUE KEY customer.
|
||||
|
||||
METHODS unique_orders
|
||||
IMPORTING it_orders TYPE {{p}}if_watch_order=>tt_orders
|
||||
RETURNING VALUE(rt_orders) TYPE ty_orders.
|
||||
METHODS add_orders
|
||||
IMPORTING it_orders TYPE {{p}}if_watch_order=>tt_orders
|
||||
CHANGING ct_orders TYPE ty_orders.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}watch_order_pool IMPLEMENTATION.
|
||||
METHOD {{p}}if_watch_order~merge_orders.
|
||||
DATA(lt_merged) = unique_orders( it_intake ).
|
||||
add_orders( EXPORTING it_orders = it_workshop
|
||||
CHANGING ct_orders = lt_merged ).
|
||||
rt_merged = lt_merged.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD {{p}}if_watch_order~open_orders.
|
||||
DATA(lt_orders) = unique_orders( it_orders ).
|
||||
LOOP AT lt_orders INTO DATA(ls_order).
|
||||
IF ls_order-status = {{p}}if_watch_order=>c_status-open.
|
||||
APPEND ls_order TO rt_open.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD {{p}}if_watch_order~customer_totals.
|
||||
DATA(lt_orders) = unique_orders( it_orders ).
|
||||
DATA lt_totals TYPE ty_totals.
|
||||
LOOP AT lt_orders INTO DATA(ls_order).
|
||||
IF ls_order-status = {{p}}if_watch_order=>c_status-open.
|
||||
READ TABLE lt_totals ASSIGNING FIELD-SYMBOL(<ls_total>)
|
||||
WITH TABLE KEY customer = ls_order-customer.
|
||||
IF sy-subrc = 0.
|
||||
<ls_total>-total_min = <ls_total>-total_min + ls_order-duration_min.
|
||||
ELSE.
|
||||
INSERT VALUE {{p}}if_watch_order=>ty_customer_total(
|
||||
customer = ls_order-customer
|
||||
total_min = ls_order-duration_min )
|
||||
INTO TABLE lt_totals.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
rt_totals = lt_totals.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD {{p}}if_watch_order~find_order.
|
||||
DATA(lt_orders) = unique_orders( it_orders ).
|
||||
DATA ls_found TYPE {{p}}if_watch_order=>ty_order.
|
||||
READ TABLE lt_orders INTO ls_found WITH TABLE KEY order_id = iv_order_id.
|
||||
rs_order = ls_found.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD add_orders.
|
||||
LOOP AT it_orders INTO DATA(ls_order).
|
||||
IF line_exists( ct_orders[ order_id = ls_order-order_id ] ).
|
||||
CONTINUE.
|
||||
ENDIF.
|
||||
INSERT ls_order INTO TABLE ct_orders.
|
||||
ENDLOOP.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD unique_orders.
|
||||
DATA lt_orders TYPE ty_orders.
|
||||
add_orders( EXPORTING it_orders = it_orders
|
||||
CHANGING ct_orders = lt_orders ).
|
||||
rt_orders = lt_orders.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
@@ -0,0 +1,63 @@
|
||||
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.
|
||||
Reference in New Issue
Block a user