CLASS ltc_keg_tour_merger DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. DATA mo_cut TYPE REF TO {{p}}keg_tour_merger. METHODS setup. METHODS merges_two_lists FOR TESTING. METHODS adds_same_key FOR TESTING. METHODS ignores_invalid_kegs FOR TESTING. METHODS returns_empty_list FOR TESTING. METHODS ranks_pubs FOR TESTING. METHODS limits_ranked_pubs FOR TESTING. ENDCLASS. CLASS ltc_keg_tour_merger IMPLEMENTATION. METHOD setup. mo_cut = NEW {{p}}keg_tour_merger( ). ENDMETHOD. METHOD merges_two_lists. DATA(lt_a) = VALUE {{p}}keg_tour_merger=>tt_entry( ( pub_id = 'P01' keg_type = 'LAG' kegs = 10 ) ). DATA(lt_b) = VALUE {{p}}keg_tour_merger=>tt_entry( ( pub_id = 'P02' keg_type = 'PIL' kegs = 7 ) ). DATA(lt_exp) = VALUE {{p}}keg_tour_merger=>tt_entry( ( pub_id = 'P01' keg_type = 'LAG' kegs = 10 ) ( pub_id = 'P02' keg_type = 'PIL' kegs = 7 ) ). cl_abap_unit_assert=>assert_equals( exp = lt_exp act = mo_cut->merge_tours( it_tour_a = lt_a it_tour_b = lt_b ) ). ENDMETHOD. METHOD adds_same_key. DATA(lt_a) = VALUE {{p}}keg_tour_merger=>tt_entry( ( pub_id = 'p01' keg_type = 'lag' kegs = 4 ) ). DATA(lt_b) = VALUE {{p}}keg_tour_merger=>tt_entry( ( pub_id = 'P01' keg_type = 'LAG' kegs = 6 ) ). DATA(lt_exp) = VALUE {{p}}keg_tour_merger=>tt_entry( ( pub_id = 'P01' keg_type = 'LAG' kegs = 10 ) ). cl_abap_unit_assert=>assert_equals( exp = lt_exp act = mo_cut->merge_tours( it_tour_a = lt_a it_tour_b = lt_b ) ). ENDMETHOD. METHOD ignores_invalid_kegs. DATA(lt_a) = VALUE {{p}}keg_tour_merger=>tt_entry( ( pub_id = 'P01' keg_type = 'LAG' kegs = 0 ) ( pub_id = 'P02' keg_type = 'LAG' kegs = -2 ) ( pub_id = 'P03' keg_type = 'LAG' kegs = 8 ) ). DATA(lt_exp) = VALUE {{p}}keg_tour_merger=>tt_entry( ( pub_id = 'P03' keg_type = 'LAG' kegs = 8 ) ). cl_abap_unit_assert=>assert_equals( exp = lt_exp act = mo_cut->merge_tours( it_tour_a = lt_a it_tour_b = VALUE #( ) ) ). ENDMETHOD. METHOD returns_empty_list. DATA(lt_act) = mo_cut->merge_tours( it_tour_a = VALUE #( ) it_tour_b = VALUE #( ) ). cl_abap_unit_assert=>assert_equals( exp = 0 act = lines( lt_act ) ). ENDMETHOD. METHOD ranks_pubs. DATA(lt_tour) = VALUE {{p}}keg_tour_merger=>tt_entry( ( pub_id = 'P01' keg_type = 'LAG' kegs = 5 ) ( pub_id = 'P02' keg_type = 'LAG' kegs = 5 ) ( pub_id = 'P03' keg_type = 'LAG' kegs = 11 ) ). DATA(lt_exp) = VALUE {{p}}keg_tour_merger=>tt_pub( ( pub_id = 'P03' kegs = 11 ) ( pub_id = 'P01' kegs = 5 ) ( pub_id = 'P02' kegs = 5 ) ). cl_abap_unit_assert=>assert_equals( exp = lt_exp act = mo_cut->top_pubs( it_tour = lt_tour iv_count = 3 ) ). ENDMETHOD. METHOD limits_ranked_pubs. DATA(lt_tour) = VALUE {{p}}keg_tour_merger=>tt_entry( ( pub_id = 'P01' keg_type = 'LAG' kegs = 5 ) ( pub_id = 'P02' keg_type = 'LAG' kegs = 9 ) ). DATA(lt_exp) = VALUE {{p}}keg_tour_merger=>tt_pub( ( pub_id = 'P02' kegs = 9 ) ). cl_abap_unit_assert=>assert_equals( exp = lt_exp act = mo_cut->top_pubs( it_tour = lt_tour iv_count = 1 ) ). ENDMETHOD. ENDCLASS.