CLASS ltc_tour_planner DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. DATA mo_cut TYPE REF TO {{P}}TOUR_PLANNER. METHODS setup. METHODS add_and_read_item FOR TESTING. METHODS duplicate_is_rejected FOR TESTING. METHODS invalid_input_is_rejected FOR TESTING. METHODS summary_totals FOR TESTING. METHODS remove_tour_works FOR TESTING. ENDCLASS. CLASS ltc_tour_planner IMPLEMENTATION. METHOD setup. mo_cut = NEW {{P}}TOUR_PLANNER( ). ENDMETHOD. METHOD add_and_read_item. DATA(lv_status) = mo_cut->add_item( iv_tour_id = 'T001' iv_stop_no = 1 iv_customer = 'CUST01' iv_packages = 3 iv_weight = '12.50' ). cl_abap_unit_assert=>assert_equals( exp = {{P}}TOUR_PLANNER=>c_status-ok act = lv_status ). DATA(lt_item) = mo_cut->items( ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_item ) ). cl_abap_unit_assert=>assert_equals( exp = 'CUST01' act = lt_item[ 1 ]-customer ). ENDMETHOD. METHOD duplicate_is_rejected. DATA(lv_status) = mo_cut->add_item( iv_tour_id = 'T001' iv_stop_no = 1 iv_customer = 'CUST01' iv_packages = 3 iv_weight = '12.50' ). cl_abap_unit_assert=>assert_equals( exp = {{P}}TOUR_PLANNER=>c_status-ok act = lv_status ). lv_status = mo_cut->add_item( iv_tour_id = 'T001' iv_stop_no = 1 iv_customer = 'CUST02' iv_packages = 1 iv_weight = '1.00' ). cl_abap_unit_assert=>assert_equals( exp = {{P}}TOUR_PLANNER=>c_status-duplicate act = lv_status ). ENDMETHOD. METHOD invalid_input_is_rejected. DATA(lv_status) = mo_cut->add_item( iv_tour_id = '' iv_stop_no = 1 iv_customer = 'CUST01' iv_packages = 1 iv_weight = '1.00' ). cl_abap_unit_assert=>assert_equals( exp = {{P}}TOUR_PLANNER=>c_status-invalid act = lv_status ). DATA(lt_item) = mo_cut->items( ). cl_abap_unit_assert=>assert_equals( exp = 0 act = lines( lt_item ) ). ENDMETHOD. METHOD summary_totals. DATA(lv_status) = mo_cut->add_item( iv_tour_id = 'T001' iv_stop_no = 1 iv_customer = 'CUST01' iv_packages = 2 iv_weight = '10.00' ). cl_abap_unit_assert=>assert_equals( exp = {{P}}TOUR_PLANNER=>c_status-ok act = lv_status ). lv_status = mo_cut->add_item( iv_tour_id = 'T001' iv_stop_no = 2 iv_customer = 'CUST02' iv_packages = 3 iv_weight = '20.00' ). cl_abap_unit_assert=>assert_equals( exp = {{P}}TOUR_PLANNER=>c_status-ok act = lv_status ). DATA(lt_tour) = mo_cut->tour_summary( ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_tour ) ). cl_abap_unit_assert=>assert_equals( exp = 2 act = lt_tour[ 1 ]-stops ). cl_abap_unit_assert=>assert_equals( exp = 5 act = lt_tour[ 1 ]-packages ). ENDMETHOD. METHOD remove_tour_works. DATA(lv_status) = mo_cut->add_item( iv_tour_id = 'T001' iv_stop_no = 1 iv_customer = 'CUST01' iv_packages = 1 iv_weight = '1.00' ). cl_abap_unit_assert=>assert_equals( exp = {{P}}TOUR_PLANNER=>c_status-ok act = lv_status ). cl_abap_unit_assert=>assert_equals( exp = 1 act = mo_cut->remove_tour( 'T001' ) ). DATA(lt_item) = mo_cut->items( ). cl_abap_unit_assert=>assert_equals( exp = 0 act = lines( lt_item ) ). ENDMETHOD. ENDCLASS.