86 lines
3.5 KiB
ABAP
86 lines
3.5 KiB
ABAP
CLASS ltc_childcare_pricer DEFINITION FINAL FOR TESTING
|
|
DURATION SHORT RISK LEVEL HARMLESS.
|
|
|
|
PRIVATE SECTION.
|
|
DATA mo_cut TYPE REF TO {{p}}childcare_pricer.
|
|
|
|
METHODS setup.
|
|
METHODS assert_fee
|
|
IMPORTING iv_expected TYPE {{p}}childcare_pricer=>ty_amount
|
|
iv_actual TYPE {{p}}childcare_pricer=>ty_amount.
|
|
|
|
METHODS baby_full_day FOR TESTING.
|
|
METHODS toddler_half_day FOR TESTING.
|
|
METHODS sibling_discount FOR TESTING.
|
|
METHODS fee_is_capped FOR TESTING.
|
|
METHODS age_out_of_range FOR TESTING.
|
|
METHODS days_out_of_range FOR TESTING.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS ltc_childcare_pricer IMPLEMENTATION.
|
|
METHOD setup.
|
|
mo_cut = NEW {{p}}childcare_pricer( ).
|
|
ENDMETHOD.
|
|
|
|
METHOD assert_fee.
|
|
cl_abap_unit_assert=>assert_equals( exp = iv_expected act = iv_actual ).
|
|
ENDMETHOD.
|
|
|
|
METHOD baby_full_day.
|
|
DATA(ls_result) = mo_cut->calculate( iv_age_months = 6
|
|
iv_days = 3
|
|
iv_full_day = abap_true
|
|
iv_sibling = abap_false ).
|
|
cl_abap_unit_assert=>assert_equals( exp = {{p}}childcare_pricer=>c_reason-ok
|
|
act = ls_result-reason ).
|
|
assert_fee( iv_expected = '808.73' iv_actual = ls_result-fee ).
|
|
ENDMETHOD.
|
|
|
|
METHOD toddler_half_day.
|
|
DATA(ls_result) = mo_cut->calculate( iv_age_months = 24
|
|
iv_days = 3
|
|
iv_full_day = abap_false
|
|
iv_sibling = abap_false ).
|
|
cl_abap_unit_assert=>assert_equals( exp = {{p}}childcare_pricer=>c_reason-ok
|
|
act = ls_result-reason ).
|
|
assert_fee( iv_expected = '430.45' iv_actual = ls_result-fee ).
|
|
ENDMETHOD.
|
|
|
|
METHOD sibling_discount.
|
|
DATA(ls_result) = mo_cut->calculate( iv_age_months = 24
|
|
iv_days = 5
|
|
iv_full_day = abap_false
|
|
iv_sibling = abap_true ).
|
|
assert_fee( iv_expected = '645.68' iv_actual = ls_result-fee ).
|
|
ENDMETHOD.
|
|
|
|
METHOD fee_is_capped.
|
|
DATA(ls_result) = mo_cut->calculate( iv_age_months = 6
|
|
iv_days = 5
|
|
iv_full_day = abap_true
|
|
iv_sibling = abap_false ).
|
|
assert_fee( iv_expected = '1050.00' iv_actual = ls_result-fee ).
|
|
ENDMETHOD.
|
|
|
|
METHOD age_out_of_range.
|
|
DATA(ls_result) = mo_cut->calculate( iv_age_months = 2
|
|
iv_days = 3
|
|
iv_full_day = abap_true
|
|
iv_sibling = abap_false ).
|
|
cl_abap_unit_assert=>assert_equals( exp = {{p}}childcare_pricer=>c_reason-age
|
|
act = ls_result-reason ).
|
|
assert_fee( iv_expected = '0.00' iv_actual = ls_result-fee ).
|
|
ENDMETHOD.
|
|
|
|
METHOD days_out_of_range.
|
|
DATA(ls_result) = mo_cut->calculate( iv_age_months = 24
|
|
iv_days = 6
|
|
iv_full_day = abap_false
|
|
iv_sibling = abap_false ).
|
|
cl_abap_unit_assert=>assert_equals( exp = {{p}}childcare_pricer=>c_reason-days
|
|
act = ls_result-reason ).
|
|
assert_fee( iv_expected = '0.00' iv_actual = ls_result-fee ).
|
|
ENDMETHOD.
|
|
ENDCLASS.
|