Files
abap-llm/tasks_gen/train/G1046/hidden/tree_hidden.clas.abap

129 lines
4.4 KiB
ABAP

CLASS {{p}}tree_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
METHODS call
IMPORTING
iv_species TYPE string
iv_height_cm TYPE i
iv_near_house TYPE abap_bool
EXPORTING
ev_fee TYPE decfloat34
ev_warning TYPE abap_bool
ev_subrc TYPE sysubrc.
METHODS expect_fee
IMPORTING
iv_species TYPE string
iv_height_cm TYPE i
iv_near_house TYPE abap_bool
iv_expected TYPE decfloat34.
METHODS oak_base_fee FOR TESTING.
METHODS pine_base_fee FOR TESTING.
METHODS birch_base_fee FOR TESTING.
METHODS other_species_fee FOR TESTING.
METHODS height_surcharge FOR TESTING.
METHODS started_metre_counts FOR TESTING.
METHODS house_surcharge FOR TESTING.
METHODS house_rounding FOR TESTING.
METHODS tall_tree_warning FOR TESTING.
METHODS no_warning_normal FOR TESTING.
METHODS invalid_height FOR TESTING.
ENDCLASS.
CLASS {{p}}tree_hidden IMPLEMENTATION.
METHOD call.
ev_fee = 0.
ev_warning = abap_false.
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 = ev_fee
ev_warning = ev_warning
EXCEPTIONS
invalid_height = 1
OTHERS = 2.
ev_subrc = sy-subrc.
ENDMETHOD.
METHOD expect_fee.
DATA lv_fee TYPE decfloat34.
call( EXPORTING iv_species = iv_species iv_height_cm = iv_height_cm
iv_near_house = iv_near_house
IMPORTING ev_fee = lv_fee ).
cl_abap_unit_assert=>assert_equals( exp = iv_expected act = lv_fee ).
ENDMETHOD.
METHOD oak_base_fee.
expect_fee( EXPORTING iv_species = 'OAK' iv_height_cm = 300
iv_near_house = abap_false iv_expected = 200 ).
ENDMETHOD.
METHOD pine_base_fee.
expect_fee( EXPORTING iv_species = 'PINE' iv_height_cm = 400
iv_near_house = abap_false iv_expected = 150 ).
ENDMETHOD.
METHOD birch_base_fee.
expect_fee( EXPORTING iv_species = 'BIRCH' iv_height_cm = 300
iv_near_house = abap_false iv_expected = 120 ).
ENDMETHOD.
METHOD other_species_fee.
expect_fee( EXPORTING iv_species = 'ELM' iv_height_cm = 300
iv_near_house = abap_false iv_expected = 100 ).
ENDMETHOD.
METHOD height_surcharge.
expect_fee( EXPORTING iv_species = 'OAK' iv_height_cm = 620
iv_near_house = abap_false iv_expected = 250 ).
ENDMETHOD.
METHOD started_metre_counts.
expect_fee( EXPORTING iv_species = 'PINE' iv_height_cm = 501
iv_near_house = abap_false iv_expected = 175 ).
ENDMETHOD.
METHOD house_surcharge.
expect_fee( EXPORTING iv_species = 'OAK' iv_height_cm = 620
iv_near_house = abap_true iv_expected = '281.25' ).
ENDMETHOD.
METHOD house_rounding.
expect_fee( EXPORTING iv_species = 'ELM' iv_height_cm = 550
iv_near_house = abap_true iv_expected = '140.63' ).
ENDMETHOD.
METHOD tall_tree_warning.
DATA lv_fee TYPE decfloat34.
DATA lv_warning TYPE abap_bool.
call( EXPORTING iv_species = 'OAK' iv_height_cm = 2500
iv_near_house = abap_false
IMPORTING ev_fee = lv_fee ev_warning = lv_warning ).
cl_abap_unit_assert=>assert_equals( exp = 1200 act = lv_fee ).
cl_abap_unit_assert=>assert_equals( exp = abap_true act = lv_warning ).
ENDMETHOD.
METHOD no_warning_normal.
DATA lv_fee TYPE decfloat34.
DATA lv_warning TYPE abap_bool.
call( EXPORTING iv_species = 'OAK' iv_height_cm = 1000
iv_near_house = abap_false
IMPORTING ev_fee = lv_fee ev_warning = lv_warning ).
cl_abap_unit_assert=>assert_equals( exp = 325 act = lv_fee ).
cl_abap_unit_assert=>assert_equals( exp = abap_false act = lv_warning ).
ENDMETHOD.
METHOD invalid_height.
DATA lv_subrc TYPE sysubrc.
call( EXPORTING iv_species = 'OAK' iv_height_cm = 0 iv_near_house = abap_false
IMPORTING ev_subrc = lv_subrc ).
cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_subrc ).
call( EXPORTING iv_species = 'OAK' iv_height_cm = -5 iv_near_house = abap_false
IMPORTING ev_subrc = lv_subrc ).
cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_subrc ).
ENDMETHOD.
ENDCLASS.