CLASS {{p}}hut_fee_test DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. METHODS fee_of IMPORTING iv_type TYPE string iv_nights TYPE i iv_member TYPE abap_bool DEFAULT abap_false iv_breakfast TYPE abap_bool DEFAULT abap_false RETURNING VALUE(rv_fee) TYPE decfloat34. METHODS adult_rate FOR TESTING. METHODS child_with_breakfast FOR TESTING. METHODS member_share FOR TESTING. METHODS dog_rules FOR TESTING. METHODS stay_discount FOR TESTING. METHODS invalid_nights FOR TESTING. ENDCLASS. CLASS {{p}}hut_fee_test IMPLEMENTATION. METHOD fee_of. DATA lv_subrc TYPE sysubrc. CALL FUNCTION '{{P}}HUT_FEE' EXPORTING iv_guest_type = iv_type iv_nights = iv_nights iv_member = iv_member iv_breakfast = iv_breakfast IMPORTING ev_fee = rv_fee EXCEPTIONS invalid_nights = 1 OTHERS = 2. lv_subrc = sy-subrc. cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_subrc ). ENDMETHOD. METHOD adult_rate. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '28.00' ) act = fee_of( iv_type = `ADULT` iv_nights = 1 ) ). ENDMETHOD. METHOD child_with_breakfast. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '47.00' ) act = fee_of( iv_type = `CHILD` iv_nights = 2 iv_breakfast = abap_true ) ). ENDMETHOD. METHOD member_share. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '28.00' ) act = fee_of( iv_type = `ADULT` iv_nights = 2 iv_member = abap_true ) ). ENDMETHOD. METHOD dog_rules. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '10.00' ) act = fee_of( iv_type = `DOG` iv_nights = 2 iv_member = abap_true iv_breakfast = abap_true ) ). ENDMETHOD. METHOD stay_discount. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '75.60' ) act = fee_of( iv_type = `ADULT` iv_nights = 3 ) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '156.80' ) act = fee_of( iv_type = `ADULT` iv_nights = 7 ) ). ENDMETHOD. METHOD invalid_nights. DATA lv_fee TYPE decfloat34. DATA lv_subrc TYPE sysubrc. CALL FUNCTION '{{P}}HUT_FEE' EXPORTING iv_guest_type = `ADULT` iv_nights = 0 IMPORTING ev_fee = lv_fee EXCEPTIONS invalid_nights = 1 OTHERS = 2. lv_subrc = sy-subrc. cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_subrc ). ENDMETHOD. ENDCLASS.