CLASS {{p}}t02_garden_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. TYPES ty_amount TYPE p LENGTH 8 DECIMALS 2. CONSTANTS: c_0000 TYPE ty_amount VALUE '0.00', c_1000 TYPE ty_amount VALUE '10.00', c_2270 TYPE ty_amount VALUE '22.70', c_2550 TYPE ty_amount VALUE '25.50', c_3500 TYPE ty_amount VALUE '35.00', c_6000 TYPE ty_amount VALUE '60.00', c_7200 TYPE ty_amount VALUE '72.00'. DATA mo_cut TYPE REF TO {{p}}garden_rent. METHODS setup. METHODS standard_plot_rent FOR TESTING. METHODS raised_bed_member FOR TESTING. METHODS premium_plot_water FOR TESTING. METHODS minimum_rent_applies FOR TESTING. METHODS rounds_half_up FOR TESTING. METHODS lower_case_plot_type FOR TESTING. METHODS unknown_plot_type FOR TESTING. METHODS area_too_small FOR TESTING. METHODS area_too_large FOR TESTING. METHODS plot_checked_first FOR TESTING. ENDCLASS. CLASS {{p}}t02_garden_hidden 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 = c_3500 act = ls_result-rent ). cl_abap_unit_assert=>assert_equals( exp = {{p}}garden_rent=>c_reason-ok act = ls_result-reason ). ENDMETHOD. METHOD raised_bed_member. DATA(ls_result) = mo_cut->calculate( iv_plot_type = 'BED' iv_area = 20 iv_water = abap_true iv_member = abap_true ). cl_abap_unit_assert=>assert_equals( exp = c_2550 act = ls_result-rent ). cl_abap_unit_assert=>assert_equals( exp = {{p}}garden_rent=>c_reason-ok act = ls_result-reason ). ENDMETHOD. METHOD premium_plot_water. 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 = c_7200 act = ls_result-rent ). ENDMETHOD. METHOD minimum_rent_applies. 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 = c_1000 act = ls_result-rent ). cl_abap_unit_assert=>assert_equals( exp = {{p}}garden_rent=>c_reason-ok act = ls_result-reason ). 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 = c_2270 act = ls_result-rent ). ENDMETHOD. METHOD lower_case_plot_type. DATA(ls_result) = mo_cut->calculate( iv_plot_type = 'prem' iv_area = 100 iv_water = abap_false iv_member = abap_false ). cl_abap_unit_assert=>assert_equals( exp = c_6000 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 = c_0000 act = ls_result-rent ). ENDMETHOD. METHOD area_too_small. 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 ). cl_abap_unit_assert=>assert_equals( exp = c_0000 act = ls_result-rent ). ENDMETHOD. METHOD area_too_large. DATA(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. METHOD plot_checked_first. DATA(ls_result) = mo_cut->calculate( iv_plot_type = 'X' iv_area = 0 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 ). ENDMETHOD. ENDCLASS.