code: def test_search_backward(self):
      # search for non-empty match
      Equal = self.assertEqual
      backward = self.make_search(self.engine.search_backward)
      pat = self.pat
      Equal(backward(pat, 3, 5, True), self.res)
      Equal(backward(pat, 2, 0, True), self.res)  # wrap
      Equal(backward(pat, 2, 0, False), None)  # no wrap
      Equal(backward(pat, 2, 16, False), self.res)
  
      Equal(backward(self.failpat, 3, 9, True), None)
      Equal(backward(self.emptypat, 2, 10, True, ok=True), (2, (9, 9)))
      # Accepted because 9 < 10, not because ok=True.
      # It is not clear that ok=True is useful going back - tjr
      Equal(backward(self.emptypat, 2, 9, True), (2, (5, 9)))
  
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 4 for calling the ForwardBackwardTest obj's underlying member method code with example usage: obj.test_search_backward() without return types