code: def test_prog(self):
      prog = colorizer.prog
      eq = self.assertEqual
      line = 'def f():\n    print("hello")\n'
      m = prog.search(line)
      eq(m.groupdict()["KEYWORD"], "def")
      m = prog.search(line, m.end())
      eq(m.groupdict()["SYNC"], "\n")
      m = prog.search(line, m.end())
      eq(m.groupdict()["BUILTIN"], "print")
      m = prog.search(line, m.end())
      eq(m.groupdict()["STRING"], '"hello"')
      m = prog.search(line, m.end())
      eq(m.groupdict()["SYNC"], "\n")
  
imports: from idlelib import colorizer
  from test.support import requires
  import unittest
  from unittest import mock
  from idlelib.idle_test.tkinter_testing_utils import run_in_tk_mainloop
  from functools import partial
  import textwrap
  from tkinter import Tk, Text
  from idlelib import config
  from idlelib.percolator import Percolator
label_desc: Use image node_id 3 for calling the FunctionTest obj's underlying member method code with example usage: obj.test_prog() without return types