code: def test_math_directive(app):
      # normal case
      text = ".. math:: E = mc^2"
      doctree = restructuredtext.parse(app, text)
      assert_node(
          doctree, [nodes.document, nodes.math_block, "E = mc^2\n\n"]
      )
  
      # :name: option
      text = ".. math:: E = mc^2\n" "   :name: eq1\n"
      doctree = restructuredtext.parse(app, text)
      assert_node(
          doctree,
          [
              nodes.document,
              (nodes.target, [nodes.math_block, "E = mc^2\n\n"]),
          ],
      )
      assert_node(
          doctree[1],
          nodes.math_block,
          docname="index",
          label="eq1",
          number=1,
      )
  
      # :label: option
      text = ".. math:: E = mc^2\n" "   :label: eq2\n"
      doctree = restructuredtext.parse(app, text)
      assert_node(
          doctree,
          [
              nodes.document,
              (nodes.target, [nodes.math_block, "E = mc^2\n\n"]),
          ],
      )
      assert_node(
          doctree[1],
          nodes.math_block,
          docname="index",
          label="eq2",
          number=2,
      )
  
      # :label: option without value
      text = ".. math:: E = mc^2\n" "   :label:\n"
      doctree = restructuredtext.parse(app, text)
      assert_node(
          doctree,
          [
              nodes.document,
              (nodes.target, [nodes.math_block, "E = mc^2\n\n"]),
          ],
      )
      assert_node(
          doctree[1],
          nodes.math_block,
          ids=["equation-index-0"],
          docname="index",
          label="index:0",
          number=3,
      )
  
imports: import pytest
  from docutils import nodes
  from sphinx.testing import restructuredtext
  from sphinx.testing.util import assert_node
label_desc: Use image node_id 3 for calling a global function with example usage: test_math_directive(app) without return types