Files
abap-llm/tasks_gen/eval/G0026/reference/t14_test.clas.abap
Kral 32f03fcad4 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>
2026-10-03 05:16:30 +02:00

91 lines
3.2 KiB
ABAP

CLASS {{p}}t14_test 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 member_discount FOR TESTING.
METHODS minimum_total FOR TESTING.
METHODS invalid_duration FOR TESTING.
ENDCLASS.
CLASS {{p}}t14_test 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 = 16 iv_km = 0
IMPORTING es_result = DATA(ls) ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 6 ) act = ls-time_fee ).
ENDMETHOD.
METHOD distance_fee_free_km.
price( EXPORTING iv_class = `L` iv_minutes = 60 iv_km = 14
IMPORTING es_result = DATA(ls) ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 1 ) act = ls-distance_fee ).
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 ).
ENDMETHOD.
METHOD member_discount.
price( EXPORTING iv_class = `S` iv_minutes = 15 iv_km = 28 iv_member = abap_true
IMPORTING es_result = DATA(ls) ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '1.13' ) act = ls-discount ).
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( 5 ) act = ls-total ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 3 ) act = ls-time_fee ).
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.
ENDCLASS.