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:
76
tasks_gen/eval/G0169/reference/cowork_fee.clas.abap
Normal file
76
tasks_gen/eval/G0169/reference/cowork_fee.clas.abap
Normal file
@@ -0,0 +1,76 @@
|
||||
CLASS {{p}}cowork_fee DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
||||
PUBLIC SECTION.
|
||||
TYPES ty_desk TYPE c LENGTH 3.
|
||||
TYPES ty_amount TYPE i.
|
||||
METHODS constructor.
|
||||
METHODS calculate_fee
|
||||
IMPORTING
|
||||
iv_desk TYPE ty_desk
|
||||
iv_months TYPE i
|
||||
iv_student TYPE abap_bool
|
||||
iv_under_25 TYPE abap_bool
|
||||
RETURNING
|
||||
VALUE(rv_fee) TYPE ty_amount.
|
||||
PRIVATE SECTION.
|
||||
METHODS monthly_fee
|
||||
IMPORTING
|
||||
iv_desk TYPE ty_desk
|
||||
iv_student TYPE abap_bool
|
||||
iv_under_25 TYPE abap_bool
|
||||
RETURNING
|
||||
VALUE(rv_fee) TYPE ty_amount.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS {{p}}cowork_fee IMPLEMENTATION.
|
||||
METHOD constructor.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD calculate_fee.
|
||||
IF iv_months < 1.
|
||||
rv_fee = 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
DATA(lv_monthly) = monthly_fee( iv_desk = iv_desk
|
||||
iv_student = iv_student
|
||||
iv_under_25 = iv_under_25 ).
|
||||
rv_fee = lv_monthly * iv_months.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD monthly_fee.
|
||||
" Resolve the contradiction: the student rule wins over the under-25 rule.
|
||||
IF iv_student = abap_true.
|
||||
CASE iv_desk.
|
||||
WHEN 'HOT'.
|
||||
rv_fee = 160.
|
||||
WHEN 'DED'.
|
||||
rv_fee = 280.
|
||||
WHEN 'PRI'.
|
||||
rv_fee = 480.
|
||||
WHEN OTHERS.
|
||||
rv_fee = 0.
|
||||
ENDCASE.
|
||||
ELSEIF iv_under_25 = abap_true.
|
||||
CASE iv_desk.
|
||||
WHEN 'HOT'.
|
||||
rv_fee = 150.
|
||||
WHEN 'DED'.
|
||||
rv_fee = 260.
|
||||
WHEN 'PRI'.
|
||||
rv_fee = 450.
|
||||
WHEN OTHERS.
|
||||
rv_fee = 0.
|
||||
ENDCASE.
|
||||
ELSE.
|
||||
CASE iv_desk.
|
||||
WHEN 'HOT'.
|
||||
rv_fee = 200.
|
||||
WHEN 'DED'.
|
||||
rv_fee = 350.
|
||||
WHEN 'PRI'.
|
||||
rv_fee = 600.
|
||||
WHEN OTHERS.
|
||||
rv_fee = 0.
|
||||
ENDCASE.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
60
tasks_gen/eval/G0169/reference/cowork_fee.testclasses.abap
Normal file
60
tasks_gen/eval/G0169/reference/cowork_fee.testclasses.abap
Normal file
@@ -0,0 +1,60 @@
|
||||
CLASS ltc_cowork_fee DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
||||
PRIVATE SECTION.
|
||||
DATA mo_cut TYPE REF TO {{p}}cowork_fee.
|
||||
METHODS setup.
|
||||
METHODS hot_desk_no_discount FOR TESTING.
|
||||
METHODS student_discount FOR TESTING.
|
||||
METHODS under_25_discount FOR TESTING.
|
||||
METHODS student_and_under_25 FOR TESTING.
|
||||
METHODS invalid_desk FOR TESTING.
|
||||
METHODS invalid_months FOR TESTING.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltc_cowork_fee IMPLEMENTATION.
|
||||
METHOD setup.
|
||||
mo_cut = NEW {{p}}cowork_fee( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD hot_desk_no_discount.
|
||||
cl_abap_unit_assert=>assert_equals( exp = 200
|
||||
act = mo_cut->calculate_fee( iv_desk = 'HOT' iv_months = 1
|
||||
iv_student = abap_false
|
||||
iv_under_25 = abap_false ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD student_discount.
|
||||
cl_abap_unit_assert=>assert_equals( exp = 160
|
||||
act = mo_cut->calculate_fee( iv_desk = 'HOT' iv_months = 1
|
||||
iv_student = abap_true
|
||||
iv_under_25 = abap_false ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD under_25_discount.
|
||||
cl_abap_unit_assert=>assert_equals( exp = 150
|
||||
act = mo_cut->calculate_fee( iv_desk = 'HOT' iv_months = 1
|
||||
iv_student = abap_false
|
||||
iv_under_25 = abap_true ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD student_and_under_25.
|
||||
" The reference resolves the contradiction in favour of the student rule.
|
||||
cl_abap_unit_assert=>assert_equals( exp = 160
|
||||
act = mo_cut->calculate_fee( iv_desk = 'HOT' iv_months = 1
|
||||
iv_student = abap_true
|
||||
iv_under_25 = abap_true ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD invalid_desk.
|
||||
cl_abap_unit_assert=>assert_equals( exp = 0
|
||||
act = mo_cut->calculate_fee( iv_desk = 'XXX' iv_months = 1
|
||||
iv_student = abap_false
|
||||
iv_under_25 = abap_false ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD invalid_months.
|
||||
cl_abap_unit_assert=>assert_equals( exp = 0
|
||||
act = mo_cut->calculate_fee( iv_desk = 'HOT' iv_months = 0
|
||||
iv_student = abap_false
|
||||
iv_under_25 = abap_false ) ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
Reference in New Issue
Block a user