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

89 lines
2.9 KiB
ABAP

CLASS {{p}}snow_fee_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
DATA mo_cut TYPE REF TO {{p}}snow_fee.
METHODS setup.
METHODS assert_fee
IMPORTING iv_area TYPE {{p}}snow_fee=>ty_area
iv_priority TYPE {{p}}snow_fee=>ty_priority
iv_distance TYPE {{p}}snow_fee=>ty_distance
iv_expected TYPE {{p}}snow_fee=>ty_fee.
METHODS minimum_charge FOR TESTING.
METHODS small_area_rate FOR TESTING.
METHODS medium_area_rate FOR TESTING.
METHODS medium_area_upper FOR TESTING.
METHODS large_area_rate FOR TESTING.
METHODS express_surcharge FOR TESTING.
METHODS emergency_surcharge FOR TESTING.
METHODS unknown_priority FOR TESTING.
METHODS minimum_with_express FOR TESTING.
METHODS travel_charged FOR TESTING.
METHODS travel_not_surcharged FOR TESTING.
METHODS zero_area_returns_zero FOR TESTING.
ENDCLASS.
CLASS {{p}}snow_fee_hidden IMPLEMENTATION.
METHOD setup.
mo_cut = NEW {{p}}snow_fee( ).
ENDMETHOD.
METHOD assert_fee.
cl_abap_unit_assert=>assert_equals(
exp = iv_expected
act = mo_cut->calculate( iv_area = iv_area
iv_priority = iv_priority
iv_distance = iv_distance ) ).
ENDMETHOD.
METHOD minimum_charge.
assert_fee( iv_area = 100 iv_priority = 'S' iv_distance = 0 iv_expected = '45.00' ).
ENDMETHOD.
METHOD small_area_rate.
assert_fee( iv_area = 500 iv_priority = 'S' iv_distance = 0 iv_expected = '100.00' ).
ENDMETHOD.
METHOD medium_area_rate.
assert_fee( iv_area = 625 iv_priority = 'S' iv_distance = 0 iv_expected = '100.00' ).
ENDMETHOD.
METHOD medium_area_upper.
assert_fee( iv_area = 2000 iv_priority = 'S' iv_distance = 0 iv_expected = '320.00' ).
ENDMETHOD.
METHOD large_area_rate.
assert_fee( iv_area = 2500 iv_priority = 'S' iv_distance = 0 iv_expected = '300.00' ).
ENDMETHOD.
METHOD express_surcharge.
assert_fee( iv_area = 1000 iv_priority = 'E' iv_distance = 0 iv_expected = '200.00' ).
ENDMETHOD.
METHOD emergency_surcharge.
assert_fee( iv_area = 1000 iv_priority = 'X' iv_distance = 0 iv_expected = '240.00' ).
ENDMETHOD.
METHOD unknown_priority.
assert_fee( iv_area = 1000 iv_priority = 'Z' iv_distance = 0 iv_expected = '160.00' ).
ENDMETHOD.
METHOD minimum_with_express.
assert_fee( iv_area = 100 iv_priority = 'E' iv_distance = 0 iv_expected = '56.25' ).
ENDMETHOD.
METHOD travel_charged.
assert_fee( iv_area = 1000 iv_priority = 'S' iv_distance = 30 iv_expected = '168.00' ).
ENDMETHOD.
METHOD travel_not_surcharged.
assert_fee( iv_area = 1000 iv_priority = 'E' iv_distance = 30 iv_expected = '208.00' ).
ENDMETHOD.
METHOD zero_area_returns_zero.
assert_fee( iv_area = 0 iv_priority = 'X' iv_distance = 30 iv_expected = '0.00' ).
ENDMETHOD.
ENDCLASS.