Hard batch G0022-G0026: 5/5 accepted; budget floor, CDS checks, mutation check
- generator: budget floor (2x oracle activations, 3x calls), static checks for CDS $parameters and UNION annotation - harness/mutation.py: deterministic mutants of the reference; hidden tests must fail - G0022 revalidated with harness fixes: oracle 100, null 0 - results in docs/faz1-tasarim.md 11f Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
149
tasks_gen/eval/G0026/hidden/t14_hidden.clas.abap
Normal file
149
tasks_gen/eval/G0026/hidden/t14_hidden.clas.abap
Normal file
@@ -0,0 +1,149 @@
|
||||
CLASS {{p}}t14_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
|
||||
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
||||
PRIVATE SECTION.
|
||||
TYPES: BEGIN OF ty_result,
|
||||
time_fee TYPE decfloat34,
|
||||
distance_fee TYPE decfloat34,
|
||||
surcharge TYPE decfloat34,
|
||||
discount TYPE decfloat34,
|
||||
total TYPE decfloat34,
|
||||
END OF ty_result.
|
||||
|
||||
METHODS price
|
||||
IMPORTING iv_class TYPE string
|
||||
iv_minutes TYPE i
|
||||
iv_km TYPE i
|
||||
iv_member TYPE abap_bool DEFAULT abap_false
|
||||
iv_weekend TYPE abap_bool DEFAULT abap_false
|
||||
EXPORTING es_result TYPE ty_result
|
||||
ev_subrc TYPE sysubrc.
|
||||
|
||||
METHODS time_fee_blocks FOR TESTING.
|
||||
METHODS distance_fee_free_km FOR TESTING.
|
||||
METHODS weekend_surcharge FOR TESTING.
|
||||
METHODS weekday_no_surcharge FOR TESTING.
|
||||
METHODS member_discount FOR TESTING.
|
||||
METHODS minimum_total FOR TESTING.
|
||||
METHODS minimum_total_member FOR TESTING.
|
||||
METHODS invalid_duration FOR TESTING.
|
||||
METHODS invalid_distance FOR TESTING.
|
||||
METHODS invalid_class FOR TESTING.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}t14_hidden IMPLEMENTATION.
|
||||
METHOD price.
|
||||
CLEAR es_result.
|
||||
CALL FUNCTION '{{P}}RENT_PRICE'
|
||||
EXPORTING
|
||||
iv_vehicle_class = iv_class
|
||||
iv_minutes = iv_minutes
|
||||
iv_km = iv_km
|
||||
iv_member = iv_member
|
||||
iv_weekend = iv_weekend
|
||||
IMPORTING
|
||||
ev_time_fee = es_result-time_fee
|
||||
ev_distance_fee = es_result-distance_fee
|
||||
ev_surcharge = es_result-surcharge
|
||||
ev_discount = es_result-discount
|
||||
ev_total = es_result-total
|
||||
EXCEPTIONS
|
||||
invalid_duration = 1
|
||||
invalid_distance = 2
|
||||
invalid_class = 3
|
||||
OTHERS = 4.
|
||||
ev_subrc = sy-subrc.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD time_fee_blocks.
|
||||
price( EXPORTING iv_class = `S` iv_minutes = 15 iv_km = 0
|
||||
IMPORTING es_result = DATA(ls_15) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 3 ) act = ls_15-time_fee ).
|
||||
|
||||
price( EXPORTING iv_class = `S` iv_minutes = 16 iv_km = 0
|
||||
IMPORTING es_result = DATA(ls_16) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 6 ) act = ls_16-time_fee ).
|
||||
|
||||
price( EXPORTING iv_class = `L` iv_minutes = 61 iv_km = 0
|
||||
IMPORTING es_result = DATA(ls_61) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 40 ) act = ls_61-time_fee ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD distance_fee_free_km.
|
||||
price( EXPORTING iv_class = `L` iv_minutes = 60 iv_km = 10
|
||||
IMPORTING es_result = DATA(ls_free) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 0 ) act = ls_free-distance_fee ).
|
||||
|
||||
price( EXPORTING iv_class = `L` iv_minutes = 60 iv_km = 14
|
||||
IMPORTING es_result = DATA(ls_paid) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 1 ) act = ls_paid-distance_fee ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 33 ) act = ls_paid-total ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD weekend_surcharge.
|
||||
price( EXPORTING iv_class = `M` iv_minutes = 30 iv_km = 0 iv_weekend = abap_true
|
||||
IMPORTING es_result = DATA(ls) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '2.50' ) act = ls-surcharge ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '12.50' ) act = ls-total ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD weekday_no_surcharge.
|
||||
price( EXPORTING iv_class = `M` iv_minutes = 30 iv_km = 0
|
||||
IMPORTING es_result = DATA(ls) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 0 ) act = ls-surcharge ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD member_discount.
|
||||
" 6.50 * 15 % = 0.975 -> 0.98
|
||||
price( EXPORTING iv_class = `M` iv_minutes = 15 iv_km = 11
|
||||
iv_weekend = abap_true iv_member = abap_true
|
||||
IMPORTING es_result = DATA(ls_half) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '0.98' ) act = ls_half-discount ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '5.52' ) act = ls_half-total ).
|
||||
|
||||
" 10.75 * 15 % = 1.6125 -> 1.61
|
||||
price( EXPORTING iv_class = `M` iv_minutes = 30 iv_km = 13 iv_member = abap_true
|
||||
IMPORTING es_result = DATA(ls_round) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '1.61' ) act = ls_round-discount ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '9.14' ) act = ls_round-total ).
|
||||
|
||||
" 7.50 * 15 % = 1.125 -> 1.13
|
||||
price( EXPORTING iv_class = `S` iv_minutes = 15 iv_km = 28 iv_member = abap_true
|
||||
IMPORTING es_result = DATA(ls_up) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '1.13' ) act = ls_up-discount ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '6.37' ) act = ls_up-total ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD minimum_total.
|
||||
price( EXPORTING iv_class = `S` iv_minutes = 15 iv_km = 0
|
||||
IMPORTING es_result = DATA(ls) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 3 ) act = ls-time_fee ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 0 ) act = ls-discount ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 5 ) act = ls-total ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD minimum_total_member.
|
||||
price( EXPORTING iv_class = `S` iv_minutes = 15 iv_km = 0 iv_member = abap_true
|
||||
IMPORTING es_result = DATA(ls) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '0.45' ) act = ls-discount ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 5 ) act = ls-total ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD invalid_duration.
|
||||
price( EXPORTING iv_class = `S` iv_minutes = 0 iv_km = 0
|
||||
IMPORTING ev_subrc = DATA(lv_subrc) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_subrc ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD invalid_distance.
|
||||
price( EXPORTING iv_class = `S` iv_minutes = 15 iv_km = -1
|
||||
IMPORTING ev_subrc = DATA(lv_subrc) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = 2 act = lv_subrc ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD invalid_class.
|
||||
price( EXPORTING iv_class = `X` iv_minutes = 15 iv_km = 0
|
||||
IMPORTING ev_subrc = DATA(lv_subrc) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = 3 act = lv_subrc ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
Reference in New Issue
Block a user