Pipeline controller: plan 2 (hard +, error +50 %), backlog throttle, 2 trajectory workers, stop rules, summaries every 50; budget reserve
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
90
tasks_gen/train/G1041/reference/feed_stock.clas.abap
Normal file
90
tasks_gen/train/G1041/reference/feed_stock.clas.abap
Normal file
@@ -0,0 +1,90 @@
|
||||
CLASS {{p}}feed_stock DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
||||
PUBLIC SECTION.
|
||||
INTERFACES {{p}}if_feed_stock.
|
||||
|
||||
PRIVATE SECTION.
|
||||
TYPES tt_sum TYPE HASHED TABLE OF {{p}}if_feed_stock=>ty_stock
|
||||
WITH UNIQUE KEY feed_type.
|
||||
|
||||
METHODS sum_deliveries
|
||||
IMPORTING it_supplier_a TYPE {{p}}if_feed_stock=>tt_delivery
|
||||
it_supplier_b TYPE {{p}}if_feed_stock=>tt_delivery
|
||||
RETURNING VALUE(rt_sum) TYPE tt_sum.
|
||||
|
||||
METHODS add_delivery
|
||||
IMPORTING is_delivery TYPE {{p}}if_feed_stock=>ty_delivery
|
||||
CHANGING ct_sum TYPE tt_sum.
|
||||
|
||||
METHODS is_counted
|
||||
IMPORTING is_delivery TYPE {{p}}if_feed_stock=>ty_delivery
|
||||
RETURNING VALUE(rv_counted) TYPE abap_bool.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}feed_stock IMPLEMENTATION.
|
||||
METHOD {{p}}if_feed_stock~consolidate.
|
||||
DATA(lt_sum) = sum_deliveries( it_supplier_a = it_supplier_a
|
||||
it_supplier_b = it_supplier_b ).
|
||||
LOOP AT lt_sum ASSIGNING FIELD-SYMBOL(<ls_sum>).
|
||||
IF <ls_sum>-quantity IS INITIAL.
|
||||
CONTINUE.
|
||||
ENDIF.
|
||||
APPEND <ls_sum> TO rt_stock.
|
||||
ENDLOOP.
|
||||
SORT rt_stock BY feed_type.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD {{p}}if_feed_stock~quantity_of.
|
||||
DATA lt_stock TYPE {{p}}if_feed_stock=>tt_stock.
|
||||
lt_stock = it_stock.
|
||||
SORT lt_stock BY feed_type.
|
||||
READ TABLE lt_stock ASSIGNING FIELD-SYMBOL(<ls_stock>)
|
||||
WITH KEY feed_type = iv_feed_type BINARY SEARCH.
|
||||
IF sy-subrc = 0.
|
||||
rv_quantity = <ls_stock>-quantity.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD {{p}}if_feed_stock~top_feed.
|
||||
IF it_stock IS INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
DATA(lt_ranked) = it_stock.
|
||||
SORT lt_ranked BY quantity DESCENDING feed_type ASCENDING.
|
||||
rv_feed_type = lt_ranked[ 1 ]-feed_type.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD sum_deliveries.
|
||||
DATA lt_all TYPE {{p}}if_feed_stock=>tt_delivery.
|
||||
DATA lt_sum TYPE tt_sum.
|
||||
APPEND LINES OF it_supplier_a TO lt_all.
|
||||
APPEND LINES OF it_supplier_b TO lt_all.
|
||||
LOOP AT lt_all ASSIGNING FIELD-SYMBOL(<ls_delivery>).
|
||||
IF is_counted( <ls_delivery> ) = abap_false.
|
||||
CONTINUE.
|
||||
ENDIF.
|
||||
add_delivery( EXPORTING is_delivery = <ls_delivery>
|
||||
CHANGING ct_sum = lt_sum ).
|
||||
ENDLOOP.
|
||||
rt_sum = lt_sum.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD add_delivery.
|
||||
ASSIGN ct_sum[ feed_type = is_delivery-feed_type ] TO FIELD-SYMBOL(<ls_sum>).
|
||||
IF sy-subrc <> 0.
|
||||
INSERT VALUE #( feed_type = is_delivery-feed_type
|
||||
unit = is_delivery-unit
|
||||
quantity = is_delivery-quantity
|
||||
deliveries = 1 )
|
||||
INTO TABLE ct_sum ASSIGNING <ls_sum>.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
<ls_sum>-quantity = <ls_sum>-quantity + is_delivery-quantity.
|
||||
<ls_sum>-deliveries = <ls_sum>-deliveries + 1.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD is_counted.
|
||||
rv_counted = xsdbool( is_delivery-feed_type IS NOT INITIAL
|
||||
AND is_delivery-quantity IS NOT INITIAL ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
85
tasks_gen/train/G1041/reference/feed_stock.testclasses.abap
Normal file
85
tasks_gen/train/G1041/reference/feed_stock.testclasses.abap
Normal file
@@ -0,0 +1,85 @@
|
||||
CLASS ltc_feed_stock DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
||||
PRIVATE SECTION.
|
||||
DATA mo_cut TYPE REF TO {{p}}feed_stock.
|
||||
|
||||
METHODS setup.
|
||||
METHODS assert_stock
|
||||
IMPORTING it_exp TYPE {{p}}if_feed_stock=>tt_stock
|
||||
it_act TYPE {{p}}if_feed_stock=>tt_stock.
|
||||
|
||||
METHODS merges_two_suppliers FOR TESTING.
|
||||
METHODS ignores_uncounted FOR TESTING.
|
||||
METHODS removes_zero_total FOR TESTING.
|
||||
METHODS quantity_of_missing FOR TESTING.
|
||||
METHODS top_feed_tie FOR TESTING.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltc_feed_stock IMPLEMENTATION.
|
||||
METHOD setup.
|
||||
mo_cut = NEW {{p}}feed_stock( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD assert_stock.
|
||||
cl_abap_unit_assert=>assert_equals( exp = lines( it_exp ) act = lines( it_act ) ).
|
||||
DATA(lv_index) = 0.
|
||||
LOOP AT it_exp ASSIGNING FIELD-SYMBOL(<ls_exp>).
|
||||
lv_index = lv_index + 1.
|
||||
READ TABLE it_act ASSIGNING FIELD-SYMBOL(<ls_act>) INDEX lv_index.
|
||||
cl_abap_unit_assert=>assert_subrc( exp = 0 act = sy-subrc ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = <ls_exp>-feed_type act = <ls_act>-feed_type ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = <ls_exp>-unit act = <ls_act>-unit ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = <ls_exp>-quantity act = <ls_act>-quantity ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = <ls_exp>-deliveries act = <ls_act>-deliveries ).
|
||||
ENDLOOP.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD merges_two_suppliers.
|
||||
DATA(lt_stock) = mo_cut->consolidate(
|
||||
it_supplier_a = VALUE {{p}}if_feed_stock=>tt_delivery(
|
||||
( feed_type = 'HAY' unit = 'KG' quantity = '10.000' ) )
|
||||
it_supplier_b = VALUE {{p}}if_feed_stock=>tt_delivery(
|
||||
( feed_type = 'HAY' unit = 'KG' quantity = '5.000' ) ) ).
|
||||
assert_stock(
|
||||
it_exp = VALUE {{p}}if_feed_stock=>tt_stock(
|
||||
( feed_type = 'HAY' unit = 'KG' quantity = '15.000' deliveries = 2 ) )
|
||||
it_act = lt_stock ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD ignores_uncounted.
|
||||
DATA(lt_stock) = mo_cut->consolidate(
|
||||
it_supplier_a = VALUE {{p}}if_feed_stock=>tt_delivery(
|
||||
( feed_type = '' unit = 'KG' quantity = '9.000' )
|
||||
( feed_type = 'FISH' unit = 'KG' quantity = '0.000' ) )
|
||||
it_supplier_b = VALUE {{p}}if_feed_stock=>tt_delivery( ) ).
|
||||
cl_abap_unit_assert=>assert_initial( lt_stock ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD removes_zero_total.
|
||||
DATA(lt_stock) = mo_cut->consolidate(
|
||||
it_supplier_a = VALUE {{p}}if_feed_stock=>tt_delivery(
|
||||
( feed_type = 'HAY' unit = 'KG' quantity = '4.000' )
|
||||
( feed_type = 'HAY' unit = 'KG' quantity = '-4.000' ) )
|
||||
it_supplier_b = VALUE {{p}}if_feed_stock=>tt_delivery( ) ).
|
||||
cl_abap_unit_assert=>assert_initial( lt_stock ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD quantity_of_missing.
|
||||
DATA lv_expected TYPE {{p}}if_feed_stock=>ty_quantity.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = lv_expected
|
||||
act = mo_cut->quantity_of(
|
||||
it_stock = VALUE {{p}}if_feed_stock=>tt_stock( )
|
||||
iv_feed_type = 'HAY' ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD top_feed_tie.
|
||||
DATA(lt_stock) = VALUE {{p}}if_feed_stock=>tt_stock(
|
||||
( feed_type = 'PELLETS' unit = 'KG' quantity = '5.000' deliveries = 1 )
|
||||
( feed_type = 'HAY' unit = 'KG' quantity = '5.000' deliveries = 1 ) ).
|
||||
DATA lv_expected TYPE {{p}}if_feed_stock=>ty_feed_type.
|
||||
lv_expected = 'HAY'.
|
||||
cl_abap_unit_assert=>assert_equals( exp = lv_expected
|
||||
act = mo_cut->top_feed( it_stock = lt_stock ) ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
Reference in New Issue
Block a user