code: def test_default_annotation_positions(multi_plot_fixture):
      # default position is (inside) top right
      multi_plot_fixture.add_hrect(
          row=2, col=2, y0=1, y1=8, annotation_text="A"
      )
      multi_plot_fixture.add_vline(
          row=2, col=1, x=4, annotation_text="B"
      )
      # if position on {h,v}rect lacks inside/outside specifier it defaults to inside
      multi_plot_fixture.add_vrect(
          row=1,
          col=2,
          x0=3,
          x1=6,
          annotation_text="C",
          annotation_position="bottom left",
      )
      ret = len(multi_plot_fixture.layout.annotations) == 3
      for sh, d in zip(
          multi_plot_fixture.layout.annotations,
          [
              {
                  "text": "A",
                  "x": 1,
                  "y": 8,
                  "xanchor": "right",
                  "yanchor": "top",
                  "xref": "x4 domain",
                  "yref": "y4",
              },
              {
                  "text": "B",
                  "x": 4,
                  "y": 1,
                  "xanchor": "left",
                  "yanchor": "top",
                  "xref": "x3",
                  "yref": "y3 domain",
              },
              {
                  "text": "C",
                  "x": 3,
                  "y": 0,
                  "xanchor": "left",
                  "yanchor": "bottom",
                  "xref": "x2",
                  "yref": "y2 domain",
              },
          ],
      ):
          ret &= _cmp_partial_dict(sh, d)
      assert ret
  
imports: import plotly.graph_objects
  from plotly.subplots import make_subplots
  from itertools import product
  import os
  import sys
  import pytest
  import json
  from .common import _cmp_partial_dict, _check_figure_layout_objects
label_desc: Use image node_id 11 for calling a global function with example usage: test_default_annotation_positions(multi_plot_fixture) without return types