code: def test_PolyLineROI():
      rois = [
          (
              pg.PolyLineROI(
                  [[0, 0], [10, 0], [0, 15]], closed=True, pen=0.3
              ),
              "closed",
          ),
          (
              pg.PolyLineROI(
                  [[0, 0], [10, 0], [0, 15]], closed=False, pen=0.3
              ),
              "open",
          ),
      ]
  
      plt = pg.GraphicsView()
      plt.show()
      resizeWindow(plt, 200, 200)
      vb = pg.ViewBox()
      plt.scene().addItem(vb)
      vb.resize(200, 200)
      # plt.plotItem = pg.PlotItem()
      # plt.scene().addItem(plt.plotItem)
      # plt.plotItem.resize(200, 200)
  
      plt.scene().minDragTime = (
          0  # let us simulate mouse drags very quickly.
      )
  
      # seemingly arbitrary requirements; might need longer wait time for some
      # platforms..
      QtTest.QTest.qWaitForWindowExposed(plt)
      QtTest.QTest.qWait(100)
  
      for r, name in rois:
          vb.clear()
          vb.addItem(r)
          vb.autoRange()
          app.processEvents()
  
          assertImageApproved(
              plt,
              "roi/polylineroi/" + name + "_init",
              "Init %s polyline." % name,
          )
          initState = r.getState()
          assert len(r.getState()["points"]) == 3
  
          # hover over center
          center = r.mapToScene(pg.Point(3, 3))
          mouseMove(plt, center)
          assertImageApproved(
              plt,
              "roi/polylineroi/" + name + "_hover_roi",
              "Hover mouse over center of ROI.",
          )
  
          # drag ROI
          mouseDrag(
              plt,
              center,
              center + pg.Point(10, -10),
              QtCore.Qt.MouseButton.LeftButton,
          )
          assertImageApproved(
              plt,
              "roi/polylineroi/" + name + "_drag_roi",
              "Drag mouse over center of ROI.",
          )
  
          # hover over handle
          pt = r.mapToScene(pg.Point(r.getState()["points"][2]))
          mouseMove(plt, pt)
          assertImageApproved(
              plt,
              "roi/polylineroi/" + name + "_hover_handle",
              "Hover mouse over handle.",
          )
  
          # drag handle
          mouseDrag(
              plt,
              pt,
              pt + pg.Point(5, 20),
              QtCore.Qt.MouseButton.LeftButton,
          )
          assertImageApproved(
              plt,
              "roi/polylineroi/" + name + "_drag_handle",
              "Drag mouse over handle.",
          )
  
          # hover over segment
          pt = r.mapToScene(
              (
                  pg.Point(r.getState()["points"][2])
                  + pg.Point(r.getState()["points"][1])
              )
              * 0.5
          )
          mouseMove(plt, pt + pg.Point(0, 2))
          assertImageApproved(
              plt,
              "roi/polylineroi/" + name + "_hover_segment",
              "Hover mouse over diagonal segment.",
          )
  
          # click segment
          mouseClick(plt, pt, QtCore.Qt.MouseButton.LeftButton)
          assertImageApproved(
              plt,
              "roi/polylineroi/" + name + "_click_segment",
              "Click mouse over segment.",
          )
  
          # drag new handle
          mouseMove(plt, pt + pg.Point(10, -10))
          # pg bug: have to move the mouse off/on again to register hover
          mouseDrag(
              plt,
              pt,
              pt + pg.Point(10, -10),
              QtCore.Qt.MouseButton.LeftButton,
          )
          assertImageApproved(
              plt,
              "roi/polylineroi/" + name + "_drag_new_handle",
              "Drag mouse over created handle.",
          )
  
          # clear all points
          r.clearPoints()
          assertImageApproved(
              plt,
              "roi/polylineroi/" + name + "_clear",
              "All points cleared.",
          )
          assert len(r.getState()["points"]) == 0
  
          # call setPoints
          r.setPoints(initState["points"])
          assertImageApproved(
              plt,
              f"roi/polylineroi/{name}_setpoints",
              "Reset points to initial state.",
              pxCount=1
              if platform.system() == "Darwin"
              and parse(platform.mac_ver()[0]) >= Version("13.0")
              else 0,
          )
          assert len(r.getState()["points"]) == 3
  
          # call setState
          r.setState(initState)
          assertImageApproved(
              plt,
              "roi/polylineroi/" + name + "_setstate",
              "Reset ROI to initial state.",
          )
          assert len(r.getState()["points"]) == 3
  
      plt.hide()
  
file_path: pyqtgraph/tests/graphicsItems/test_ROI.py
imports: import math
  import platform
  import numpy
  import pytest
  from packaging.version import Version, parse
  import pyqtgraph
  from pyqtgraph.Qt import QtCore, QtGui, QtTest
  from tests.image_testing import assertImageApproved
  from tests.ui_testing import mouseClick, mouseDrag, mouseMove, resizeWindow
label_desc: Use image node_id 6 for calling a global function with example usage: test_PolyLineROI() without return types