132 lines
5.7 KiB
ABAP
132 lines
5.7 KiB
ABAP
CLASS {{p}}adopt_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
|
|
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
|
PRIVATE SECTION.
|
|
TYPES: BEGIN OF ty_result,
|
|
deposit TYPE decfloat34,
|
|
visit_day TYPE string,
|
|
reason TYPE string,
|
|
END OF ty_result.
|
|
|
|
METHODS review
|
|
IMPORTING iv_species TYPE string
|
|
iv_age_years TYPE i
|
|
iv_housing TYPE string
|
|
iv_garden TYPE abap_bool
|
|
iv_pets TYPE i
|
|
RETURNING VALUE(rs_result) TYPE ty_result.
|
|
|
|
METHODS dog_deposit FOR TESTING.
|
|
METHODS cat_deposit FOR TESTING.
|
|
METHODS rabbit_deposit FOR TESTING.
|
|
METHODS pet_surcharge FOR TESTING.
|
|
METHODS pet_limit FOR TESTING.
|
|
METHODS dog_flat_no_garden FOR TESTING.
|
|
METHODS too_young FOR TESTING.
|
|
METHODS age_limit FOR TESTING.
|
|
METHODS unknown_species FOR TESTING.
|
|
METHODS check_order FOR TESTING.
|
|
METHODS rejected_unchanged FOR TESTING.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS {{p}}adopt_hidden IMPLEMENTATION.
|
|
METHOD review.
|
|
TRY.
|
|
CALL FUNCTION '{{P}}ADOPT_REVIEW'
|
|
EXPORTING
|
|
iv_species = iv_species
|
|
iv_age_years = iv_age_years
|
|
iv_housing = iv_housing
|
|
iv_garden = iv_garden
|
|
iv_pets = iv_pets
|
|
IMPORTING
|
|
ev_deposit = rs_result-deposit
|
|
ev_visit_day = rs_result-visit_day.
|
|
CATCH {{p}}cx_adopt_reject INTO DATA(lo_error).
|
|
rs_result-reason = lo_error->mv_reason.
|
|
ENDTRY.
|
|
ENDMETHOD.
|
|
|
|
METHOD dog_deposit.
|
|
DATA(ls_result) = review( iv_species = `DOG` iv_age_years = 30 iv_housing = `HOUSE`
|
|
iv_garden = abap_false iv_pets = 0 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 150 ) act = ls_result-deposit ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `WED` act = ls_result-visit_day ).
|
|
cl_abap_unit_assert=>assert_initial( ls_result-reason ).
|
|
ENDMETHOD.
|
|
|
|
METHOD cat_deposit.
|
|
DATA(ls_result) = review( iv_species = `CAT` iv_age_years = 25 iv_housing = `FLAT`
|
|
iv_garden = abap_false iv_pets = 0 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 80 ) act = ls_result-deposit ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `WED` act = ls_result-visit_day ).
|
|
ENDMETHOD.
|
|
|
|
METHOD rabbit_deposit.
|
|
DATA(ls_result) = review( iv_species = `RABBIT` iv_age_years = 20 iv_housing = `FLAT`
|
|
iv_garden = abap_false iv_pets = 0 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 40 ) act = ls_result-deposit ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `WED` act = ls_result-visit_day ).
|
|
ENDMETHOD.
|
|
|
|
METHOD pet_surcharge.
|
|
DATA(ls_result) = review( iv_species = `DOG` iv_age_years = 40 iv_housing = `HOUSE`
|
|
iv_garden = abap_true iv_pets = 2 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 162 ) act = ls_result-deposit ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `SAT` act = ls_result-visit_day ).
|
|
ENDMETHOD.
|
|
|
|
METHOD pet_limit.
|
|
DATA(ls_result) = review( iv_species = `DOG` iv_age_years = 30 iv_housing = `HOUSE`
|
|
iv_garden = abap_true iv_pets = 3 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `TOO_MANY_PETS` act = ls_result-reason ).
|
|
cl_abap_unit_assert=>assert_initial( ls_result-deposit ).
|
|
ENDMETHOD.
|
|
|
|
METHOD dog_flat_no_garden.
|
|
DATA(ls_result) = review( iv_species = `DOG` iv_age_years = 30 iv_housing = `FLAT`
|
|
iv_garden = abap_false iv_pets = 0 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `NO_GARDEN` act = ls_result-reason ).
|
|
ENDMETHOD.
|
|
|
|
METHOD too_young.
|
|
DATA(ls_result) = review( iv_species = `DOG` iv_age_years = 17 iv_housing = `HOUSE`
|
|
iv_garden = abap_true iv_pets = 0 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `TOO_YOUNG` act = ls_result-reason ).
|
|
ENDMETHOD.
|
|
|
|
METHOD age_limit.
|
|
DATA(ls_result) = review( iv_species = `DOG` iv_age_years = 18 iv_housing = `HOUSE`
|
|
iv_garden = abap_true iv_pets = 0 ).
|
|
cl_abap_unit_assert=>assert_initial( ls_result-reason ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 150 ) act = ls_result-deposit ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `SAT` act = ls_result-visit_day ).
|
|
ENDMETHOD.
|
|
|
|
METHOD unknown_species.
|
|
DATA(ls_result) = review( iv_species = `BIRD` iv_age_years = 30 iv_housing = `HOUSE`
|
|
iv_garden = abap_true iv_pets = 0 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `UNKNOWN_SPECIES` act = ls_result-reason ).
|
|
ENDMETHOD.
|
|
|
|
METHOD check_order.
|
|
DATA(ls_first) = review( iv_species = `BIRD` iv_age_years = 17 iv_housing = `HOUSE`
|
|
iv_garden = abap_true iv_pets = 0 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `TOO_YOUNG` act = ls_first-reason ).
|
|
DATA(ls_second) = review( iv_species = `BIRD` iv_age_years = 30 iv_housing = `HOUSE`
|
|
iv_garden = abap_true iv_pets = 5 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `UNKNOWN_SPECIES` act = ls_second-reason ).
|
|
DATA(ls_third) = review( iv_species = `DOG` iv_age_years = 30 iv_housing = `FLAT`
|
|
iv_garden = abap_false iv_pets = 5 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `NO_GARDEN` act = ls_third-reason ).
|
|
ENDMETHOD.
|
|
|
|
METHOD rejected_unchanged.
|
|
DATA(ls_result) = review( iv_species = `DOG` iv_age_years = 30 iv_housing = `FLAT`
|
|
iv_garden = abap_false iv_pets = 0 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `NO_GARDEN` act = ls_result-reason ).
|
|
cl_abap_unit_assert=>assert_initial( ls_result-deposit ).
|
|
cl_abap_unit_assert=>assert_initial( ls_result-visit_day ).
|
|
ENDMETHOD.
|
|
ENDCLASS.
|