code: def test_grid() -> None:
      s0 = Spacer()
      s1 = Spacer()
      s2 = Spacer()
      s3 = Spacer()
      s4 = Spacer()
      s5 = Spacer()
      s6 = Spacer()
  
      g0 = grid([])
      assert g0.children == []
  
      g1 = grid(column(s0, row(column(s1, s2, s3, s4, s5), s6)))
      assert g1.children == [
          (s0, 0, 0, 1, 2),
          (s1, 1, 0, 1, 1),
          (s2, 2, 0, 1, 1),
          (s3, 3, 0, 1, 1),
          (s4, 4, 0, 1, 1),
          (s5, 5, 0, 1, 1),
          (s6, 1, 1, 5, 1),
      ]
  
      g2 = grid([s0, [[s1, s2, s3, s4, s5], s6]])
      assert g2.children == [
          (s0, 0, 0, 1, 2),
          (s1, 1, 0, 1, 1),
          (s2, 2, 0, 1, 1),
          (s3, 3, 0, 1, 1),
          (s4, 4, 0, 1, 1),
          (s5, 5, 0, 1, 1),
          (s6, 1, 1, 5, 1),
      ]
  
      g3 = grid([s0, s1, s2, s3, s4, s5, s6], ncols=2)
      assert g3.children == [
          (s0, 0, 0, 1, 1),
          (s1, 0, 1, 1, 1),
          (s2, 1, 0, 1, 1),
          (s3, 1, 1, 1, 1),
          (s4, 2, 0, 1, 1),
          (s5, 2, 1, 1, 1),
          (s6, 3, 0, 1, 2),
      ]
  
      g4 = grid([s0, s1, s2, s3, s4, s5, s6, None], ncols=2)
      assert g4.children == [
          (s0, 0, 0, 1, 1),
          (s1, 0, 1, 1, 1),
          (s2, 1, 0, 1, 1),
          (s3, 1, 1, 1, 1),
          (s4, 2, 0, 1, 1),
          (s5, 2, 1, 1, 1),
          (s6, 3, 0, 1, 1),
      ]
  
      with pytest.raises(NotImplementedError):
          grid(
              """
          +----+----+----+----+
          | s1 | s2 | s3 |    |
          +---------+----+ s4 |
          |    s5   | s5 |    |
          +---------+----+----+
          """
          )
  
file_path: bokeh/tests/unit/bokeh/test_layouts.py
imports: from __future__ import annotations
  import pytest
  from unittest import mock
  from bokeh.core.validation import check_integrity, process_validation_issues
  from bokeh.layouts import column, grid, gridplot, group_tools, layout, row
  from bokeh.models import BoxAnnotation, BoxSelectTool, Column, GlyphRenderer, GridBox, GridPlot, HoverTool, LayoutDOM, PanTool, Row, SaveTool, Spacer, TapTool, ToolProxy
  from bokeh.plotting import figure
label_desc: Use image node_id 10 for calling a global function with example usage: test_grid() without return types