code: def test_search_forward(self):
      # search for non-empty match
      Equal = self.assertEqual
      forward = self.make_search(self.engine.search_forward)
      pat = self.pat
      Equal(forward(pat, 1, 0, True), self.res)
      Equal(forward(pat, 3, 0, True), self.res)  # wrap
      Equal(forward(pat, 3, 0, False), None)  # no wrap
      Equal(forward(pat, 2, 10, False), self.res)
  
      Equal(forward(self.failpat, 1, 0, True), None)
      Equal(forward(self.emptypat, 2, 9, True, ok=True), (2, (9, 9)))
      # Equal(forward(self.emptypat, 2, 9, True), self.res)
      # While the initial empty match is correctly ignored, skipping
      # the rest of the line and returning (3, (0,4)) seems buggy - tjr.
      Equal(forward(self.emptypat, 2, 10, True), self.res)
  
imports: import re
  import unittest
  from Tkinter import BooleanVar, StringVar, TclError
  import tkMessageBox
  from idlelib import SearchEngine
  from idlelib.idle_test.mock_tk import Var, Mbox
  from idlelib.idle_test.mock_tk import Text
label_desc: Use image node_id 3 for calling the ForwardBackwardTest obj's underlying member method code with example usage: obj.test_search_forward() without return types