CLASS ltc_garden_rent DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. TYPES ty_amount TYPE p LENGTH 8 DECIMALS 2. DATA mo_cut TYPE REF TO {{p}}garden_rent. METHODS setup. METHODS standard_plot_rent FOR TESTING. METHODS member_discount FOR TESTING. METHODS water_connection_fee FOR TESTING. METHODS minimum_rent FOR TESTING. METHODS rounds_half_up FOR TESTING. METHODS unknown_plot_type FOR TESTING. METHODS area_out_of_range FOR TESTING. ENDCLASS. CLASS ltc_garden_rent IMPLEMENTATION. METHOD setup. mo_cut = NEW {{p}}garden_rent( ). ENDMETHOD. METHOD standard_plot_rent. DATA(ls_result) = mo_cut->calculate( iv_plot_type = 'STD' iv_area = 100 iv_water = abap_false iv_member = abap_false ). cl_abap_unit_assert=>assert_equals( exp = CONV ty_amount( '35.00' ) act = ls_result-rent ). cl_abap_unit_assert=>assert_equals( exp = {{p}}garden_rent=>c_reason-ok act = ls_result-reason ). ENDMETHOD. METHOD member_discount. DATA(ls_result) = mo_cut->calculate( iv_plot_type = 'STD' iv_area = 100 iv_water = abap_false iv_member = abap_true ). cl_abap_unit_assert=>assert_equals( exp = CONV ty_amount( '29.75' ) act = ls_result-rent ). ENDMETHOD. METHOD water_connection_fee. DATA(ls_result) = mo_cut->calculate( iv_plot_type = 'PREM' iv_area = 100 iv_water = abap_true iv_member = abap_false ). cl_abap_unit_assert=>assert_equals( exp = CONV ty_amount( '72.00' ) act = ls_result-rent ). ENDMETHOD. METHOD minimum_rent. DATA(ls_result) = mo_cut->calculate( iv_plot_type = 'STD' iv_area = 10 iv_water = abap_false iv_member = abap_true ). cl_abap_unit_assert=>assert_equals( exp = CONV ty_amount( '10.00' ) act = ls_result-rent ). ENDMETHOD. METHOD rounds_half_up. DATA(ls_result) = mo_cut->calculate( iv_plot_type = 'STD' iv_area = 42 iv_water = abap_true iv_member = abap_true ). cl_abap_unit_assert=>assert_equals( exp = CONV ty_amount( '22.70' ) act = ls_result-rent ). ENDMETHOD. METHOD unknown_plot_type. DATA(ls_result) = mo_cut->calculate( iv_plot_type = 'X' iv_area = 100 iv_water = abap_false iv_member = abap_false ). cl_abap_unit_assert=>assert_equals( exp = {{p}}garden_rent=>c_reason-plot act = ls_result-reason ). cl_abap_unit_assert=>assert_equals( exp = CONV ty_amount( '0.00' ) act = ls_result-rent ). ENDMETHOD. METHOD area_out_of_range. DATA(ls_result) = mo_cut->calculate( iv_plot_type = 'STD' iv_area = 9 iv_water = abap_false iv_member = abap_false ). cl_abap_unit_assert=>assert_equals( exp = {{p}}garden_rent=>c_reason-area act = ls_result-reason ). ls_result = mo_cut->calculate( iv_plot_type = 'STD' iv_area = 501 iv_water = abap_false iv_member = abap_false ). cl_abap_unit_assert=>assert_equals( exp = {{p}}garden_rent=>c_reason-area act = ls_result-reason ). ENDMETHOD. ENDCLASS.