Files
abap-llm/tasks_gen/train/G1063/hidden/t02_hidden.clas.abap
2026-10-05 18:02:52 +02:00

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.