code: def test_gap_split():
      pure_square = [0.0, 0.0, 1.0, 1.0]
  
      # null split
      conf_h = dict(proportion=[1], gap=1.0, horizontal=True)
      eq(_split_rect(*pure_square, **conf_h), pure_square)
  
      # equal split
      h_2split = [(0.0, 0.0, 0.25, 1.0), (0.75, 0.0, 0.25, 1.0)]
      conf_h = dict(proportion=[1, 1], gap=1.0, horizontal=True)
      eq(_split_rect(*pure_square, **conf_h), h_2split)
  
      # disequal split
      h_2split = [
          (0.0, 0.0, 1 / 6, 1.0),
          (0.5 + 1 / 6, 0.0, 1 / 3, 1.0),
      ]
      conf_h = dict(proportion=[1, 2], gap=1.0, horizontal=True)
      eq(_split_rect(*pure_square, **conf_h), h_2split)
  
imports: from statsmodels.compat.python import lrange
  from io import BytesIO
  from itertools import product
  import numpy
  from numpy.testing import assert_, assert_raises
  import pandas
  import pytest
  from statsmodels.api import datasets
  from statsmodels.graphics.mosaicplot import _hierarchical_split, _key_splitting, _normalize_split, _reduce_dict, _split_rect, mosaic
label_desc: Use image node_id 14 for calling a global function with example usage: test_gap_split() without return types