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:
106
tasks_gen/train/G1022/faulty/m0_sweep_pricer.clas.abap
Normal file
106
tasks_gen/train/G1022/faulty/m0_sweep_pricer.clas.abap
Normal file
@@ -0,0 +1,106 @@
|
||||
CLASS {{p}}sweep_pricer DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
TYPES:
|
||||
ty_building TYPE c LENGTH 1,
|
||||
ty_fee TYPE p LENGTH 8 DECIMALS 2.
|
||||
|
||||
METHODS calculate
|
||||
IMPORTING iv_flues TYPE i
|
||||
iv_building TYPE ty_building
|
||||
iv_soot TYPE i
|
||||
iv_express TYPE abap_bool
|
||||
RETURNING VALUE(rv_fee) TYPE ty_fee.
|
||||
|
||||
PRIVATE SECTION.
|
||||
CONSTANTS:
|
||||
BEGIN OF c_building,
|
||||
house TYPE ty_building VALUE 'H',
|
||||
apartment TYPE ty_building VALUE 'A',
|
||||
restaurant TYPE ty_building VALUE 'R',
|
||||
END OF c_building,
|
||||
c_rate_house TYPE ty_fee VALUE '45.00',
|
||||
c_rate_apartment TYPE ty_fee VALUE '35.00',
|
||||
c_rate_restaurant TYPE ty_fee VALUE '60.00',
|
||||
c_express_fee TYPE ty_fee VALUE '25.00',
|
||||
c_min_fee TYPE ty_fee VALUE '60.00',
|
||||
c_no_fee TYPE ty_fee VALUE '0.00',
|
||||
c_discount_pct TYPE i VALUE 10,
|
||||
c_discount_flues TYPE i VALUE 4,
|
||||
c_soot_min TYPE i VALUE 2,
|
||||
c_soot_max TYPE i VALUE 5,
|
||||
c_soot_step TYPE i VALUE 5.
|
||||
|
||||
METHODS rate_of
|
||||
IMPORTING iv_building TYPE ty_building
|
||||
RETURNING VALUE(rv_rate) TYPE ty_fee.
|
||||
METHODS base_fee
|
||||
IMPORTING iv_flues TYPE i
|
||||
iv_rate TYPE ty_fee
|
||||
RETURNING VALUE(rv_base) TYPE ty_fee.
|
||||
METHODS soot_pct
|
||||
IMPORTING iv_soot TYPE i
|
||||
RETURNING VALUE(rv_pct) TYPE i.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS {{p}}sweep_pricer IMPLEMENTATION.
|
||||
METHOD calculate.
|
||||
IF iv_flues < 1.
|
||||
rv_fee = c_no_fee.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA(lv_rate) = rate_of( iv_building ).
|
||||
IF lv_rate IS INITIAL.
|
||||
rv_fee = c_no_fee.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA(lv_fee) = base_fee( iv_flues = iv_flues
|
||||
iv_rate = lv_rate ).
|
||||
lv_fee = lv_fee + lv_fee / soot_pct( iv_soot ) / 100.
|
||||
|
||||
IF iv_express = abap_true.
|
||||
lv_fee = lv_fee + c_express_fee.
|
||||
ENDIF.
|
||||
|
||||
IF lv_fee < c_min_fee.
|
||||
lv_fee = c_min_fee.
|
||||
ENDIF.
|
||||
|
||||
rv_fee = lv_fee.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD rate_of.
|
||||
CASE iv_building.
|
||||
WHEN c_building-house.
|
||||
rv_rate = c_rate_house.
|
||||
WHEN c_building-apartment.
|
||||
rv_rate = c_rate_apartment.
|
||||
WHEN c_building-restaurant.
|
||||
rv_rate = c_rate_restaurant.
|
||||
WHEN OTHERS.
|
||||
rv_rate = c_no_fee.
|
||||
ENDCASE.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD base_fee.
|
||||
rv_base = iv_flues * iv_rate.
|
||||
IF iv_flues >= c_discount_flues.
|
||||
rv_base = rv_base - rv_base * c_discount_pct / 100.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD soot_pct.
|
||||
IF iv_soot >= c_soot_min AND iv_soot <= c_soot_max.
|
||||
rv_pct = ( iv_soot - 1 ) * c_soot_step.
|
||||
ELSE.
|
||||
rv_pct = 0.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
106
tasks_gen/train/G1022/faulty/m1_sweep_pricer.clas.abap
Normal file
106
tasks_gen/train/G1022/faulty/m1_sweep_pricer.clas.abap
Normal file
@@ -0,0 +1,106 @@
|
||||
CLASS {{p}}sweep_pricer DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
TYPES:
|
||||
ty_building TYPE c LENGTH 1,
|
||||
ty_fee TYPE p LENGTH 8 DECIMALS 2.
|
||||
|
||||
METHODS calculate
|
||||
IMPORTING iv_flues TYPE i
|
||||
iv_building TYPE ty_building
|
||||
iv_soot TYPE i
|
||||
iv_express TYPE abap_bool
|
||||
RETURNING VALUE(rv_fee) TYPE ty_fee.
|
||||
|
||||
PRIVATE SECTION.
|
||||
CONSTANTS:
|
||||
BEGIN OF c_building,
|
||||
house TYPE ty_building VALUE 'H',
|
||||
apartment TYPE ty_building VALUE 'A',
|
||||
restaurant TYPE ty_building VALUE 'R',
|
||||
END OF c_building,
|
||||
c_rate_house TYPE ty_fee VALUE '45.00',
|
||||
c_rate_apartment TYPE ty_fee VALUE '35.00',
|
||||
c_rate_restaurant TYPE ty_fee VALUE '60.00',
|
||||
c_express_fee TYPE ty_fee VALUE '25.00',
|
||||
c_min_fee TYPE ty_fee VALUE '60.00',
|
||||
c_no_fee TYPE ty_fee VALUE '0.00',
|
||||
c_discount_pct TYPE i VALUE 10,
|
||||
c_discount_flues TYPE i VALUE 4,
|
||||
c_soot_min TYPE i VALUE 2,
|
||||
c_soot_max TYPE i VALUE 5,
|
||||
c_soot_step TYPE i VALUE 5.
|
||||
|
||||
METHODS rate_of
|
||||
IMPORTING iv_building TYPE ty_building
|
||||
RETURNING VALUE(rv_rate) TYPE ty_fee.
|
||||
METHODS base_fee
|
||||
IMPORTING iv_flues TYPE i
|
||||
iv_rate TYPE ty_fee
|
||||
RETURNING VALUE(rv_base) TYPE ty_fee.
|
||||
METHODS soot_pct
|
||||
IMPORTING iv_soot TYPE i
|
||||
RETURNING VALUE(rv_pct) TYPE i.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS {{p}}sweep_pricer IMPLEMENTATION.
|
||||
METHOD calculate.
|
||||
IF iv_flues < 1.
|
||||
rv_fee = c_no_fee.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA(lv_rate) = rate_of( iv_building ).
|
||||
IF lv_rate IS INITIAL.
|
||||
rv_fee = c_no_fee.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA(lv_fee) = base_fee( iv_flues = iv_flues
|
||||
iv_rate = lv_rate ).
|
||||
lv_fee = lv_fee + lv_fee * soot_pct( iv_soot ) / 100.
|
||||
|
||||
IF iv_express = abap_false.
|
||||
lv_fee = lv_fee + c_express_fee.
|
||||
ENDIF.
|
||||
|
||||
IF lv_fee < c_min_fee.
|
||||
lv_fee = c_min_fee.
|
||||
ENDIF.
|
||||
|
||||
rv_fee = lv_fee.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD rate_of.
|
||||
CASE iv_building.
|
||||
WHEN c_building-house.
|
||||
rv_rate = c_rate_house.
|
||||
WHEN c_building-apartment.
|
||||
rv_rate = c_rate_apartment.
|
||||
WHEN c_building-restaurant.
|
||||
rv_rate = c_rate_restaurant.
|
||||
WHEN OTHERS.
|
||||
rv_rate = c_no_fee.
|
||||
ENDCASE.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD base_fee.
|
||||
rv_base = iv_flues * iv_rate.
|
||||
IF iv_flues >= c_discount_flues.
|
||||
rv_base = rv_base - rv_base * c_discount_pct / 100.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD soot_pct.
|
||||
IF iv_soot >= c_soot_min AND iv_soot <= c_soot_max.
|
||||
rv_pct = ( iv_soot - 1 ) * c_soot_step.
|
||||
ELSE.
|
||||
rv_pct = 0.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
106
tasks_gen/train/G1022/faulty/m2_sweep_pricer.clas.abap
Normal file
106
tasks_gen/train/G1022/faulty/m2_sweep_pricer.clas.abap
Normal file
@@ -0,0 +1,106 @@
|
||||
CLASS {{p}}sweep_pricer DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
TYPES:
|
||||
ty_building TYPE c LENGTH 1,
|
||||
ty_fee TYPE p LENGTH 8 DECIMALS 2.
|
||||
|
||||
METHODS calculate
|
||||
IMPORTING iv_flues TYPE i
|
||||
iv_building TYPE ty_building
|
||||
iv_soot TYPE i
|
||||
iv_express TYPE abap_bool
|
||||
RETURNING VALUE(rv_fee) TYPE ty_fee.
|
||||
|
||||
PRIVATE SECTION.
|
||||
CONSTANTS:
|
||||
BEGIN OF c_building,
|
||||
house TYPE ty_building VALUE 'H',
|
||||
apartment TYPE ty_building VALUE 'A',
|
||||
restaurant TYPE ty_building VALUE 'R',
|
||||
END OF c_building,
|
||||
c_rate_house TYPE ty_fee VALUE '45.00',
|
||||
c_rate_apartment TYPE ty_fee VALUE '35.00',
|
||||
c_rate_restaurant TYPE ty_fee VALUE '60.00',
|
||||
c_express_fee TYPE ty_fee VALUE '25.00',
|
||||
c_min_fee TYPE ty_fee VALUE '60.00',
|
||||
c_no_fee TYPE ty_fee VALUE '0.00',
|
||||
c_discount_pct TYPE i VALUE 10,
|
||||
c_discount_flues TYPE i VALUE 4,
|
||||
c_soot_min TYPE i VALUE 2,
|
||||
c_soot_max TYPE i VALUE 5,
|
||||
c_soot_step TYPE i VALUE 5.
|
||||
|
||||
METHODS rate_of
|
||||
IMPORTING iv_building TYPE ty_building
|
||||
RETURNING VALUE(rv_rate) TYPE ty_fee.
|
||||
METHODS base_fee
|
||||
IMPORTING iv_flues TYPE i
|
||||
iv_rate TYPE ty_fee
|
||||
RETURNING VALUE(rv_base) TYPE ty_fee.
|
||||
METHODS soot_pct
|
||||
IMPORTING iv_soot TYPE i
|
||||
RETURNING VALUE(rv_pct) TYPE i.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS {{p}}sweep_pricer IMPLEMENTATION.
|
||||
METHOD calculate.
|
||||
IF iv_flues < 1.
|
||||
rv_fee = c_no_fee.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA(lv_rate) = rate_of( iv_building ).
|
||||
IF lv_rate IS INITIAL.
|
||||
rv_fee = c_no_fee.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA(lv_fee) = base_fee( iv_flues = iv_flues
|
||||
iv_rate = lv_rate ).
|
||||
lv_fee = lv_fee + lv_fee * soot_pct( iv_soot ) / 100.
|
||||
|
||||
IF iv_express = abap_true.
|
||||
lv_fee = lv_fee + c_express_fee.
|
||||
ENDIF.
|
||||
|
||||
IF lv_fee < c_min_fee.
|
||||
lv_fee = c_min_fee.
|
||||
ENDIF.
|
||||
|
||||
rv_fee = lv_fee.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD rate_of.
|
||||
CASE iv_building.
|
||||
WHEN c_building-house.
|
||||
rv_rate = c_rate_house.
|
||||
WHEN c_building-apartment.
|
||||
rv_rate = c_rate_apartment.
|
||||
WHEN c_building-restaurant.
|
||||
rv_rate = c_rate_restaurant.
|
||||
WHEN OTHERS.
|
||||
rv_rate = c_no_fee.
|
||||
ENDCASE.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD base_fee.
|
||||
rv_base = iv_flues / iv_rate.
|
||||
IF iv_flues >= c_discount_flues.
|
||||
rv_base = rv_base - rv_base * c_discount_pct / 100.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD soot_pct.
|
||||
IF iv_soot >= c_soot_min AND iv_soot <= c_soot_max.
|
||||
rv_pct = ( iv_soot - 1 ) * c_soot_step.
|
||||
ELSE.
|
||||
rv_pct = 0.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
106
tasks_gen/train/G1022/faulty/m3_sweep_pricer.clas.abap
Normal file
106
tasks_gen/train/G1022/faulty/m3_sweep_pricer.clas.abap
Normal file
@@ -0,0 +1,106 @@
|
||||
CLASS {{p}}sweep_pricer DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
TYPES:
|
||||
ty_building TYPE c LENGTH 1,
|
||||
ty_fee TYPE p LENGTH 8 DECIMALS 2.
|
||||
|
||||
METHODS calculate
|
||||
IMPORTING iv_flues TYPE i
|
||||
iv_building TYPE ty_building
|
||||
iv_soot TYPE i
|
||||
iv_express TYPE abap_bool
|
||||
RETURNING VALUE(rv_fee) TYPE ty_fee.
|
||||
|
||||
PRIVATE SECTION.
|
||||
CONSTANTS:
|
||||
BEGIN OF c_building,
|
||||
house TYPE ty_building VALUE 'H',
|
||||
apartment TYPE ty_building VALUE 'A',
|
||||
restaurant TYPE ty_building VALUE 'R',
|
||||
END OF c_building,
|
||||
c_rate_house TYPE ty_fee VALUE '45.00',
|
||||
c_rate_apartment TYPE ty_fee VALUE '35.00',
|
||||
c_rate_restaurant TYPE ty_fee VALUE '60.00',
|
||||
c_express_fee TYPE ty_fee VALUE '25.00',
|
||||
c_min_fee TYPE ty_fee VALUE '60.00',
|
||||
c_no_fee TYPE ty_fee VALUE '0.00',
|
||||
c_discount_pct TYPE i VALUE 10,
|
||||
c_discount_flues TYPE i VALUE 4,
|
||||
c_soot_min TYPE i VALUE 2,
|
||||
c_soot_max TYPE i VALUE 5,
|
||||
c_soot_step TYPE i VALUE 5.
|
||||
|
||||
METHODS rate_of
|
||||
IMPORTING iv_building TYPE ty_building
|
||||
RETURNING VALUE(rv_rate) TYPE ty_fee.
|
||||
METHODS base_fee
|
||||
IMPORTING iv_flues TYPE i
|
||||
iv_rate TYPE ty_fee
|
||||
RETURNING VALUE(rv_base) TYPE ty_fee.
|
||||
METHODS soot_pct
|
||||
IMPORTING iv_soot TYPE i
|
||||
RETURNING VALUE(rv_pct) TYPE i.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS {{p}}sweep_pricer IMPLEMENTATION.
|
||||
METHOD calculate.
|
||||
IF iv_flues < 1.
|
||||
rv_fee = c_no_fee.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA(lv_rate) = rate_of( iv_building ).
|
||||
IF lv_rate IS INITIAL.
|
||||
rv_fee = c_no_fee.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA(lv_fee) = base_fee( iv_flues = iv_flues
|
||||
iv_rate = lv_rate ).
|
||||
lv_fee = lv_fee + lv_fee * soot_pct( iv_soot ) / 100.
|
||||
|
||||
IF iv_express = abap_true.
|
||||
lv_fee = lv_fee + c_express_fee.
|
||||
ENDIF.
|
||||
|
||||
IF lv_fee < c_min_fee.
|
||||
lv_fee = c_min_fee.
|
||||
ENDIF.
|
||||
|
||||
rv_fee = lv_fee.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD rate_of.
|
||||
CASE iv_building.
|
||||
WHEN c_building-house.
|
||||
rv_rate = c_rate_house.
|
||||
WHEN c_building-apartment.
|
||||
rv_rate = c_rate_apartment.
|
||||
WHEN c_building-restaurant.
|
||||
rv_rate = c_rate_restaurant.
|
||||
WHEN OTHERS.
|
||||
rv_rate = c_no_fee.
|
||||
ENDCASE.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD base_fee.
|
||||
rv_base = iv_flues * iv_rate.
|
||||
IF iv_flues >= c_discount_flues.
|
||||
rv_base = rv_base - rv_base * c_discount_pct / 100.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD soot_pct.
|
||||
IF iv_soot < c_soot_min AND iv_soot <= c_soot_max.
|
||||
rv_pct = ( iv_soot - 1 ) * c_soot_step.
|
||||
ELSE.
|
||||
rv_pct = 0.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
106
tasks_gen/train/G1022/faulty/m4_sweep_pricer.clas.abap
Normal file
106
tasks_gen/train/G1022/faulty/m4_sweep_pricer.clas.abap
Normal file
@@ -0,0 +1,106 @@
|
||||
CLASS {{p}}sweep_pricer DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
TYPES:
|
||||
ty_building TYPE c LENGTH 1,
|
||||
ty_fee TYPE p LENGTH 8 DECIMALS 2.
|
||||
|
||||
METHODS calculate
|
||||
IMPORTING iv_flues TYPE i
|
||||
iv_building TYPE ty_building
|
||||
iv_soot TYPE i
|
||||
iv_express TYPE abap_bool
|
||||
RETURNING VALUE(rv_fee) TYPE ty_fee.
|
||||
|
||||
PRIVATE SECTION.
|
||||
CONSTANTS:
|
||||
BEGIN OF c_building,
|
||||
house TYPE ty_building VALUE 'H',
|
||||
apartment TYPE ty_building VALUE 'A',
|
||||
restaurant TYPE ty_building VALUE 'R',
|
||||
END OF c_building,
|
||||
c_rate_house TYPE ty_fee VALUE '45.00',
|
||||
c_rate_apartment TYPE ty_fee VALUE '35.00',
|
||||
c_rate_restaurant TYPE ty_fee VALUE '60.00',
|
||||
c_express_fee TYPE ty_fee VALUE '25.00',
|
||||
c_min_fee TYPE ty_fee VALUE '60.00',
|
||||
c_no_fee TYPE ty_fee VALUE '0.00',
|
||||
c_discount_pct TYPE i VALUE 10,
|
||||
c_discount_flues TYPE i VALUE 4,
|
||||
c_soot_min TYPE i VALUE 2,
|
||||
c_soot_max TYPE i VALUE 5,
|
||||
c_soot_step TYPE i VALUE 5.
|
||||
|
||||
METHODS rate_of
|
||||
IMPORTING iv_building TYPE ty_building
|
||||
RETURNING VALUE(rv_rate) TYPE ty_fee.
|
||||
METHODS base_fee
|
||||
IMPORTING iv_flues TYPE i
|
||||
iv_rate TYPE ty_fee
|
||||
RETURNING VALUE(rv_base) TYPE ty_fee.
|
||||
METHODS soot_pct
|
||||
IMPORTING iv_soot TYPE i
|
||||
RETURNING VALUE(rv_pct) TYPE i.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS {{p}}sweep_pricer IMPLEMENTATION.
|
||||
METHOD calculate.
|
||||
IF iv_flues < 1.
|
||||
rv_fee = c_no_fee.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA(lv_rate) = rate_of( iv_building ).
|
||||
IF lv_rate IS INITIAL.
|
||||
rv_fee = c_no_fee.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA(lv_fee) = base_fee( iv_flues = iv_flues
|
||||
iv_rate = lv_rate ).
|
||||
lv_fee = lv_fee + lv_fee * soot_pct( iv_soot ) / 100.
|
||||
|
||||
IF iv_express = abap_true.
|
||||
lv_fee = lv_fee + c_express_fee.
|
||||
ENDIF.
|
||||
|
||||
IF lv_fee < c_min_fee.
|
||||
lv_fee = c_min_fee.
|
||||
ENDIF.
|
||||
|
||||
rv_fee = lv_fee.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD rate_of.
|
||||
CASE iv_building.
|
||||
WHEN c_building-house.
|
||||
rv_rate = c_rate_house.
|
||||
WHEN c_building-apartment.
|
||||
rv_rate = c_rate_apartment.
|
||||
WHEN c_building-restaurant.
|
||||
rv_rate = c_rate_restaurant.
|
||||
WHEN OTHERS.
|
||||
rv_rate = c_no_fee.
|
||||
ENDCASE.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD base_fee.
|
||||
rv_base = iv_flues * iv_rate.
|
||||
IF iv_flues >= c_discount_flues.
|
||||
rv_base = rv_base - rv_base * c_discount_pct / 100.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD soot_pct.
|
||||
IF iv_soot >= c_soot_min AND iv_soot <= c_soot_max.
|
||||
rv_pct = ( iv_soot - 2 ) * c_soot_step.
|
||||
ELSE.
|
||||
rv_pct = 0.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
19
tasks_gen/train/G1022/generation.json
Normal file
19
tasks_gen/train/G1022/generation.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"id": "G1022",
|
||||
"pool": "train",
|
||||
"object_type": "CLAS",
|
||||
"category": "E",
|
||||
"attempts": [
|
||||
{
|
||||
"stage": "validate",
|
||||
"oracle": 100.0,
|
||||
"null": 0,
|
||||
"mutation": {
|
||||
"valid": 5,
|
||||
"killed": 5,
|
||||
"ok": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"accepted": true
|
||||
}
|
||||
133
tasks_gen/train/G1022/hidden/sweep_hidden.clas.abap
Normal file
133
tasks_gen/train/G1022/hidden/sweep_hidden.clas.abap
Normal file
@@ -0,0 +1,133 @@
|
||||
CLASS {{p}}sweep_hidden DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC
|
||||
FOR TESTING
|
||||
DURATION SHORT
|
||||
RISK LEVEL HARMLESS.
|
||||
|
||||
PRIVATE SECTION.
|
||||
TYPES ty_fee TYPE p LENGTH 8 DECIMALS 2.
|
||||
|
||||
DATA mo_cut TYPE REF TO {{p}}sweep_pricer.
|
||||
|
||||
METHODS setup.
|
||||
METHODS min_fee_house FOR TESTING.
|
||||
METHODS min_fee_apartment FOR TESTING.
|
||||
METHODS soot_three_surcharge FOR TESTING.
|
||||
METHODS soot_five_surcharge FOR TESTING.
|
||||
METHODS volume_discount FOR TESTING.
|
||||
METHODS discount_with_soot FOR TESTING.
|
||||
METHODS express_surcharge FOR TESTING.
|
||||
METHODS express_over_minimum FOR TESTING.
|
||||
METHODS unknown_building_zero FOR TESTING.
|
||||
METHODS no_flues_zero FOR TESTING.
|
||||
METHODS invalid_soot_no_surcharge FOR TESTING.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS {{p}}sweep_hidden IMPLEMENTATION.
|
||||
METHOD setup.
|
||||
mo_cut = NEW {{p}}sweep_pricer( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD min_fee_house.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = CONV ty_fee( '60.00' )
|
||||
act = mo_cut->calculate( iv_flues = 1
|
||||
iv_building = 'H'
|
||||
iv_soot = 1
|
||||
iv_express = abap_false ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD min_fee_apartment.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = CONV ty_fee( '60.00' )
|
||||
act = mo_cut->calculate( iv_flues = 1
|
||||
iv_building = 'A'
|
||||
iv_soot = 1
|
||||
iv_express = abap_false ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD soot_three_surcharge.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = CONV ty_fee( '99.00' )
|
||||
act = mo_cut->calculate( iv_flues = 2
|
||||
iv_building = 'H'
|
||||
iv_soot = 3
|
||||
iv_express = abap_false ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD soot_five_surcharge.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = CONV ty_fee( '216.00' )
|
||||
act = mo_cut->calculate( iv_flues = 3
|
||||
iv_building = 'R'
|
||||
iv_soot = 5
|
||||
iv_express = abap_false ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD volume_discount.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = CONV ty_fee( '132.30' )
|
||||
act = mo_cut->calculate( iv_flues = 4
|
||||
iv_building = 'A'
|
||||
iv_soot = 2
|
||||
iv_express = abap_false ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD discount_with_soot.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = CONV ty_fee( '186.30' )
|
||||
act = mo_cut->calculate( iv_flues = 4
|
||||
iv_building = 'H'
|
||||
iv_soot = 4
|
||||
iv_express = abap_false ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD express_surcharge.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = CONV ty_fee( '115.00' )
|
||||
act = mo_cut->calculate( iv_flues = 2
|
||||
iv_building = 'H'
|
||||
iv_soot = 1
|
||||
iv_express = abap_true ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD express_over_minimum.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = CONV ty_fee( '67.00' )
|
||||
act = mo_cut->calculate( iv_flues = 1
|
||||
iv_building = 'A'
|
||||
iv_soot = 5
|
||||
iv_express = abap_true ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD unknown_building_zero.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = CONV ty_fee( '0.00' )
|
||||
act = mo_cut->calculate( iv_flues = 3
|
||||
iv_building = 'X'
|
||||
iv_soot = 3
|
||||
iv_express = abap_false ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD no_flues_zero.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = CONV ty_fee( '0.00' )
|
||||
act = mo_cut->calculate( iv_flues = 0
|
||||
iv_building = 'H'
|
||||
iv_soot = 3
|
||||
iv_express = abap_false ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD invalid_soot_no_surcharge.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = CONV ty_fee( '90.00' )
|
||||
act = mo_cut->calculate( iv_flues = 2
|
||||
iv_building = 'H'
|
||||
iv_soot = 0
|
||||
iv_express = abap_false ) ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
84
tasks_gen/train/G1022/mutation.json
Normal file
84
tasks_gen/train/G1022/mutation.json
Normal file
@@ -0,0 +1,84 @@
|
||||
{
|
||||
"task": "G1022",
|
||||
"mutants": [
|
||||
{
|
||||
"object": "{{P}}SWEEP_PRICER",
|
||||
"mutant": "line 66: * -> / (arith)",
|
||||
"status": "killed",
|
||||
"hidden": "2/11",
|
||||
"failed_tests": [
|
||||
"DISCOUNT_WITH_SOOT",
|
||||
"EXPRESS_OVER_MINIMUM",
|
||||
"EXPRESS_SURCHARGE",
|
||||
"INVALID_SOOT_NO_SURCHARGE",
|
||||
"MIN_FEE_APARTMENT",
|
||||
"MIN_FEE_HOUSE",
|
||||
"SOOT_FIVE_SURCHARGE",
|
||||
"SOOT_THREE_SURCHARGE",
|
||||
"VOLUME_DISCOUNT"
|
||||
]
|
||||
},
|
||||
{
|
||||
"object": "{{P}}SWEEP_PRICER",
|
||||
"mutant": "line 68: abap_true -> abap_false (bool)",
|
||||
"status": "killed",
|
||||
"hidden": "3/11",
|
||||
"failed_tests": [
|
||||
"DISCOUNT_WITH_SOOT",
|
||||
"EXPRESS_OVER_MINIMUM",
|
||||
"EXPRESS_SURCHARGE",
|
||||
"INVALID_SOOT_NO_SURCHARGE",
|
||||
"MIN_FEE_HOUSE",
|
||||
"SOOT_FIVE_SURCHARGE",
|
||||
"SOOT_THREE_SURCHARGE",
|
||||
"VOLUME_DISCOUNT"
|
||||
]
|
||||
},
|
||||
{
|
||||
"object": "{{P}}SWEEP_PRICER",
|
||||
"mutant": "line 93: * -> / (arith)",
|
||||
"status": "killed",
|
||||
"hidden": "4/11",
|
||||
"failed_tests": [
|
||||
"DISCOUNT_WITH_SOOT",
|
||||
"EXPRESS_OVER_MINIMUM",
|
||||
"EXPRESS_SURCHARGE",
|
||||
"INVALID_SOOT_NO_SURCHARGE",
|
||||
"SOOT_FIVE_SURCHARGE",
|
||||
"SOOT_THREE_SURCHARGE",
|
||||
"VOLUME_DISCOUNT"
|
||||
]
|
||||
},
|
||||
{
|
||||
"object": "{{P}}SWEEP_PRICER",
|
||||
"mutant": "line 100: >= -> < (rel)",
|
||||
"status": "killed",
|
||||
"hidden": "5/11",
|
||||
"failed_tests": [
|
||||
"DISCOUNT_WITH_SOOT",
|
||||
"EXPRESS_OVER_MINIMUM",
|
||||
"INVALID_SOOT_NO_SURCHARGE",
|
||||
"SOOT_FIVE_SURCHARGE",
|
||||
"SOOT_THREE_SURCHARGE",
|
||||
"VOLUME_DISCOUNT"
|
||||
]
|
||||
},
|
||||
{
|
||||
"object": "{{P}}SWEEP_PRICER",
|
||||
"mutant": "line 101: 1 -> 2 (const)",
|
||||
"status": "killed",
|
||||
"hidden": "6/11",
|
||||
"failed_tests": [
|
||||
"DISCOUNT_WITH_SOOT",
|
||||
"EXPRESS_OVER_MINIMUM",
|
||||
"SOOT_FIVE_SURCHARGE",
|
||||
"SOOT_THREE_SURCHARGE",
|
||||
"VOLUME_DISCOUNT"
|
||||
]
|
||||
}
|
||||
],
|
||||
"valid": 5,
|
||||
"killed": 5,
|
||||
"kill_rate": 1.0,
|
||||
"ok": true
|
||||
}
|
||||
106
tasks_gen/train/G1022/reference/sweep_pricer.clas.abap
Normal file
106
tasks_gen/train/G1022/reference/sweep_pricer.clas.abap
Normal file
@@ -0,0 +1,106 @@
|
||||
CLASS {{p}}sweep_pricer DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
TYPES:
|
||||
ty_building TYPE c LENGTH 1,
|
||||
ty_fee TYPE p LENGTH 8 DECIMALS 2.
|
||||
|
||||
METHODS calculate
|
||||
IMPORTING iv_flues TYPE i
|
||||
iv_building TYPE ty_building
|
||||
iv_soot TYPE i
|
||||
iv_express TYPE abap_bool
|
||||
RETURNING VALUE(rv_fee) TYPE ty_fee.
|
||||
|
||||
PRIVATE SECTION.
|
||||
CONSTANTS:
|
||||
BEGIN OF c_building,
|
||||
house TYPE ty_building VALUE 'H',
|
||||
apartment TYPE ty_building VALUE 'A',
|
||||
restaurant TYPE ty_building VALUE 'R',
|
||||
END OF c_building,
|
||||
c_rate_house TYPE ty_fee VALUE '45.00',
|
||||
c_rate_apartment TYPE ty_fee VALUE '35.00',
|
||||
c_rate_restaurant TYPE ty_fee VALUE '60.00',
|
||||
c_express_fee TYPE ty_fee VALUE '25.00',
|
||||
c_min_fee TYPE ty_fee VALUE '60.00',
|
||||
c_no_fee TYPE ty_fee VALUE '0.00',
|
||||
c_discount_pct TYPE i VALUE 10,
|
||||
c_discount_flues TYPE i VALUE 4,
|
||||
c_soot_min TYPE i VALUE 2,
|
||||
c_soot_max TYPE i VALUE 5,
|
||||
c_soot_step TYPE i VALUE 5.
|
||||
|
||||
METHODS rate_of
|
||||
IMPORTING iv_building TYPE ty_building
|
||||
RETURNING VALUE(rv_rate) TYPE ty_fee.
|
||||
METHODS base_fee
|
||||
IMPORTING iv_flues TYPE i
|
||||
iv_rate TYPE ty_fee
|
||||
RETURNING VALUE(rv_base) TYPE ty_fee.
|
||||
METHODS soot_pct
|
||||
IMPORTING iv_soot TYPE i
|
||||
RETURNING VALUE(rv_pct) TYPE i.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS {{p}}sweep_pricer IMPLEMENTATION.
|
||||
METHOD calculate.
|
||||
IF iv_flues < 1.
|
||||
rv_fee = c_no_fee.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA(lv_rate) = rate_of( iv_building ).
|
||||
IF lv_rate IS INITIAL.
|
||||
rv_fee = c_no_fee.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA(lv_fee) = base_fee( iv_flues = iv_flues
|
||||
iv_rate = lv_rate ).
|
||||
lv_fee = lv_fee + lv_fee * soot_pct( iv_soot ) / 100.
|
||||
|
||||
IF iv_express = abap_true.
|
||||
lv_fee = lv_fee + c_express_fee.
|
||||
ENDIF.
|
||||
|
||||
IF lv_fee < c_min_fee.
|
||||
lv_fee = c_min_fee.
|
||||
ENDIF.
|
||||
|
||||
rv_fee = lv_fee.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD rate_of.
|
||||
CASE iv_building.
|
||||
WHEN c_building-house.
|
||||
rv_rate = c_rate_house.
|
||||
WHEN c_building-apartment.
|
||||
rv_rate = c_rate_apartment.
|
||||
WHEN c_building-restaurant.
|
||||
rv_rate = c_rate_restaurant.
|
||||
WHEN OTHERS.
|
||||
rv_rate = c_no_fee.
|
||||
ENDCASE.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD base_fee.
|
||||
rv_base = iv_flues * iv_rate.
|
||||
IF iv_flues >= c_discount_flues.
|
||||
rv_base = rv_base - rv_base * c_discount_pct / 100.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD soot_pct.
|
||||
IF iv_soot >= c_soot_min AND iv_soot <= c_soot_max.
|
||||
rv_pct = ( iv_soot - 1 ) * c_soot_step.
|
||||
ELSE.
|
||||
rv_pct = 0.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
@@ -0,0 +1,81 @@
|
||||
CLASS ltc_sweep_pricer DEFINITION
|
||||
FINAL
|
||||
FOR TESTING
|
||||
DURATION SHORT
|
||||
RISK LEVEL HARMLESS.
|
||||
|
||||
PRIVATE SECTION.
|
||||
TYPES ty_fee TYPE p LENGTH 8 DECIMALS 2.
|
||||
|
||||
DATA mo_cut TYPE REF TO {{p}}sweep_pricer.
|
||||
|
||||
METHODS setup.
|
||||
METHODS minimum_fee_applies FOR TESTING.
|
||||
METHODS soot_surcharge FOR TESTING.
|
||||
METHODS volume_discount FOR TESTING.
|
||||
METHODS express_fee FOR TESTING.
|
||||
METHODS unknown_building FOR TESTING.
|
||||
METHODS invalid_flues FOR TESTING.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS ltc_sweep_pricer IMPLEMENTATION.
|
||||
METHOD setup.
|
||||
mo_cut = NEW {{p}}sweep_pricer( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD minimum_fee_applies.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = CONV ty_fee( '60.00' )
|
||||
act = mo_cut->calculate( iv_flues = 1
|
||||
iv_building = 'A'
|
||||
iv_soot = 1
|
||||
iv_express = abap_false ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD soot_surcharge.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = CONV ty_fee( '216.00' )
|
||||
act = mo_cut->calculate( iv_flues = 3
|
||||
iv_building = 'R'
|
||||
iv_soot = 5
|
||||
iv_express = abap_false ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD volume_discount.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = CONV ty_fee( '132.30' )
|
||||
act = mo_cut->calculate( iv_flues = 4
|
||||
iv_building = 'A'
|
||||
iv_soot = 2
|
||||
iv_express = abap_false ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD express_fee.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = CONV ty_fee( '115.00' )
|
||||
act = mo_cut->calculate( iv_flues = 2
|
||||
iv_building = 'H'
|
||||
iv_soot = 1
|
||||
iv_express = abap_true ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD unknown_building.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = CONV ty_fee( '0.00' )
|
||||
act = mo_cut->calculate( iv_flues = 3
|
||||
iv_building = 'X'
|
||||
iv_soot = 3
|
||||
iv_express = abap_false ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD invalid_flues.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = CONV ty_fee( '0.00' )
|
||||
act = mo_cut->calculate( iv_flues = 0
|
||||
iv_building = 'H'
|
||||
iv_soot = 3
|
||||
iv_express = abap_false ) ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
98
tasks_gen/train/G1022/seed/sweep_pricer.clas.abap
Normal file
98
tasks_gen/train/G1022/seed/sweep_pricer.clas.abap
Normal file
@@ -0,0 +1,98 @@
|
||||
CLASS {{p}}sweep_pricer DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
TYPES:
|
||||
ty_building TYPE c LENGTH 1,
|
||||
ty_fee TYPE p LENGTH 8 DECIMALS 2.
|
||||
|
||||
METHODS calculate
|
||||
IMPORTING iv_flues TYPE i
|
||||
iv_building TYPE ty_building
|
||||
iv_soot TYPE i
|
||||
iv_express TYPE abap_bool
|
||||
RETURNING VALUE(rv_fee) TYPE ty_fee.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS {{p}}sweep_pricer IMPLEMENTATION.
|
||||
METHOD calculate.
|
||||
DATA lv_rate TYPE ty_fee.
|
||||
DATA lv_fee TYPE ty_fee.
|
||||
DATA lv_pct TYPE i.
|
||||
DATA lv_i TYPE i.
|
||||
|
||||
rv_fee = 0.
|
||||
|
||||
IF iv_flues > 0.
|
||||
|
||||
IF iv_building = 'H'.
|
||||
lv_rate = '45.00'.
|
||||
ELSE.
|
||||
IF iv_building = 'A'.
|
||||
lv_rate = '35.00'.
|
||||
ELSE.
|
||||
IF iv_building = 'R'.
|
||||
lv_rate = '60.00'.
|
||||
ELSE.
|
||||
lv_rate = 0.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
IF lv_rate > 0.
|
||||
|
||||
lv_fee = 0.
|
||||
lv_i = 0.
|
||||
WHILE lv_i < iv_flues.
|
||||
lv_fee = lv_fee + lv_rate.
|
||||
lv_i = lv_i + 1.
|
||||
ENDWHILE.
|
||||
|
||||
IF iv_flues >= 4.
|
||||
lv_fee = lv_fee - lv_fee * 10 / 100.
|
||||
ENDIF.
|
||||
|
||||
IF iv_soot = 1.
|
||||
lv_pct = 0.
|
||||
ELSE.
|
||||
IF iv_soot = 2.
|
||||
lv_pct = 5.
|
||||
ELSE.
|
||||
IF iv_soot = 3.
|
||||
lv_pct = 10.
|
||||
ELSE.
|
||||
IF iv_soot = 4.
|
||||
lv_pct = 15.
|
||||
ELSE.
|
||||
IF iv_soot = 5.
|
||||
lv_pct = 20.
|
||||
ELSE.
|
||||
lv_pct = 0.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
lv_fee = lv_fee + lv_fee * lv_pct / 100.
|
||||
|
||||
IF iv_express = 'X'.
|
||||
lv_fee = lv_fee + 25.
|
||||
ENDIF.
|
||||
|
||||
IF lv_fee < 60.
|
||||
lv_fee = 60.
|
||||
ENDIF.
|
||||
|
||||
rv_fee = lv_fee.
|
||||
|
||||
ENDIF.
|
||||
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
42
tasks_gen/train/G1022/spec.md
Normal file
42
tasks_gen/train/G1022/spec.md
Normal file
@@ -0,0 +1,42 @@
|
||||
# 1. Goal
|
||||
A chimney sweep company calculates the fee of a sweep visit. A dispatcher
|
||||
program calls the class {{P}}SWEEP_PRICER before it confirms an appointment.
|
||||
The class works, but the code is hard to read and hard to change. Refactor the
|
||||
class. The behavior stays the same.
|
||||
|
||||
# 2. Open questions
|
||||
None.
|
||||
|
||||
# 3. Context
|
||||
- The class {{P}}SWEEP_PRICER exists in package $TMP. It is active.
|
||||
- The class is public and final. It has one public method, CALCULATE.
|
||||
- The method CALCULATE has the importing parameters iv_flues (TYPE i),
|
||||
iv_building (TYPE ty_building), iv_soot (TYPE i) and iv_express
|
||||
(TYPE abap_bool). It has the returning parameter rv_fee (TYPE ty_fee).
|
||||
- ty_building and ty_fee are public types of the class. ty_building is CHAR 1.
|
||||
ty_fee is a packed number with 8 characters and 2 decimal places.
|
||||
- The legacy code contains the complete business logic. Read the legacy code.
|
||||
|
||||
# 4. Contract
|
||||
- Refactor the class {{P}}SWEEP_PRICER in package $TMP.
|
||||
- The class stays public and final.
|
||||
- The public method CALCULATE keeps its name, its parameters and the types of
|
||||
the parameters.
|
||||
- Do not add other public methods or public attributes.
|
||||
|
||||
# 5. Business rules
|
||||
- The legacy code contains all the business rules.
|
||||
- The behavior of the method CALCULATE stays the same for every input.
|
||||
- Do not change any result of the method CALCULATE.
|
||||
|
||||
# 6. Constraints
|
||||
- Release target: SAP_BASIS 816 (ABAP Platform 2025).
|
||||
- Coding standards: Clean ABAP. A method has less than 40 statements. No deep
|
||||
nesting. No magic numbers, use constants. Use meaningful names. No comment
|
||||
that restates the code. No global variables.
|
||||
- Out of scope: do not change the public interface of the class.
|
||||
|
||||
# 7. Acceptance
|
||||
- The class is active and has no syntax error.
|
||||
- The hidden tests pass. They check the unchanged behavior.
|
||||
- Write your own ABAP Unit tests for the class.
|
||||
49
tasks_gen/train/G1022/task.json
Normal file
49
tasks_gen/train/G1022/task.json
Normal file
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"id": "G1022",
|
||||
"category": "E",
|
||||
"object_type": "CLAS",
|
||||
"difficulty": 2,
|
||||
"release_target": "v816",
|
||||
"expected_outcome": "implement",
|
||||
"budget": {
|
||||
"max_tool_calls": 70,
|
||||
"max_activations": 18
|
||||
},
|
||||
"seed": [
|
||||
{
|
||||
"type": "CLAS",
|
||||
"name": "{{P}}SWEEP_PRICER",
|
||||
"file": "seed/sweep_pricer.clas.abap",
|
||||
"description": "Legacy chimney sweep fee calculator with one long, deeply nested method"
|
||||
}
|
||||
],
|
||||
"contract": [
|
||||
{
|
||||
"type": "CLAS",
|
||||
"name": "{{P}}SWEEP_PRICER"
|
||||
}
|
||||
],
|
||||
"out_of_scope": [],
|
||||
"hidden_tests": [
|
||||
{
|
||||
"type": "CLAS",
|
||||
"name": "{{P}}SWEEP_HIDDEN",
|
||||
"file": "hidden/sweep_hidden.clas.abap",
|
||||
"description": "Hidden tests for the unchanged sweep fee behavior"
|
||||
}
|
||||
],
|
||||
"reference": [
|
||||
{
|
||||
"type": "CLAS",
|
||||
"name": "{{P}}SWEEP_PRICER",
|
||||
"file": "reference/sweep_pricer.clas.abap",
|
||||
"description": "Refactored chimney sweep fee calculator",
|
||||
"testclasses_file": "reference/sweep_pricer.testclasses.abap"
|
||||
}
|
||||
],
|
||||
"craft_checks": [
|
||||
"method_length",
|
||||
"magic_numbers",
|
||||
"deep_nesting"
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user