Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014aUaQeLnwbb1zTpN7kHeat
130 lines
5.6 KiB
ABAP
130 lines
5.6 KiB
ABAP
CLASS {{p}}track_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
|
|
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
|
|
|
PRIVATE SECTION.
|
|
TYPES ty_paths TYPE {{P}}TRACK_TYPES=>tt_path.
|
|
TYPES ty_fees TYPE {{P}}TRACK_TYPES=>tt_fee.
|
|
TYPES ty_km TYPE {{P}}TRACK_TYPES=>ty_km.
|
|
TYPES ty_money TYPE {{P}}TRACK_TYPES=>ty_money.
|
|
|
|
METHODS call_fm
|
|
IMPORTING it_paths TYPE ty_paths
|
|
EXPORTING et_fees TYPE ty_fees
|
|
ev_subrc TYPE sysubrc.
|
|
|
|
METHODS one_path_one_row FOR TESTING.
|
|
METHODS groups_and_sorts FOR TESTING.
|
|
METHODS night_surcharge FOR TESTING.
|
|
METHODS minimum_fee FOR TESTING.
|
|
METHODS rounds_up FOR TESTING.
|
|
METHODS invalid_distance FOR TESTING.
|
|
METHODS invalid_category FOR TESTING.
|
|
METHODS empty_input FOR TESTING.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS {{p}}track_hidden IMPLEMENTATION.
|
|
|
|
METHOD call_fm.
|
|
CALL FUNCTION '{{P}}TRACK_FEE'
|
|
EXPORTING
|
|
it_paths = it_paths
|
|
IMPORTING
|
|
et_fees = et_fees
|
|
EXCEPTIONS
|
|
invalid_distance = 1
|
|
invalid_category = 2
|
|
OTHERS = 3.
|
|
ev_subrc = sy-subrc.
|
|
ENDMETHOD.
|
|
|
|
METHOD one_path_one_row.
|
|
DATA lt_paths TYPE ty_paths.
|
|
lt_paths = VALUE #( ( path_id = '00000001' train_cat = 'IC' distance_km = '100.00' night_flag = '' ) ).
|
|
call_fm( EXPORTING it_paths = lt_paths
|
|
IMPORTING et_fees = DATA(lt_fees) ev_subrc = DATA(lv_rc) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rc ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_fees ) ).
|
|
DATA(ls_fee) = lt_fees[ 1 ].
|
|
cl_abap_unit_assert=>assert_equals( exp = 'IC' act = ls_fee-train_cat ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = ls_fee-path_count ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV ty_km( '100.00' ) act = ls_fee-total_km ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV ty_money( '120.00' ) act = ls_fee-total_fee ).
|
|
ENDMETHOD.
|
|
|
|
METHOD groups_and_sorts.
|
|
DATA lt_paths TYPE ty_paths.
|
|
lt_paths = VALUE #( ( path_id = '00000001' train_cat = 'IC' distance_km = '100.00' night_flag = '' )
|
|
( path_id = '00000002' train_cat = 'FR' distance_km = '100.00' night_flag = '' )
|
|
( path_id = '00000003' train_cat = 'IC' distance_km = '50.00' night_flag = '' ) ).
|
|
call_fm( EXPORTING it_paths = lt_paths
|
|
IMPORTING et_fees = DATA(lt_fees) ev_subrc = DATA(lv_rc) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rc ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 2 act = lines( lt_fees ) ).
|
|
DATA(ls_first) = lt_fees[ 1 ].
|
|
DATA(ls_last) = lt_fees[ 2 ].
|
|
cl_abap_unit_assert=>assert_equals( exp = 'FR' act = ls_first-train_cat ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = ls_first-path_count ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV ty_money( '60.00' ) act = ls_first-total_fee ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'IC' act = ls_last-train_cat ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 2 act = ls_last-path_count ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV ty_km( '150.00' ) act = ls_last-total_km ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV ty_money( '180.00' ) act = ls_last-total_fee ).
|
|
ENDMETHOD.
|
|
|
|
METHOD night_surcharge.
|
|
DATA lt_paths TYPE ty_paths.
|
|
lt_paths = VALUE #( ( path_id = '00000001' train_cat = 'RG' distance_km = '100.00' night_flag = 'X' ) ).
|
|
call_fm( EXPORTING it_paths = lt_paths
|
|
IMPORTING et_fees = DATA(lt_fees) ev_subrc = DATA(lv_rc) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rc ).
|
|
DATA(ls_fee) = lt_fees[ 1 ].
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV ty_money( '108.00' ) act = ls_fee-total_fee ).
|
|
ENDMETHOD.
|
|
|
|
METHOD minimum_fee.
|
|
DATA lt_paths TYPE ty_paths.
|
|
lt_paths = VALUE #( ( path_id = '00000001' train_cat = 'FR' distance_km = '2.00' night_flag = '' ) ).
|
|
call_fm( EXPORTING it_paths = lt_paths
|
|
IMPORTING et_fees = DATA(lt_fees) ev_subrc = DATA(lv_rc) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rc ).
|
|
DATA(ls_fee) = lt_fees[ 1 ].
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV ty_money( '5.00' ) act = ls_fee-total_fee ).
|
|
ENDMETHOD.
|
|
|
|
METHOD rounds_up.
|
|
DATA lt_paths TYPE ty_paths.
|
|
lt_paths = VALUE #( ( path_id = '00000001' train_cat = 'FR' distance_km = '10.01' night_flag = '' ) ).
|
|
call_fm( EXPORTING it_paths = lt_paths
|
|
IMPORTING et_fees = DATA(lt_fees) ev_subrc = DATA(lv_rc) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rc ).
|
|
DATA(ls_fee) = lt_fees[ 1 ].
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV ty_money( '6.01' ) act = ls_fee-total_fee ).
|
|
ENDMETHOD.
|
|
|
|
METHOD invalid_distance.
|
|
DATA lt_paths TYPE ty_paths.
|
|
lt_paths = VALUE #( ( path_id = '00000001' train_cat = 'IC' distance_km = '0.00' night_flag = '' ) ).
|
|
call_fm( EXPORTING it_paths = lt_paths
|
|
IMPORTING et_fees = DATA(lt_fees) ev_subrc = DATA(lv_rc) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_rc ).
|
|
ENDMETHOD.
|
|
|
|
METHOD invalid_category.
|
|
DATA lt_paths TYPE ty_paths.
|
|
lt_paths = VALUE #( ( path_id = '00000001' train_cat = 'XX' distance_km = '10.00' night_flag = '' ) ).
|
|
call_fm( EXPORTING it_paths = lt_paths
|
|
IMPORTING et_fees = DATA(lt_fees) ev_subrc = DATA(lv_rc) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 2 act = lv_rc ).
|
|
ENDMETHOD.
|
|
|
|
METHOD empty_input.
|
|
DATA lt_paths TYPE ty_paths.
|
|
call_fm( EXPORTING it_paths = lt_paths
|
|
IMPORTING et_fees = DATA(lt_fees) ev_subrc = DATA(lv_rc) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rc ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lines( lt_fees ) ).
|
|
ENDMETHOD.
|
|
|
|
ENDCLASS.
|