Stage 2 summary at 50 accepted trajectories

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Kral
2026-10-05 18:02:52 +02:00
parent 332fb4601d
commit 5bcd1bf9cd
1230 changed files with 77563 additions and 33 deletions

View File

@@ -0,0 +1,39 @@
FUNCTION {{p}}dlv_price
IMPORTING
iv_service TYPE string
iv_weight TYPE decfloat34
iv_distance TYPE decfloat34
EXPORTING
ev_skip TYPE abap_bool
CHANGING
cv_price TYPE decfloat34
EXCEPTIONS
invalid_weight.
ev_skip = abap_false.
IF iv_weight <= 0.
RAISE invalid_weight.
ENDIF.
IF iv_distance > 300.
ev_skip = abap_true.
RETURN.
ENDIF.
CASE iv_service.
WHEN 'EX'.
cv_price = round( val = 12 + iv_distance * '0.60' + iv_weight * '1.50'
dec = 2 mode = cl_abap_math=>round_half_up ).
IF cv_price < 6.
cv_price = 6.
ENDIF.
WHEN 'ST'.
cv_price = round( val = 5 + iv_distance * '0.30' + iv_weight * '0.80'
dec = 2 mode = cl_abap_math=>round_half_up ).
IF cv_price < 6.
cv_price = 6.
ENDIF.
WHEN OTHERS.
ev_skip = abap_true.
cv_price = 0.
ENDCASE.
ENDFUNCTION.

View File

@@ -0,0 +1,55 @@
CLASS {{p}}t14_test DEFINITION PUBLIC FINAL CREATE PUBLIC
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
METHODS price_for
IMPORTING iv_service TYPE string
iv_weight TYPE decfloat34
iv_distance TYPE decfloat34
RETURNING VALUE(rv_price) TYPE decfloat34.
METHODS express_price FOR TESTING.
METHODS standard_price FOR TESTING.
METHODS minimum_charge FOR TESTING.
METHODS out_of_area_skips FOR TESTING.
ENDCLASS.
CLASS {{p}}t14_test IMPLEMENTATION.
METHOD price_for.
DATA lv_skip TYPE abap_bool.
CALL FUNCTION '{{P}}DLV_PRICE'
EXPORTING iv_service = iv_service iv_weight = iv_weight iv_distance = iv_distance
IMPORTING ev_skip = lv_skip
CHANGING cv_price = rv_price
EXCEPTIONS invalid_weight = 1 OTHERS = 2.
cl_abap_unit_assert=>assert_subrc( exp = 0 ).
ENDMETHOD.
METHOD express_price.
cl_abap_unit_assert=>assert_equals(
exp = CONV decfloat34( 21 )
act = price_for( iv_service = `EX` iv_weight = 2 iv_distance = 10 ) ).
ENDMETHOD.
METHOD standard_price.
cl_abap_unit_assert=>assert_equals(
exp = CONV decfloat34( 15 )
act = price_for( iv_service = `ST` iv_weight = 5 iv_distance = 20 ) ).
ENDMETHOD.
METHOD minimum_charge.
cl_abap_unit_assert=>assert_equals(
exp = CONV decfloat34( 6 )
act = price_for( iv_service = `ST` iv_weight = '0.5' iv_distance = 1 ) ).
ENDMETHOD.
METHOD out_of_area_skips.
DATA lv_skip TYPE abap_bool.
DATA lv_price TYPE decfloat34 VALUE 7.
CALL FUNCTION '{{P}}DLV_PRICE'
EXPORTING iv_service = `EX` iv_weight = 2 iv_distance = 400
IMPORTING ev_skip = lv_skip
CHANGING cv_price = lv_price.
cl_abap_unit_assert=>assert_true( lv_skip ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 7 ) act = lv_price ).
ENDMETHOD.
ENDCLASS.