- 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>
88 lines
3.8 KiB
ABAP
88 lines
3.8 KiB
ABAP
CLASS {{p}}lcl_rent_test DEFINITION FOR TESTING
|
|
DURATION SHORT RISK LEVEL HARMLESS FINAL.
|
|
|
|
PRIVATE SECTION.
|
|
METHODS price_for
|
|
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
|
|
RETURNING VALUE(rs_result) TYPE {{p}}cl_rent=>ty_result.
|
|
|
|
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_input FOR TESTING.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS {{p}}lcl_rent_test IMPLEMENTATION.
|
|
METHOD price_for.
|
|
DATA(ls_request) = VALUE {{p}}cl_rent=>ty_request(
|
|
vehicle_class = iv_class
|
|
minutes = iv_minutes
|
|
km = iv_km
|
|
member = iv_member
|
|
weekend = iv_weekend ).
|
|
rs_result = {{p}}cl_rent=>calculate( ls_request ).
|
|
ENDMETHOD.
|
|
|
|
METHOD time_fee_blocks.
|
|
DATA(ls_15) = price_for( iv_class = `S` iv_minutes = 15 iv_km = 0 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 3 ) act = ls_15-time_fee ).
|
|
|
|
DATA(ls_16) = price_for( iv_class = `S` iv_minutes = 16 iv_km = 0 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 6 ) act = ls_16-time_fee ).
|
|
|
|
DATA(ls_61) = price_for( iv_class = `L` iv_minutes = 61 iv_km = 0 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 40 ) act = ls_61-time_fee ).
|
|
ENDMETHOD.
|
|
|
|
METHOD distance_fee_free_km.
|
|
DATA(ls_free) = price_for( iv_class = `L` iv_minutes = 60 iv_km = 10 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 0 ) act = ls_free-distance_fee ).
|
|
|
|
DATA(ls_paid) = price_for( iv_class = `L` iv_minutes = 60 iv_km = 14 ).
|
|
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.
|
|
DATA(ls) = price_for( iv_class = `M` iv_minutes = 30 iv_km = 0 iv_weekend = abap_true ).
|
|
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 member_discount.
|
|
DATA(ls_half) = price_for( iv_class = `M` iv_minutes = 15 iv_km = 11
|
|
iv_weekend = abap_true iv_member = abap_true ).
|
|
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 ).
|
|
|
|
DATA(ls_up) = price_for( iv_class = `S` iv_minutes = 15 iv_km = 28 iv_member = abap_true ).
|
|
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.
|
|
DATA(ls) = price_for( iv_class = `S` iv_minutes = 15 iv_km = 0 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 3 ) act = ls-time_fee ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 5 ) act = ls-total ).
|
|
ENDMETHOD.
|
|
|
|
METHOD invalid_input.
|
|
cl_abap_unit_assert=>assert_equals(
|
|
exp = {{p}}cl_rent=>c_err-duration
|
|
act = price_for( iv_class = `S` iv_minutes = 0 iv_km = 0 )-err_code ).
|
|
cl_abap_unit_assert=>assert_equals(
|
|
exp = {{p}}cl_rent=>c_err-distance
|
|
act = price_for( iv_class = `S` iv_minutes = 15 iv_km = -1 )-err_code ).
|
|
cl_abap_unit_assert=>assert_equals(
|
|
exp = {{p}}cl_rent=>c_err-bad_class
|
|
act = price_for( iv_class = `X` iv_minutes = 15 iv_km = 0 )-err_code ).
|
|
ENDMETHOD.
|
|
ENDCLASS.
|