89 lines
2.9 KiB
ABAP
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.
|