Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014aUaQeLnwbb1zTpN7kHeat
91 lines
3.2 KiB
ABAP
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.
|