code: def test_split_multiline_prompt():
      # Test 1: no newlines:
      tokens = [(Token, "ab")]
      (
          has_before_tokens,
          before,
          first_input_line,
      ) = _split_multiline_prompt(lambda cli: tokens)
      assert has_before_tokens(None) is False
      assert before(None) == []
      assert first_input_line(None) == [
          (Token, "a"),
          (Token, "b"),
      ]
  
      # Test 1: multiple lines.
      tokens = [(Token, "ab\ncd\nef")]
      (
          has_before_tokens,
          before,
          first_input_line,
      ) = _split_multiline_prompt(lambda cli: tokens)
      assert has_before_tokens(None) is True
      assert before(None) == [
          (Token, "a"),
          (Token, "b"),
          (Token, "\n"),
          (Token, "c"),
          (Token, "d"),
      ]
      assert first_input_line(None) == [
          (Token, "e"),
          (Token, "f"),
      ]
  
      # Edge case 1: starting with a newline.
      tokens = [(Token, "\nab")]
      (
          has_before_tokens,
          before,
          first_input_line,
      ) = _split_multiline_prompt(lambda cli: tokens)
      assert has_before_tokens(None) is True
      assert before(None) == []
      assert first_input_line(None) == [(Token, "a"), (Token, "b")]
  
      # Edge case 2: starting with two newlines.
      tokens = [(Token, "\n\nab")]
      (
          has_before_tokens,
          before,
          first_input_line,
      ) = _split_multiline_prompt(lambda cli: tokens)
      assert has_before_tokens(None) is True
      assert before(None) == [(Token, "\n")]
      assert first_input_line(None) == [(Token, "a"), (Token, "b")]
  
label_desc: Use image node_id 1 for calling a global function with example usage: test_split_multiline_prompt() without return types