CLASS {{p}}adopt_test 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 surcharge FOR TESTING. METHODS visit_day FOR TESTING. METHODS too_young FOR TESTING. METHODS no_garden FOR TESTING. ENDCLASS. CLASS {{p}}adopt_test 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 ). ENDMETHOD. METHOD surcharge. DATA(ls_result) = review( iv_species = `CAT` iv_age_years = 25 iv_housing = `FLAT` iv_garden = abap_false iv_pets = 1 ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 92 ) act = ls_result-deposit ). ENDMETHOD. METHOD visit_day. DATA(ls_sat) = review( iv_species = `RABBIT` iv_age_years = 20 iv_housing = `HOUSE` iv_garden = abap_true iv_pets = 0 ). cl_abap_unit_assert=>assert_equals( exp = `SAT` act = ls_sat-visit_day ). DATA(ls_wed) = 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 = `WED` act = ls_wed-visit_day ). ENDMETHOD. METHOD too_young. DATA(ls_result) = review( iv_species = `CAT` 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 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. ENDCLASS.