CLASS ltc_stock_cover DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. DATA mo_cut TYPE REF TO {{p}}if_stock_cover. METHODS setup. METHODS covered_req_is_ok FOR TESTING. METHODS shortage_is_reported FOR TESTING. METHODS stock_shared_in_order FOR TESTING. METHODS invalid_req_keeps_stock FOR TESTING. METHODS blanks_and_case_ignored FOR TESTING. METHODS shortages_are_sorted FOR TESTING. ENDCLASS. CLASS ltc_stock_cover IMPLEMENTATION. METHOD setup. mo_cut = NEW {{p}}stock_cover_checker( ). ENDMETHOD. METHOD covered_req_is_ok. DATA(lt_stock) = VALUE {{p}}if_stock_cover=>tt_stock_item( ( material = 'MAT-A' plant = 'P1' quantity = 40 ) ). DATA(lt_req) = VALUE {{p}}if_stock_cover=>tt_requirement( ( material = 'MAT-A' plant = 'P1' required = 40 ) ). DATA(lt_exp) = VALUE {{p}}if_stock_cover=>tt_result( ( material = 'MAT-A' plant = 'P1' required = 40 available = 40 shortage = 0 status = 'OK' ) ). cl_abap_unit_assert=>assert_equals( exp = lt_exp act = mo_cut->check( it_stock = lt_stock it_requirement = lt_req ) ). ENDMETHOD. METHOD shortage_is_reported. DATA(lt_stock) = VALUE {{p}}if_stock_cover=>tt_stock_item( ( material = 'MAT-A' plant = 'P1' quantity = 5 ) ). DATA(lt_req) = VALUE {{p}}if_stock_cover=>tt_requirement( ( material = 'MAT-A' plant = 'P1' required = 12 ) ). DATA(lt_exp) = VALUE {{p}}if_stock_cover=>tt_result( ( material = 'MAT-A' plant = 'P1' required = 12 available = 5 shortage = 7 status = 'SHORT' ) ). cl_abap_unit_assert=>assert_equals( exp = lt_exp act = mo_cut->check( it_stock = lt_stock it_requirement = lt_req ) ). ENDMETHOD. METHOD stock_shared_in_order. DATA(lt_stock) = VALUE {{p}}if_stock_cover=>tt_stock_item( ( material = 'MAT-A' plant = 'P1' quantity = 10 ) ). DATA(lt_req) = VALUE {{p}}if_stock_cover=>tt_requirement( ( material = 'MAT-A' plant = 'P1' required = 6 ) ( material = 'MAT-A' plant = 'P1' required = 6 ) ). DATA(lt_exp) = VALUE {{p}}if_stock_cover=>tt_result( ( material = 'MAT-A' plant = 'P1' required = 6 available = 10 shortage = 0 status = 'OK' ) ( material = 'MAT-A' plant = 'P1' required = 6 available = 4 shortage = 2 status = 'SHORT' ) ). cl_abap_unit_assert=>assert_equals( exp = lt_exp act = mo_cut->check( it_stock = lt_stock it_requirement = lt_req ) ). ENDMETHOD. METHOD invalid_req_keeps_stock. DATA(lt_stock) = VALUE {{p}}if_stock_cover=>tt_stock_item( ( material = 'MAT-A' plant = 'P1' quantity = 9 ) ). DATA(lt_req) = VALUE {{p}}if_stock_cover=>tt_requirement( ( material = 'MAT-A' plant = 'P1' required = 0 ) ( material = 'MAT-A' plant = 'P1' required = 9 ) ). DATA(lt_exp) = VALUE {{p}}if_stock_cover=>tt_result( ( material = 'MAT-A' plant = 'P1' required = 0 available = 9 shortage = 0 status = 'INVALID' ) ( material = 'MAT-A' plant = 'P1' required = 9 available = 9 shortage = 0 status = 'OK' ) ). cl_abap_unit_assert=>assert_equals( exp = lt_exp act = mo_cut->check( it_stock = lt_stock it_requirement = lt_req ) ). ENDMETHOD. METHOD blanks_and_case_ignored. DATA(lt_stock) = VALUE {{p}}if_stock_cover=>tt_stock_item( ( material = 'mat-a' plant = 'p1' quantity = 7 ) ). DATA(lt_req) = VALUE {{p}}if_stock_cover=>tt_requirement( ( material = ' MAT-A ' plant = 'P1' required = 7 ) ). DATA(lt_exp) = VALUE {{p}}if_stock_cover=>tt_result( ( material = ' MAT-A ' plant = 'P1' required = 7 available = 7 shortage = 0 status = 'OK' ) ). cl_abap_unit_assert=>assert_equals( exp = lt_exp act = mo_cut->check( it_stock = lt_stock it_requirement = lt_req ) ). ENDMETHOD. METHOD shortages_are_sorted. DATA(lt_in) = VALUE {{p}}if_stock_cover=>tt_result( ( material = 'MAT-B' plant = 'P1' required = 1 available = 0 shortage = 1 status = 'SHORT' ) ( material = 'MAT-A' plant = 'P2' required = 1 available = 0 shortage = 1 status = 'SHORT' ) ( material = 'MAT-A' plant = 'P1' required = 1 available = 1 shortage = 0 status = 'OK' ) ). DATA(lt_exp) = VALUE {{p}}if_stock_cover=>tt_result( ( material = 'MAT-A' plant = 'P2' required = 1 available = 0 shortage = 1 status = 'SHORT' ) ( material = 'MAT-B' plant = 'P1' required = 1 available = 0 shortage = 1 status = 'SHORT' ) ). cl_abap_unit_assert=>assert_equals( exp = lt_exp act = mo_cut->shortages( lt_in ) ). ENDMETHOD. ENDCLASS.