112 lines
5.3 KiB
ABAP
112 lines
5.3 KiB
ABAP
CLASS {{p}}t02_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
|
|
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
|
PRIVATE SECTION.
|
|
DATA mo_cut TYPE REF TO {{p}}if_toll_pricer.
|
|
METHODS setup.
|
|
METHODS minimum_toll FOR TESTING.
|
|
METHODS car_and_van_rate FOR TESTING.
|
|
METHODS lorry_rate FOR TESTING.
|
|
METHODS transponder_discount FOR TESTING.
|
|
METHODS discount_after_minimum FOR TESTING.
|
|
METHODS night_lorry_surcharge FOR TESTING.
|
|
METHODS night_car_no_surcharge FOR TESTING.
|
|
METHODS discount_and_night FOR TESTING.
|
|
METHODS lower_case_class FOR TESTING.
|
|
METHODS unknown_class FOR TESTING.
|
|
METHODS zero_distance FOR TESTING.
|
|
METHODS distance_too_long FOR TESTING.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS {{p}}t02_hidden IMPLEMENTATION.
|
|
METHOD setup.
|
|
mo_cut = NEW {{p}}toll_pricer( ).
|
|
ENDMETHOD.
|
|
|
|
METHOD minimum_toll.
|
|
DATA(ls_result) = mo_cut->price_journey( VALUE #( vehicle_class = 'M' distance_km = 10 ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = {{p}}if_toll_pricer=>c_reason-ok
|
|
act = ls_result-reason ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 100
|
|
act = ls_result-amount_cents ).
|
|
ENDMETHOD.
|
|
|
|
METHOD car_and_van_rate.
|
|
DATA(ls_car) = mo_cut->price_journey( VALUE #( vehicle_class = 'C' distance_km = 50 ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 500 act = ls_car-amount_cents msg = `car 50 km` ).
|
|
DATA(ls_van) = mo_cut->price_journey( VALUE #( vehicle_class = 'V' distance_km = 20 ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 360 act = ls_van-amount_cents msg = `van 20 km` ).
|
|
DATA(ls_max) = mo_cut->price_journey( VALUE #( vehicle_class = 'C' distance_km = 130 ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 1300 act = ls_max-amount_cents msg = `car 130 km` ).
|
|
ENDMETHOD.
|
|
|
|
METHOD lorry_rate.
|
|
DATA(ls_result) = mo_cut->price_journey( VALUE #( vehicle_class = 'L' distance_km = 100 ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = {{p}}if_toll_pricer=>c_reason-ok
|
|
act = ls_result-reason ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 3000 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 discount_after_minimum.
|
|
DATA(ls_result) = mo_cut->price_journey( VALUE #( vehicle_class = 'C'
|
|
distance_km = 5
|
|
has_transponder = abap_true ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 90 act = ls_result-amount_cents ).
|
|
ENDMETHOD.
|
|
|
|
METHOD night_lorry_surcharge.
|
|
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 night_car_no_surcharge.
|
|
DATA(ls_result) = mo_cut->price_journey( VALUE #( vehicle_class = 'C'
|
|
distance_km = 100
|
|
at_night = abap_true ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 1000 act = ls_result-amount_cents ).
|
|
ENDMETHOD.
|
|
|
|
METHOD discount_and_night.
|
|
DATA(ls_result) = mo_cut->price_journey( VALUE #( vehicle_class = 'L'
|
|
distance_km = 100
|
|
has_transponder = abap_true
|
|
at_night = abap_true ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 3375 act = ls_result-amount_cents ).
|
|
ENDMETHOD.
|
|
|
|
METHOD lower_case_class.
|
|
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 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 zero_distance.
|
|
DATA(ls_result) = mo_cut->price_journey( VALUE #( vehicle_class = 'C' distance_km = 0 ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = {{p}}if_toll_pricer=>c_reason-distance
|
|
act = ls_result-reason ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = ls_result-amount_cents ).
|
|
ENDMETHOD.
|
|
|
|
METHOD distance_too_long.
|
|
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 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = ls_result-amount_cents ).
|
|
ENDMETHOD.
|
|
ENDCLASS.
|