CLASS {{p}}tree_test DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. METHODS fee_for IMPORTING iv_species TYPE string iv_height_cm TYPE i iv_near_house TYPE abap_bool RETURNING VALUE(rv_fee) TYPE decfloat34. METHODS species_fees FOR TESTING. METHODS height_fee FOR TESTING. METHODS house_fee FOR TESTING. METHODS tall_tree FOR TESTING. METHODS invalid_height FOR TESTING. ENDCLASS. CLASS {{p}}tree_test IMPLEMENTATION. METHOD fee_for. DATA lv_fee TYPE decfloat34. DATA lv_warning TYPE abap_bool. CALL FUNCTION '{{P}}TREE_FEE' EXPORTING iv_species = iv_species iv_height_cm = iv_height_cm iv_near_house = iv_near_house IMPORTING ev_fee = lv_fee ev_warning = lv_warning EXCEPTIONS invalid_height = 1 OTHERS = 2. cl_abap_unit_assert=>assert_subrc( exp = 0 ). rv_fee = lv_fee. ENDMETHOD. METHOD species_fees. DATA lv_exp TYPE decfloat34. lv_exp = 200. cl_abap_unit_assert=>assert_equals( exp = lv_exp act = fee_for( iv_species = 'OAK' iv_height_cm = 300 iv_near_house = abap_false ) ). lv_exp = 120. cl_abap_unit_assert=>assert_equals( exp = lv_exp act = fee_for( iv_species = 'BIRCH' iv_height_cm = 300 iv_near_house = abap_false ) ). lv_exp = 100. cl_abap_unit_assert=>assert_equals( exp = lv_exp act = fee_for( iv_species = 'ELM' iv_height_cm = 300 iv_near_house = abap_false ) ). ENDMETHOD. METHOD height_fee. DATA lv_exp TYPE decfloat34. lv_exp = 250. cl_abap_unit_assert=>assert_equals( exp = lv_exp act = fee_for( iv_species = 'OAK' iv_height_cm = 620 iv_near_house = abap_false ) ). ENDMETHOD. METHOD house_fee. DATA lv_exp TYPE decfloat34. lv_exp = '140.63'. cl_abap_unit_assert=>assert_equals( exp = lv_exp act = fee_for( iv_species = 'ELM' iv_height_cm = 550 iv_near_house = abap_true ) ). ENDMETHOD. METHOD tall_tree. DATA lv_fee TYPE decfloat34. DATA lv_warning TYPE abap_bool. DATA lv_exp TYPE decfloat34. CALL FUNCTION '{{P}}TREE_FEE' EXPORTING iv_species = 'OAK' iv_height_cm = 2500 iv_near_house = abap_false IMPORTING ev_fee = lv_fee ev_warning = lv_warning. lv_exp = 1200. cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_fee ). cl_abap_unit_assert=>assert_equals( exp = abap_true act = lv_warning ). ENDMETHOD. METHOD invalid_height. DATA lv_fee TYPE decfloat34. DATA lv_subrc TYPE sysubrc. CALL FUNCTION '{{P}}TREE_FEE' EXPORTING iv_species = 'OAK' iv_height_cm = 0 iv_near_house = abap_false IMPORTING ev_fee = lv_fee EXCEPTIONS invalid_height = 1 OTHERS = 2. lv_subrc = sy-subrc. cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_subrc ). ENDMETHOD. ENDCLASS.