CLASS ltc_tour_summary DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. TYPES ty_fee TYPE p LENGTH 8 DECIMALS 2. CONSTANTS: c_fee_0 TYPE ty_fee VALUE '0.00', c_fee_25 TYPE ty_fee VALUE '25.00', c_fee_30 TYPE ty_fee VALUE '30.00', c_fee_40 TYPE ty_fee VALUE '40.00', c_fee_50 TYPE ty_fee VALUE '50.00', c_fee_180 TYPE ty_fee VALUE '180.00'. DATA mo_cut TYPE REF TO {{p}}tour_summary. METHODS setup. METHODS classic_adults FOR TESTING. METHODS premium_adult FOR TESTING. METHODS child_pays_half FOR TESTING. METHODS group_discount FOR TESTING. METHODS average_of_two FOR TESTING. METHODS negative_number FOR TESTING. METHODS unknown_type FOR TESTING. METHODS empty_day FOR TESTING. ENDCLASS. CLASS ltc_tour_summary IMPLEMENTATION. METHOD setup. mo_cut = NEW {{p}}tour_summary( ). ENDMETHOD. METHOD classic_adults. DATA(ls_result) = mo_cut->{{p}}if_tour_summary~summarize( VALUE #( ( tour_type = 'C' adults = 2 children = 0 ) ) ). cl_abap_unit_assert=>assert_equals( exp = c_fee_40 act = ls_result-total_fee ). cl_abap_unit_assert=>assert_equals( exp = 1 act = ls_result-booking_count ). cl_abap_unit_assert=>assert_equals( exp = c_fee_40 act = ls_result-average_fee ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_tour_summary=>c_status-ok act = ls_result-status ). ENDMETHOD. METHOD premium_adult. DATA(ls_result) = mo_cut->{{p}}if_tour_summary~summarize( VALUE #( ( tour_type = 'P' adults = 1 children = 0 ) ) ). cl_abap_unit_assert=>assert_equals( exp = c_fee_30 act = ls_result-total_fee ). ENDMETHOD. METHOD child_pays_half. DATA(ls_result) = mo_cut->{{p}}if_tour_summary~summarize( VALUE #( ( tour_type = 'C' adults = 1 children = 2 ) ) ). cl_abap_unit_assert=>assert_equals( exp = c_fee_40 act = ls_result-total_fee ). ENDMETHOD. METHOD group_discount. DATA(ls_result) = mo_cut->{{p}}if_tour_summary~summarize( VALUE #( ( tour_type = 'C' adults = 10 children = 0 ) ) ). cl_abap_unit_assert=>assert_equals( exp = c_fee_180 act = ls_result-total_fee ). ENDMETHOD. METHOD average_of_two. DATA(ls_result) = mo_cut->{{p}}if_tour_summary~summarize( VALUE #( ( tour_type = 'C' adults = 1 children = 0 ) ( tour_type = 'P' adults = 1 children = 0 ) ) ). cl_abap_unit_assert=>assert_equals( exp = c_fee_50 act = ls_result-total_fee ). cl_abap_unit_assert=>assert_equals( exp = 2 act = ls_result-booking_count ). cl_abap_unit_assert=>assert_equals( exp = c_fee_25 act = ls_result-average_fee ). ENDMETHOD. METHOD negative_number. DATA(ls_result) = mo_cut->{{p}}if_tour_summary~summarize( VALUE #( ( tour_type = 'C' adults = -1 children = 0 ) ) ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_tour_summary=>c_status-invalid_number act = ls_result-status ). cl_abap_unit_assert=>assert_equals( exp = c_fee_0 act = ls_result-total_fee ). cl_abap_unit_assert=>assert_equals( exp = 0 act = ls_result-booking_count ). ENDMETHOD. METHOD unknown_type. DATA(ls_result) = mo_cut->{{p}}if_tour_summary~summarize( VALUE #( ( tour_type = 'X' adults = 1 children = 0 ) ) ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_tour_summary=>c_status-unknown_type act = ls_result-status ). ENDMETHOD. METHOD empty_day. DATA lt_empty TYPE {{p}}if_tour_summary=>tt_booking. DATA(ls_result) = mo_cut->{{p}}if_tour_summary~summarize( lt_empty ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_tour_summary=>c_status-ok act = ls_result-status ). cl_abap_unit_assert=>assert_equals( exp = c_fee_0 act = ls_result-total_fee ). cl_abap_unit_assert=>assert_equals( exp = 0 act = ls_result-booking_count ). cl_abap_unit_assert=>assert_equals( exp = c_fee_0 act = ls_result-average_fee ). ENDMETHOD. ENDCLASS.