code: def test_BoxAnnotation() -> None:
      box = BoxAnnotation()
      assert isinstance(box.left, Node)
      assert box.left_units == "data"
      assert box.left_limit is None
      assert isinstance(box.right, Node)
      assert box.right_units == "data"
      assert box.right_limit is None
      assert isinstance(box.bottom, Node)
      assert box.bottom_units == "data"
      assert box.bottom_limit is None
      assert isinstance(box.top, Node)
      assert box.top_units == "data"
      assert box.top_limit is None
      assert box.x_range_name == "default"
      assert box.y_range_name == "default"
      assert box.level == "annotation"
      assert box.editable is False
      check_line_properties(box, "", "#cccccc", 1, 0.3)
      check_fill_properties(box, "", "#fff9ba", 0.4)
      check_hatch_properties(box)
      check_line_properties(box, "hover_", None, 1, 0.3)
      check_fill_properties(box, "hover_", None, 0.4)
      check_hatch_properties(box, "hover_")
      check_properties_existence(
          box,
          [
              *ANNOTATION,
              "left",
              "left_units",
              "left_limit",
              "right",
              "right_units",
              "right_limit",
              "bottom",
              "bottom_units",
              "bottom_limit",
              "top",
              "top_units",
              "top_limit",
              "border_radius",
              "editable",
              "resizable",
              "movable",
              "symmetric",
          ],
          LINE,
          FILL,
          HATCH,
          HOVER_LINE,
          HOVER_FILL,
          HOVER_HATCH,
      )
  
imports: from __future__ import annotations
  import pytest
  from datetime import datetime
  from unittest import mock
  from bokeh.core.properties import field, value
  from bokeh.core.validation import check_integrity, process_validation_issues
  from bokeh.models import Arrow, ArrowHead, Band, BoxAnnotation, ColorBar, ColumnDataSource, GlyphRenderer, Label, LabelSet, Legend, LegendItem, LinearColorMapper, Node, PolyAnnotation, Slope, Span, Title, Whisker
  from bokeh.util.serialization import convert_datetime_type
  from _util_models import ABOVE_FILL, ABOVE_HATCH, ANGLE, BELOW_FILL, BELOW_HATCH, FILL, HATCH, HOVER_FILL, HOVER_HATCH, HOVER_LINE, LINE, TEXT, check_fill_properties, check_hatch_properties, check_line_properties, check_properties_existence, check_text_properties, prefix
label_desc: Use image node_id 5 for calling a global function with example usage: test_BoxAnnotation() without return types