code: def test_tools_string_zoom_in_out_configured(self):
      for zoom in [
          "zoom_in",
          "zoom_out",
          "yzoom_in",
          "yzoom_out",
          "ywheel_zoom",
      ]:
          overlay = Overlay(
              [
                  Curve(range(10), label=f"Data {i}").opts(
                      subcoordinate_y=True, tools=[zoom]
                  )
                  for i in range(2)
              ]
          )
          plot = bokeh_renderer.get_plot(overlay)
          zoom_subcoordy = plot.handles["zooms_subcoordy"][zoom]
          assert len(zoom_subcoordy.renderers) == 2
          assert len(set(zoom_subcoordy.renderers)) == 2
          assert zoom_subcoordy.dimensions == "height"
          assert zoom_subcoordy.level == 1
  
imports: import numpy
  import pytest
  from bokeh.models.tools import WheelZoomTool, ZoomInTool, ZoomOutTool
  from holoviews.core import Overlay
  from holoviews.element import Curve
  from holoviews.element.annotation import VSpan
  from .test_plot import TestBokehPlot, bokeh_renderer
label_desc: Use image node_id 19 for calling the TestSubcoordinateY obj's underlying member method code with example usage: obj.test_tools_string_zoom_in_out_configured() without return types