58 lines
1.8 KiB
ABAP
58 lines
1.8 KiB
ABAP
CLASS ltc_snow_fee DEFINITION FINAL 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 express_surcharge FOR TESTING.
|
|
METHODS travel_charged FOR TESTING.
|
|
METHODS zero_area_returns_zero FOR TESTING.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS ltc_snow_fee 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 express_surcharge.
|
|
assert_fee( iv_area = 1000 iv_priority = 'E' iv_distance = 0 iv_expected = '200.00' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD travel_charged.
|
|
assert_fee( iv_area = 1000 iv_priority = 'S' iv_distance = 30 iv_expected = '168.00' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD zero_area_returns_zero.
|
|
assert_fee( iv_area = 0 iv_priority = 'X' iv_distance = 30 iv_expected = '0.00' ).
|
|
ENDMETHOD.
|
|
ENDCLASS.
|