CLASS {{p}}t42_test DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. METHODS fee_for IMPORTING iv_pet TYPE string iv_nights TYPE i iv_peak TYPE abap_bool RETURNING VALUE(rv_fee) TYPE decfloat34. METHODS dog_fee FOR TESTING. METHODS long_stay FOR TESTING. METHODS other_pet FOR TESTING. METHODS invalid_nights FOR TESTING. ENDCLASS. CLASS {{p}}t42_test IMPLEMENTATION. METHOD fee_for. CALL FUNCTION '{{P}}KENNEL_FEE' EXPORTING iv_pet_type = iv_pet iv_nights = iv_nights iv_peak = iv_peak CHANGING cv_fee = rv_fee EXCEPTIONS invalid_nights = 1 OTHERS = 2. cl_abap_unit_assert=>assert_subrc( exp = 0 ). ENDMETHOD. METHOD dog_fee. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '74.70' ) act = fee_for( iv_pet = `DOG` iv_nights = 3 iv_peak = abap_false ) ). ENDMETHOD. METHOD long_stay. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '156.87' ) act = fee_for( iv_pet = `DOG` iv_nights = 7 iv_peak = abap_false ) ). ENDMETHOD. METHOD other_pet. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 0 ) act = fee_for( iv_pet = `SNAKE` iv_nights = 4 iv_peak = abap_false ) ). ENDMETHOD. METHOD invalid_nights. DATA lv_fee TYPE decfloat34. CALL FUNCTION '{{P}}KENNEL_FEE' EXPORTING iv_pet_type = `DOG` iv_nights = 0 iv_peak = abap_false CHANGING cv_fee = lv_fee EXCEPTIONS invalid_nights = 1 OTHERS = 2. cl_abap_unit_assert=>assert_equals( exp = 1 act = sy-subrc ). ENDMETHOD. ENDCLASS.