142 lines
5.8 KiB
ABAP
142 lines
5.8 KiB
ABAP
CLASS {{p}}pest_test_hidden DEFINITION
|
|
PUBLIC
|
|
FINAL
|
|
CREATE PUBLIC
|
|
FOR TESTING
|
|
DURATION SHORT
|
|
RISK LEVEL HARMLESS.
|
|
|
|
PRIVATE SECTION.
|
|
DATA mo_cut TYPE REF TO {{p}}pest_fee.
|
|
|
|
METHODS setup.
|
|
METHODS expect_fee
|
|
IMPORTING iv_expected TYPE {{p}}pest_fee=>ty_fee
|
|
iv_actual TYPE {{p}}pest_fee=>ty_fee
|
|
iv_case TYPE string.
|
|
|
|
METHODS rats_base_fee FOR TESTING.
|
|
METHODS mice_base_fee FOR TESTING.
|
|
METHODS wasp_base_fee FOR TESTING.
|
|
METHODS unknown_pest_zero FOR TESTING.
|
|
METHODS area_surcharge_step FOR TESTING.
|
|
METHODS area_surcharge_rounds FOR TESTING.
|
|
METHODS no_surcharge_at_100 FOR TESTING.
|
|
METHODS urgent_surcharge FOR TESTING.
|
|
METHODS contract_discount FOR TESTING.
|
|
METHODS discount_excludes_urgent FOR TESTING.
|
|
METHODS minimum_fee FOR TESTING.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS {{p}}pest_test_hidden IMPLEMENTATION.
|
|
METHOD setup.
|
|
mo_cut = NEW {{p}}pest_fee( ).
|
|
ENDMETHOD.
|
|
|
|
METHOD expect_fee.
|
|
cl_abap_unit_assert=>assert_equals( exp = iv_expected
|
|
act = iv_actual
|
|
msg = iv_case ).
|
|
ENDMETHOD.
|
|
|
|
METHOD rats_base_fee.
|
|
expect_fee( iv_expected = 120
|
|
iv_actual = mo_cut->calculate_fee( iv_pest_type = 'RATS'
|
|
iv_area = 50
|
|
iv_urgent = abap_false
|
|
iv_contract = abap_false )
|
|
iv_case = 'RATS base fee' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD mice_base_fee.
|
|
expect_fee( iv_expected = 55
|
|
iv_actual = mo_cut->calculate_fee( iv_pest_type = 'MICE'
|
|
iv_area = 0
|
|
iv_urgent = abap_false
|
|
iv_contract = abap_false )
|
|
iv_case = 'MICE base fee' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD wasp_base_fee.
|
|
expect_fee( iv_expected = 150
|
|
iv_actual = mo_cut->calculate_fee( iv_pest_type = 'WASP'
|
|
iv_area = 100
|
|
iv_urgent = abap_false
|
|
iv_contract = abap_false )
|
|
iv_case = 'WASP base fee' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD unknown_pest_zero.
|
|
expect_fee( iv_expected = 0
|
|
iv_actual = mo_cut->calculate_fee( iv_pest_type = 'BIRD'
|
|
iv_area = 300
|
|
iv_urgent = abap_true
|
|
iv_contract = abap_true )
|
|
iv_case = 'unknown pest type' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD area_surcharge_step.
|
|
expect_fee( iv_expected = 135
|
|
iv_actual = mo_cut->calculate_fee( iv_pest_type = 'RATS'
|
|
iv_area = 101
|
|
iv_urgent = abap_false
|
|
iv_contract = abap_false )
|
|
iv_case = 'one started area step' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD area_surcharge_rounds.
|
|
expect_fee( iv_expected = 165
|
|
iv_actual = mo_cut->calculate_fee( iv_pest_type = 'RATS'
|
|
iv_area = 250
|
|
iv_urgent = abap_false
|
|
iv_contract = abap_false )
|
|
iv_case = 'three started area steps' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD no_surcharge_at_100.
|
|
expect_fee( iv_expected = 80
|
|
iv_actual = mo_cut->calculate_fee( iv_pest_type = 'ANTS'
|
|
iv_area = 100
|
|
iv_urgent = abap_false
|
|
iv_contract = abap_false )
|
|
iv_case = 'no area surcharge at 100' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD urgent_surcharge.
|
|
expect_fee( iv_expected = 125
|
|
iv_actual = mo_cut->calculate_fee( iv_pest_type = 'ANTS'
|
|
iv_area = 100
|
|
iv_urgent = abap_true
|
|
iv_contract = abap_false )
|
|
iv_case = 'urgent surcharge' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD contract_discount.
|
|
expect_fee( iv_expected = 135
|
|
iv_actual = mo_cut->calculate_fee( iv_pest_type = 'RATS'
|
|
iv_area = 200
|
|
iv_urgent = abap_false
|
|
iv_contract = abap_true )
|
|
iv_case = 'contract discount' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD discount_excludes_urgent.
|
|
expect_fee( iv_expected = 153
|
|
iv_actual = mo_cut->calculate_fee( iv_pest_type = 'RATS'
|
|
iv_area = 0
|
|
iv_urgent = abap_true
|
|
iv_contract = abap_true )
|
|
iv_case = 'discount without urgent surcharge' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD minimum_fee.
|
|
expect_fee( iv_expected = 50
|
|
iv_actual = mo_cut->calculate_fee( iv_pest_type = 'MICE'
|
|
iv_area = 0
|
|
iv_urgent = abap_false
|
|
iv_contract = abap_true )
|
|
iv_case = 'minimum fee' ).
|
|
ENDMETHOD.
|
|
ENDCLASS.
|