Mutation check done on all accepted tasks; mutant fixes; dump filter in proxy
- skip sy-subrc lines and CDS type lengths; CDS literal mutants; mutate helper classes - proxy: sap_short_dumps shows only dumps of the current run - 26/26 tasks pass; results in docs/faz1-tasarim.md 11g Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014aUaQeLnwbb1zTpN7kHeat
This commit is contained in:
158
tasks_gen/eval/G0026/faulty/m3_cl_rent.clas.abap
Normal file
158
tasks_gen/eval/G0026/faulty/m3_cl_rent.clas.abap
Normal file
@@ -0,0 +1,158 @@
|
||||
CLASS {{p}}cl_rent DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
TYPES ty_class TYPE string.
|
||||
TYPES ty_money TYPE decfloat34.
|
||||
TYPES ty_err_code TYPE c LENGTH 1.
|
||||
|
||||
CONSTANTS: BEGIN OF c_err,
|
||||
ok TYPE ty_err_code VALUE ' ',
|
||||
duration TYPE ty_err_code VALUE 'D',
|
||||
distance TYPE ty_err_code VALUE 'K',
|
||||
bad_class TYPE ty_err_code VALUE 'C',
|
||||
END OF c_err.
|
||||
|
||||
TYPES: BEGIN OF ty_request,
|
||||
vehicle_class TYPE ty_class,
|
||||
minutes TYPE i,
|
||||
km TYPE i,
|
||||
member TYPE abap_bool,
|
||||
weekend TYPE abap_bool,
|
||||
END OF ty_request.
|
||||
|
||||
TYPES: BEGIN OF ty_result,
|
||||
err_code TYPE ty_err_code,
|
||||
time_fee TYPE ty_money,
|
||||
distance_fee TYPE ty_money,
|
||||
surcharge TYPE ty_money,
|
||||
discount TYPE ty_money,
|
||||
total TYPE ty_money,
|
||||
END OF ty_result.
|
||||
|
||||
CLASS-METHODS calculate
|
||||
IMPORTING is_request TYPE ty_request
|
||||
RETURNING VALUE(rs_result) TYPE ty_result.
|
||||
|
||||
PRIVATE SECTION.
|
||||
CONSTANTS: BEGIN OF c_block_price,
|
||||
small TYPE ty_money VALUE '3.00',
|
||||
medium TYPE ty_money VALUE '5.00',
|
||||
large TYPE ty_money VALUE '8.00',
|
||||
END OF c_block_price.
|
||||
CONSTANTS c_block_minutes TYPE i VALUE 15.
|
||||
CONSTANTS c_free_km TYPE i VALUE 10.
|
||||
CONSTANTS c_km_price TYPE ty_money VALUE '0.25'.
|
||||
CONSTANTS c_weekend_share TYPE ty_money VALUE '0.25'.
|
||||
CONSTANTS c_member_share TYPE ty_money VALUE '0.15'.
|
||||
CONSTANTS c_min_total TYPE ty_money VALUE '5.00'.
|
||||
CONSTANTS c_decimals TYPE i VALUE 2.
|
||||
|
||||
CLASS-METHODS validate
|
||||
IMPORTING is_request TYPE ty_request
|
||||
RETURNING VALUE(rv_err_code) TYPE ty_err_code.
|
||||
|
||||
CLASS-METHODS time_fee
|
||||
IMPORTING is_request TYPE ty_request
|
||||
RETURNING VALUE(rv_fee) TYPE ty_money.
|
||||
|
||||
CLASS-METHODS distance_fee
|
||||
IMPORTING is_request TYPE ty_request
|
||||
RETURNING VALUE(rv_fee) TYPE ty_money.
|
||||
|
||||
CLASS-METHODS block_price
|
||||
IMPORTING is_request TYPE ty_request
|
||||
RETURNING VALUE(rv_price) TYPE ty_money.
|
||||
|
||||
CLASS-METHODS block_count
|
||||
IMPORTING iv_minutes TYPE i
|
||||
RETURNING VALUE(rv_blocks) TYPE i.
|
||||
|
||||
CLASS-METHODS round_money
|
||||
IMPORTING iv_value TYPE ty_money
|
||||
RETURNING VALUE(rv_value) TYPE ty_money.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}cl_rent IMPLEMENTATION.
|
||||
METHOD calculate.
|
||||
rs_result-err_code = validate( is_request ).
|
||||
IF rs_result-err_code <> c_err-ok.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
rs_result-time_fee = time_fee( is_request ).
|
||||
rs_result-distance_fee = distance_fee( is_request ).
|
||||
|
||||
IF is_request-weekend = abap_true.
|
||||
rs_result-surcharge = round_money( rs_result-time_fee * c_weekend_share ).
|
||||
ELSE.
|
||||
rs_result-surcharge = 0.
|
||||
ENDIF.
|
||||
|
||||
DATA(lv_gross) = rs_result-time_fee + rs_result-distance_fee + rs_result-surcharge.
|
||||
|
||||
IF is_request-member = abap_true.
|
||||
rs_result-discount = round_money( lv_gross * c_member_share ).
|
||||
ELSE.
|
||||
rs_result-discount = 0.
|
||||
ENDIF.
|
||||
|
||||
rs_result-total = round_money( lv_gross - rs_result-discount ).
|
||||
IF rs_result-total < c_min_total.
|
||||
rs_result-total = c_min_total.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD validate.
|
||||
IF is_request-minutes < 1.
|
||||
rv_err_code = c_err-duration.
|
||||
ELSEIF is_request-km < 0.
|
||||
rv_err_code = c_err-distance.
|
||||
ELSEIF is_request-vehicle_class <> 'S'
|
||||
AND is_request-vehicle_class <> 'M'
|
||||
AND is_request-vehicle_class <> 'L'.
|
||||
rv_err_code = c_err-bad_class.
|
||||
ELSE.
|
||||
rv_err_code = c_err-ok.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD time_fee.
|
||||
rv_fee = block_count( is_request-minutes ) / block_price( is_request ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD distance_fee.
|
||||
DATA(lv_chargeable_km) = is_request-km - c_free_km.
|
||||
IF lv_chargeable_km > 0.
|
||||
rv_fee = lv_chargeable_km * c_km_price.
|
||||
ELSE.
|
||||
rv_fee = 0.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD block_price.
|
||||
CASE is_request-vehicle_class.
|
||||
WHEN 'S'.
|
||||
rv_price = c_block_price-small.
|
||||
WHEN 'M'.
|
||||
rv_price = c_block_price-medium.
|
||||
WHEN 'L'.
|
||||
rv_price = c_block_price-large.
|
||||
WHEN OTHERS.
|
||||
rv_price = 0.
|
||||
ENDCASE.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD block_count.
|
||||
rv_blocks = ( iv_minutes + c_block_minutes - 1 ) DIV c_block_minutes.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD round_money.
|
||||
rv_value = round( val = iv_value
|
||||
dec = c_decimals
|
||||
mode = cl_abap_math=>round_half_up ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
Reference in New Issue
Block a user