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.