CLASS {{p}}t13_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. DATA mo_cut TYPE REF TO {{p}}if_hotel_rate. METHODS setup. METHODS expect_price IMPORTING iv_expected TYPE {{p}}if_hotel_rate=>ty_amount iv_actual TYPE {{p}}if_hotel_rate=>ty_amount. METHODS rejects_zero_nights FOR TESTING. METHODS rejects_zero_guests FOR TESTING. METHODS rejects_unknown_category FOR TESTING. METHODS validation_order FOR TESTING. METHODS single_standard_night FOR TESTING. METHODS two_guests_one_room FOR TESTING. METHODS three_guests_two_rooms FOR TESTING. METHODS breakfast_per_guest FOR TESTING. METHODS discount_starts_at_seven FOR TESTING. METHODS discount_fifteen_percent FOR TESTING. METHODS discount_twenty_percent FOR TESTING. ENDCLASS. CLASS {{p}}t13_hidden IMPLEMENTATION. METHOD setup. mo_cut = NEW {{p}}hotel_rate( ). ENDMETHOD. METHOD expect_price. cl_abap_unit_assert=>assert_equals( exp = iv_expected act = iv_actual ). ENDMETHOD. METHOD rejects_zero_nights. DATA(ls_result) = mo_cut->calculate( iv_category = {{p}}if_hotel_rate=>c_category-basic iv_nights = 0 iv_guests = 2 iv_breakfast = abap_false ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_hotel_rate=>c_reason-nights act = ls_result-reason ). expect_price( iv_expected = '0.00' iv_actual = ls_result-price ). ENDMETHOD. METHOD rejects_zero_guests. DATA(ls_result) = mo_cut->calculate( iv_category = {{p}}if_hotel_rate=>c_category-basic iv_nights = 3 iv_guests = 0 iv_breakfast = abap_true ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_hotel_rate=>c_reason-guests act = ls_result-reason ). expect_price( iv_expected = '0.00' iv_actual = ls_result-price ). ENDMETHOD. METHOD rejects_unknown_category. DATA(ls_result) = mo_cut->calculate( iv_category = 'X' iv_nights = 2 iv_guests = 1 iv_breakfast = abap_false ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_hotel_rate=>c_reason-category act = ls_result-reason ). expect_price( iv_expected = '0.00' iv_actual = ls_result-price ). ENDMETHOD. METHOD validation_order. DATA(ls_result) = mo_cut->calculate( iv_category = 'X' iv_nights = 0 iv_guests = 0 iv_breakfast = abap_false ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_hotel_rate=>c_reason-nights act = ls_result-reason ). ls_result = mo_cut->calculate( iv_category = 'X' iv_nights = 2 iv_guests = 0 iv_breakfast = abap_false ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_hotel_rate=>c_reason-guests act = ls_result-reason ). ls_result = mo_cut->calculate( iv_category = 'X' iv_nights = 2 iv_guests = 2 iv_breakfast = abap_false ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_hotel_rate=>c_reason-category act = ls_result-reason ). ENDMETHOD. METHOD single_standard_night. DATA(ls_result) = mo_cut->calculate( iv_category = {{p}}if_hotel_rate=>c_category-basic iv_nights = 1 iv_guests = 1 iv_breakfast = abap_false ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_hotel_rate=>c_reason-ok act = ls_result-reason ). expect_price( iv_expected = '93.00' iv_actual = ls_result-price ). ENDMETHOD. METHOD two_guests_one_room. DATA(ls_result) = mo_cut->calculate( iv_category = {{p}}if_hotel_rate=>c_category-comfort iv_nights = 3 iv_guests = 2 iv_breakfast = abap_false ). expect_price( iv_expected = '438.00' iv_actual = ls_result-price ). ENDMETHOD. METHOD three_guests_two_rooms. DATA(ls_result) = mo_cut->calculate( iv_category = {{p}}if_hotel_rate=>c_category-comfort iv_nights = 2 iv_guests = 3 iv_breakfast = abap_false ). expect_price( iv_expected = '578.00' iv_actual = ls_result-price ). ENDMETHOD. METHOD breakfast_per_guest. DATA(ls_result) = mo_cut->calculate( iv_category = {{p}}if_hotel_rate=>c_category-basic iv_nights = 2 iv_guests = 2 iv_breakfast = abap_true ). expect_price( iv_expected = '242.00' iv_actual = ls_result-price ). ENDMETHOD. METHOD discount_starts_at_seven. DATA(ls_result) = mo_cut->calculate( iv_category = {{p}}if_hotel_rate=>c_category-basic iv_nights = 6 iv_guests = 1 iv_breakfast = abap_false ). expect_price( iv_expected = '558.00' iv_actual = ls_result-price ). ls_result = mo_cut->calculate( iv_category = {{p}}if_hotel_rate=>c_category-basic iv_nights = 7 iv_guests = 1 iv_breakfast = abap_false ). expect_price( iv_expected = '588.00' iv_actual = ls_result-price ). ENDMETHOD. METHOD discount_fifteen_percent. DATA(ls_result) = mo_cut->calculate( iv_category = {{p}}if_hotel_rate=>c_category-comfort iv_nights = 14 iv_guests = 2 iv_breakfast = abap_false ). expect_price( iv_expected = '1750.00' iv_actual = ls_result-price ). ENDMETHOD. METHOD discount_twenty_percent. DATA(ls_result) = mo_cut->calculate( iv_category = {{p}}if_hotel_rate=>c_category-suite iv_nights = 28 iv_guests = 1 iv_breakfast = abap_false ). expect_price( iv_expected = '5908.00' iv_actual = ls_result-price ). ENDMETHOD. ENDCLASS.