code: def test_Plot_add_tools() -> None:
      plot = Plot()
      assert len(plot.tools) == 0
  
      pan = PanTool()
      plot.add_tools(pan)
      assert plot.tools == [pan]
  
      zoom_in = ZoomInTool()
      zoom_out = ZoomOutTool()
  
      plot.add_tools("reset", zoom_in, zoom_out)
      assert plot.tools[0] == pan
      assert isinstance(plot.tools[1], ResetTool)
      assert plot.tools[2:] == [zoom_in, zoom_out]
  
      with pytest.raises(ValueError):
          plot.add_tools("foobar")
  
      with pytest.raises(ValueError):
          plot.add_tools(0)
  
imports: from __future__ import annotations
  import pytest
  from math import isnan
  from unittest import mock
  from unittest.mock import MagicMock, patch
  import xyzservices.providers
  from bokeh.core.validation import check_integrity, process_validation_issues
  from bokeh.models import CategoricalScale, CustomJS, DataRange1d, FactorRange, GlyphRenderer, Label, LinearAxis, LinearScale, LogScale, PanTool, Plot, Range1d, ResetTool, Title, WMTSTileSource, ZoomInTool, ZoomOutTool
  from bokeh.plotting import figure
  import bokeh.models.plots
label_desc: Use image node_id 16 for calling a global function with example usage: test_Plot_add_tools() without return types