Step F first pass: 81/92 accepted; budget floor 60 calls; rejected slots moved for regeneration
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014aUaQeLnwbb1zTpN7kHeat
This commit is contained in:
58
tasks_gen/eval/G0171/reference/kiln_pricer.clas.abap
Normal file
58
tasks_gen/eval/G0171/reference/kiln_pricer.clas.abap
Normal file
@@ -0,0 +1,58 @@
|
||||
CLASS {{p}}kiln_pricer DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
||||
PUBLIC SECTION.
|
||||
INTERFACES {{p}}if_kiln_price.
|
||||
|
||||
PRIVATE SECTION.
|
||||
TYPES ty_amount TYPE p LENGTH 10 DECIMALS 4.
|
||||
|
||||
CONSTANTS:
|
||||
c_base_fee TYPE ty_amount VALUE '40.00',
|
||||
c_piece_fee TYPE ty_amount VALUE '12.00',
|
||||
c_free_weight TYPE {{p}}if_kiln_price=>ty_weight VALUE '10.00',
|
||||
c_kg_fee TYPE ty_amount VALUE '3.00',
|
||||
c_glaze_fee TYPE ty_amount VALUE '25.00',
|
||||
c_member_rate TYPE ty_amount VALUE '0.85'.
|
||||
|
||||
METHODS clay_factor
|
||||
IMPORTING iv_clay TYPE {{p}}if_kiln_price=>ty_clay
|
||||
RETURNING VALUE(rv_factor) TYPE ty_amount.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}kiln_pricer IMPLEMENTATION.
|
||||
METHOD {{p}}if_kiln_price~calculate_price.
|
||||
IF iv_clay IS INITIAL.
|
||||
rv_price = 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA lv_price TYPE ty_amount.
|
||||
lv_price = c_base_fee + iv_pieces * c_piece_fee.
|
||||
IF iv_weight > c_free_weight.
|
||||
lv_price = lv_price + ( iv_weight - c_free_weight ) * c_kg_fee.
|
||||
ENDIF.
|
||||
|
||||
DATA(lv_factor) = clay_factor( iv_clay ).
|
||||
lv_price = lv_price * lv_factor.
|
||||
|
||||
IF iv_glaze = abap_true.
|
||||
lv_price = lv_price + c_glaze_fee.
|
||||
ENDIF.
|
||||
IF iv_member = abap_true.
|
||||
lv_price = lv_price * c_member_rate.
|
||||
ENDIF.
|
||||
|
||||
rv_price = round( val = lv_price dec = 2 ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD clay_factor.
|
||||
CASE iv_clay.
|
||||
WHEN 'ST'.
|
||||
rv_factor = '1.20'.
|
||||
WHEN 'PO'.
|
||||
rv_factor = '1.50'.
|
||||
WHEN OTHERS.
|
||||
rv_factor = '1.00'.
|
||||
ENDCASE.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
92
tasks_gen/eval/G0171/reference/kiln_pricer.testclasses.abap
Normal file
92
tasks_gen/eval/G0171/reference/kiln_pricer.testclasses.abap
Normal file
@@ -0,0 +1,92 @@
|
||||
CLASS ltc_kiln_pricer DEFINITION FINAL FOR TESTING
|
||||
DURATION SHORT RISK LEVEL HARMLESS.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA mo_cut TYPE REF TO {{p}}if_kiln_price.
|
||||
|
||||
METHODS setup.
|
||||
METHODS base_fee FOR TESTING.
|
||||
METHODS piece_fee FOR TESTING.
|
||||
METHODS weight_surcharge FOR TESTING.
|
||||
METHODS clay_factor FOR TESTING.
|
||||
METHODS glaze_fee FOR TESTING.
|
||||
METHODS member_discount FOR TESTING.
|
||||
METHODS initial_clay FOR TESTING.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltc_kiln_pricer IMPLEMENTATION.
|
||||
METHOD setup.
|
||||
mo_cut = NEW {{p}}kiln_pricer( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD base_fee.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = '40.00'
|
||||
act = mo_cut->calculate_price( iv_pieces = 0
|
||||
iv_weight = '0.00'
|
||||
iv_clay = 'EA'
|
||||
iv_glaze = abap_false
|
||||
iv_member = abap_false ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD piece_fee.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = '100.00'
|
||||
act = mo_cut->calculate_price( iv_pieces = 5
|
||||
iv_weight = '0.00'
|
||||
iv_clay = 'EA'
|
||||
iv_glaze = abap_false
|
||||
iv_member = abap_false ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD weight_surcharge.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = '55.00'
|
||||
act = mo_cut->calculate_price( iv_pieces = 0
|
||||
iv_weight = '15.00'
|
||||
iv_clay = 'EA'
|
||||
iv_glaze = abap_false
|
||||
iv_member = abap_false ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD clay_factor.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = '60.00'
|
||||
act = mo_cut->calculate_price( iv_pieces = 0
|
||||
iv_weight = '0.00'
|
||||
iv_clay = 'PO'
|
||||
iv_glaze = abap_false
|
||||
iv_member = abap_false ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD glaze_fee.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = '65.00'
|
||||
act = mo_cut->calculate_price( iv_pieces = 0
|
||||
iv_weight = '0.00'
|
||||
iv_clay = 'EA'
|
||||
iv_glaze = abap_true
|
||||
iv_member = abap_false ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD member_discount.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = '34.00'
|
||||
act = mo_cut->calculate_price( iv_pieces = 0
|
||||
iv_weight = '0.00'
|
||||
iv_clay = 'EA'
|
||||
iv_glaze = abap_false
|
||||
iv_member = abap_true ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD initial_clay.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = '0.00'
|
||||
act = mo_cut->calculate_price( iv_pieces = 0
|
||||
iv_weight = '0.00'
|
||||
iv_clay = space
|
||||
iv_glaze = abap_false
|
||||
iv_member = abap_false ) ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
Reference in New Issue
Block a user