CLASS ltc_feed_stock DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. DATA mo_cut TYPE REF TO {{p}}feed_stock. METHODS setup. METHODS assert_stock IMPORTING it_exp TYPE {{p}}if_feed_stock=>tt_stock it_act TYPE {{p}}if_feed_stock=>tt_stock. METHODS merges_two_suppliers FOR TESTING. METHODS ignores_uncounted FOR TESTING. METHODS removes_zero_total FOR TESTING. METHODS quantity_of_missing FOR TESTING. METHODS top_feed_tie FOR TESTING. ENDCLASS. CLASS ltc_feed_stock IMPLEMENTATION. METHOD setup. mo_cut = NEW {{p}}feed_stock( ). ENDMETHOD. METHOD assert_stock. cl_abap_unit_assert=>assert_equals( exp = lines( it_exp ) act = lines( it_act ) ). DATA(lv_index) = 0. LOOP AT it_exp ASSIGNING FIELD-SYMBOL(). lv_index = lv_index + 1. READ TABLE it_act ASSIGNING FIELD-SYMBOL() INDEX lv_index. cl_abap_unit_assert=>assert_subrc( exp = 0 act = sy-subrc ). cl_abap_unit_assert=>assert_equals( exp = -feed_type act = -feed_type ). cl_abap_unit_assert=>assert_equals( exp = -unit act = -unit ). cl_abap_unit_assert=>assert_equals( exp = -quantity act = -quantity ). cl_abap_unit_assert=>assert_equals( exp = -deliveries act = -deliveries ). ENDLOOP. ENDMETHOD. METHOD merges_two_suppliers. DATA(lt_stock) = mo_cut->consolidate( it_supplier_a = VALUE {{p}}if_feed_stock=>tt_delivery( ( feed_type = 'HAY' unit = 'KG' quantity = '10.000' ) ) it_supplier_b = VALUE {{p}}if_feed_stock=>tt_delivery( ( feed_type = 'HAY' unit = 'KG' quantity = '5.000' ) ) ). assert_stock( it_exp = VALUE {{p}}if_feed_stock=>tt_stock( ( feed_type = 'HAY' unit = 'KG' quantity = '15.000' deliveries = 2 ) ) it_act = lt_stock ). ENDMETHOD. METHOD ignores_uncounted. DATA(lt_stock) = mo_cut->consolidate( it_supplier_a = VALUE {{p}}if_feed_stock=>tt_delivery( ( feed_type = '' unit = 'KG' quantity = '9.000' ) ( feed_type = 'FISH' unit = 'KG' quantity = '0.000' ) ) it_supplier_b = VALUE {{p}}if_feed_stock=>tt_delivery( ) ). cl_abap_unit_assert=>assert_initial( lt_stock ). ENDMETHOD. METHOD removes_zero_total. DATA(lt_stock) = mo_cut->consolidate( it_supplier_a = VALUE {{p}}if_feed_stock=>tt_delivery( ( feed_type = 'HAY' unit = 'KG' quantity = '4.000' ) ( feed_type = 'HAY' unit = 'KG' quantity = '-4.000' ) ) it_supplier_b = VALUE {{p}}if_feed_stock=>tt_delivery( ) ). cl_abap_unit_assert=>assert_initial( lt_stock ). ENDMETHOD. METHOD quantity_of_missing. DATA lv_expected TYPE {{p}}if_feed_stock=>ty_quantity. cl_abap_unit_assert=>assert_equals( exp = lv_expected act = mo_cut->quantity_of( it_stock = VALUE {{p}}if_feed_stock=>tt_stock( ) iv_feed_type = 'HAY' ) ). ENDMETHOD. METHOD top_feed_tie. DATA(lt_stock) = VALUE {{p}}if_feed_stock=>tt_stock( ( feed_type = 'PELLETS' unit = 'KG' quantity = '5.000' deliveries = 1 ) ( feed_type = 'HAY' unit = 'KG' quantity = '5.000' deliveries = 1 ) ). DATA lv_expected TYPE {{p}}if_feed_stock=>ty_feed_type. lv_expected = 'HAY'. cl_abap_unit_assert=>assert_equals( exp = lv_expected act = mo_cut->top_feed( it_stock = lt_stock ) ). ENDMETHOD. ENDCLASS.