Eval review v1: checklist, review helper, 24 tasks reviewed; G0002/G0022 tests fixed; I/E generator definitions
- docs/eval-inceleme.md checklist; harness/review.py - 19 accept, 1 fix pending (G0019), 4 flagged (I/E tasks solvable without legacy code) - generator: categories I and E fix/refactor the seed object in place Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014aUaQeLnwbb1zTpN7kHeat
This commit is contained in:
85
tasks_gen/eval/G0022/faulty/m4_expense_validator.clas.abap
Normal file
85
tasks_gen/eval/G0022/faulty/m4_expense_validator.clas.abap
Normal file
@@ -0,0 +1,85 @@
|
||||
CLASS {{p}}expense_validator DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
METHODS validate
|
||||
IMPORTING is_claim TYPE {{p}}if_expense_claim=>ty_claim
|
||||
RAISING {{p}}cx_claim_error.
|
||||
|
||||
PRIVATE SECTION.
|
||||
CONSTANTS:
|
||||
c_receipt_limit TYPE {{p}}if_expense_claim=>ty_amount VALUE '100.00',
|
||||
c_cc_limit TYPE {{p}}if_expense_claim=>ty_amount VALUE '1000.00'.
|
||||
|
||||
METHODS check_amount
|
||||
IMPORTING is_claim TYPE {{p}}if_expense_claim=>ty_claim
|
||||
RAISING {{p}}cx_claim_error.
|
||||
METHODS check_currency
|
||||
IMPORTING is_claim TYPE {{p}}if_expense_claim=>ty_claim
|
||||
RAISING {{p}}cx_claim_error.
|
||||
METHODS check_date
|
||||
IMPORTING is_claim TYPE {{p}}if_expense_claim=>ty_claim
|
||||
RAISING {{p}}cx_claim_error.
|
||||
METHODS check_receipt
|
||||
IMPORTING is_claim TYPE {{p}}if_expense_claim=>ty_claim
|
||||
RAISING {{p}}cx_claim_error.
|
||||
METHODS check_cost_center
|
||||
IMPORTING is_claim TYPE {{p}}if_expense_claim=>ty_claim
|
||||
RAISING {{p}}cx_claim_error.
|
||||
METHODS is_supported_currency
|
||||
IMPORTING iv_currency TYPE {{p}}if_expense_claim=>ty_currency
|
||||
RETURNING VALUE(rv_supported) TYPE abap_bool.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}expense_validator IMPLEMENTATION.
|
||||
METHOD validate.
|
||||
check_amount( is_claim ).
|
||||
check_currency( is_claim ).
|
||||
check_date( is_claim ).
|
||||
check_receipt( is_claim ).
|
||||
check_cost_center( is_claim ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD check_amount.
|
||||
IF is_claim-amount <= 0.
|
||||
RAISE EXCEPTION TYPE {{p}}cx_claim_amount
|
||||
EXPORTING iv_amount = is_claim-amount.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD check_currency.
|
||||
IF is_supported_currency( is_claim-currency ) = abap_false.
|
||||
RAISE EXCEPTION TYPE {{p}}cx_claim_currency
|
||||
EXPORTING iv_currency = is_claim-currency.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD check_date.
|
||||
IF is_claim-claim_date > sy-datum.
|
||||
RAISE EXCEPTION TYPE {{p}}cx_claim_date
|
||||
EXPORTING iv_claim_date = is_claim-claim_date.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD check_receipt.
|
||||
IF is_claim-amount >= c_receipt_limit AND is_claim-has_receipt = abap_false.
|
||||
RAISE EXCEPTION TYPE {{p}}cx_claim_receipt
|
||||
EXPORTING iv_amount = is_claim-amount.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD check_cost_center.
|
||||
IF is_claim-amount >= c_cc_limit AND is_claim-cost_center IS INITIAL.
|
||||
RAISE EXCEPTION TYPE {{p}}cx_claim_costcenter
|
||||
EXPORTING iv_amount = is_claim-amount.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD is_supported_currency.
|
||||
rv_supported = xsdbool( iv_currency = 'EUR' OR iv_currency = 'USD'
|
||||
OR iv_currency = 'GBP' AND iv_currency = 'CHF' ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
@@ -37,6 +37,18 @@
|
||||
"change": "budget floor: max_activations 12 -> 14 (reference alone needs 13).",
|
||||
"oracle": 100.0,
|
||||
"null": 0
|
||||
},
|
||||
{
|
||||
"stage": "manual_fix",
|
||||
"by": "Claude review 2026-10-03",
|
||||
"change": "Review: added hidden test other_currencies_pass (USD, GBP, CHF).",
|
||||
"oracle": 100.0,
|
||||
"null": 0,
|
||||
"mutation": {
|
||||
"valid": 5,
|
||||
"killed": 5,
|
||||
"ok": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"accepted": true
|
||||
|
||||
@@ -19,6 +19,7 @@ CLASS {{p}}d01_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
|
||||
METHODS cost_center_not_required FOR TESTING.
|
||||
METHODS amount_rule_has_priority FOR TESTING.
|
||||
METHODS receipt_rule_has_priority FOR TESTING.
|
||||
METHODS other_currencies_pass FOR TESTING.
|
||||
|
||||
METHODS build_claim
|
||||
IMPORTING iv_amount TYPE ty_amount
|
||||
@@ -54,6 +55,19 @@ CLASS {{p}}d01_hidden IMPLEMENTATION.
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD other_currencies_pass.
|
||||
LOOP AT VALUE string_table( ( `USD` ) ( `GBP` ) ( `CHF` ) ) INTO DATA(lv_currency).
|
||||
DATA(ls_claim) = build_claim( iv_amount = '250.00' iv_currency = CONV #( lv_currency )
|
||||
iv_date = sy-datum iv_cc = 'CC1000'
|
||||
iv_receipt = abap_true ).
|
||||
TRY.
|
||||
mo_cut->validate( ls_claim ).
|
||||
CATCH {{p}}cx_claim_error INTO DATA(lx).
|
||||
cl_abap_unit_assert=>fail( msg = |{ lv_currency }: { lx->get_message( ) }| ).
|
||||
ENDTRY.
|
||||
ENDLOOP.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zero_amount_rejected.
|
||||
DATA(ls_claim) = build_claim( iv_amount = 0 iv_currency = 'EUR'
|
||||
iv_date = sy-datum iv_cc = 'CC1000'
|
||||
|
||||
@@ -5,11 +5,12 @@
|
||||
"object": "{{P}}EXPENSE_VALIDATOR",
|
||||
"mutant": "line 54: = -> <> (eq)",
|
||||
"status": "killed",
|
||||
"hidden": "3/12",
|
||||
"hidden": "3/13",
|
||||
"failed_tests": [
|
||||
"COST_CENTER_NOT_REQUIRED",
|
||||
"COST_CENTER_REQUIRED",
|
||||
"FUTURE_DATE_REJECTED",
|
||||
"OTHER_CURRENCIES_PASS",
|
||||
"RECEIPT_NOT_REQUIRED_BELOW",
|
||||
"RECEIPT_REQUIRED",
|
||||
"RECEIPT_RULE_HAS_PRIORITY",
|
||||
@@ -22,11 +23,12 @@
|
||||
"object": "{{P}}EXPENSE_VALIDATOR",
|
||||
"mutant": "line 54: abap_false -> abap_true (bool)",
|
||||
"status": "killed",
|
||||
"hidden": "3/12",
|
||||
"hidden": "3/13",
|
||||
"failed_tests": [
|
||||
"COST_CENTER_NOT_REQUIRED",
|
||||
"COST_CENTER_REQUIRED",
|
||||
"FUTURE_DATE_REJECTED",
|
||||
"OTHER_CURRENCIES_PASS",
|
||||
"RECEIPT_NOT_REQUIRED_BELOW",
|
||||
"RECEIPT_REQUIRED",
|
||||
"RECEIPT_RULE_HAS_PRIORITY",
|
||||
@@ -39,11 +41,12 @@
|
||||
"object": "{{P}}EXPENSE_VALIDATOR",
|
||||
"mutant": "line 61: > -> <= (rel)",
|
||||
"status": "killed",
|
||||
"hidden": "4/12",
|
||||
"hidden": "4/13",
|
||||
"failed_tests": [
|
||||
"COST_CENTER_NOT_REQUIRED",
|
||||
"COST_CENTER_REQUIRED",
|
||||
"FUTURE_DATE_REJECTED",
|
||||
"OTHER_CURRENCIES_PASS",
|
||||
"RECEIPT_NOT_REQUIRED_BELOW",
|
||||
"RECEIPT_REQUIRED",
|
||||
"RECEIPT_RULE_HAS_PRIORITY",
|
||||
@@ -55,10 +58,11 @@
|
||||
"object": "{{P}}EXPENSE_VALIDATOR",
|
||||
"mutant": "line 68: = -> <> (eq)",
|
||||
"status": "killed",
|
||||
"hidden": "6/12",
|
||||
"hidden": "6/13",
|
||||
"failed_tests": [
|
||||
"COST_CENTER_NOT_REQUIRED",
|
||||
"COST_CENTER_REQUIRED",
|
||||
"OTHER_CURRENCIES_PASS",
|
||||
"RECEIPT_REQUIRED",
|
||||
"RECEIPT_RULE_HAS_PRIORITY",
|
||||
"TODAY_IS_ACCEPTED",
|
||||
@@ -68,13 +72,15 @@
|
||||
{
|
||||
"object": "{{P}}EXPENSE_VALIDATOR",
|
||||
"mutant": "line 83: OR -> AND (logic)",
|
||||
"status": "survived",
|
||||
"hidden": "12/12",
|
||||
"failed_tests": []
|
||||
"status": "killed",
|
||||
"hidden": "12/13",
|
||||
"failed_tests": [
|
||||
"OTHER_CURRENCIES_PASS"
|
||||
]
|
||||
}
|
||||
],
|
||||
"valid": 5,
|
||||
"killed": 4,
|
||||
"kill_rate": 0.8,
|
||||
"killed": 5,
|
||||
"kill_rate": 1.0,
|
||||
"ok": true
|
||||
}
|
||||
7
tasks_gen/eval/G0022/review.json
Normal file
7
tasks_gen/eval/G0022/review.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"decision": "accept",
|
||||
"note": "Fixed: added other_currencies_pass; oracle 100, null 0, mutation 5/5.",
|
||||
"by": "Claude",
|
||||
"date": "2026-10-03",
|
||||
"failed_checks": {}
|
||||
}
|
||||
Reference in New Issue
Block a user