57 lines
2.3 KiB
ABAP
57 lines
2.3 KiB
ABAP
CLASS ltc_toll_pricer DEFINITION FINAL FOR TESTING
|
|
DURATION SHORT RISK LEVEL HARMLESS.
|
|
PRIVATE SECTION.
|
|
DATA mo_cut TYPE REF TO {{p}}if_toll_pricer.
|
|
METHODS setup.
|
|
METHODS car_toll FOR TESTING.
|
|
METHODS minimum_toll FOR TESTING.
|
|
METHODS transponder_discount FOR TESTING.
|
|
METHODS night_lorry FOR TESTING.
|
|
METHODS unknown_class FOR TESTING.
|
|
METHODS distance_out_of_range FOR TESTING.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS ltc_toll_pricer IMPLEMENTATION.
|
|
METHOD setup.
|
|
mo_cut = NEW {{p}}toll_pricer( ).
|
|
ENDMETHOD.
|
|
|
|
METHOD car_toll.
|
|
DATA(ls_result) = mo_cut->price_journey( VALUE #( vehicle_class = 'C' distance_km = 50 ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 500 act = ls_result-amount_cents ).
|
|
ENDMETHOD.
|
|
|
|
METHOD minimum_toll.
|
|
DATA(ls_result) = mo_cut->price_journey( VALUE #( vehicle_class = 'M' distance_km = 5 ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 100 act = ls_result-amount_cents ).
|
|
ENDMETHOD.
|
|
|
|
METHOD transponder_discount.
|
|
DATA(ls_result) = mo_cut->price_journey( VALUE #( vehicle_class = 'C'
|
|
distance_km = 100
|
|
has_transponder = abap_true ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 900 act = ls_result-amount_cents ).
|
|
ENDMETHOD.
|
|
|
|
METHOD night_lorry.
|
|
DATA(ls_result) = mo_cut->price_journey( VALUE #( vehicle_class = 'L'
|
|
distance_km = 100
|
|
at_night = abap_true ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 3750 act = ls_result-amount_cents ).
|
|
ENDMETHOD.
|
|
|
|
METHOD unknown_class.
|
|
DATA(ls_result) = mo_cut->price_journey( VALUE #( vehicle_class = 'X' distance_km = 50 ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = {{p}}if_toll_pricer=>c_reason-vehicle
|
|
act = ls_result-reason ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = ls_result-amount_cents ).
|
|
ENDMETHOD.
|
|
|
|
METHOD distance_out_of_range.
|
|
DATA(ls_result) = mo_cut->price_journey( VALUE #( vehicle_class = 'C' distance_km = 131 ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = {{p}}if_toll_pricer=>c_reason-distance
|
|
act = ls_result-reason ).
|
|
ENDMETHOD.
|
|
ENDCLASS.
|