(root)/
Python-3.12.0/
Lib/
idlelib/
idle_test/
test_search.py
       1  "Test search, coverage 69%."
       2  
       3  from idlelib import search
       4  import unittest
       5  from test.support import requires
       6  requires('gui')
       7  from tkinter import Tk, Text, BooleanVar
       8  from idlelib import searchengine
       9  
      10  # Does not currently test the event handler wrappers.
      11  # A usage test should simulate clicks and check highlighting.
      12  # Tests need to be coordinated with SearchDialogBase tests
      13  # to avoid duplication.
      14  
      15  
      16  class ESC[4;38;5;81mSearchDialogTest(ESC[4;38;5;149munittestESC[4;38;5;149m.ESC[4;38;5;149mTestCase):
      17  
      18      @classmethod
      19      def setUpClass(cls):
      20          cls.root = Tk()
      21  
      22      @classmethod
      23      def tearDownClass(cls):
      24          cls.root.destroy()
      25          del cls.root
      26  
      27      def setUp(self):
      28          self.engine = searchengine.SearchEngine(self.root)
      29          self.dialog = search.SearchDialog(self.root, self.engine)
      30          self.dialog.bell = lambda: None
      31          self.text = Text(self.root)
      32          self.text.insert('1.0', 'Hello World!')
      33  
      34      def test_find_again(self):
      35          # Search for various expressions
      36          text = self.text
      37  
      38          self.engine.setpat('')
      39          self.assertFalse(self.dialog.find_again(text))
      40          self.dialog.bell = lambda: None
      41  
      42          self.engine.setpat('Hello')
      43          self.assertTrue(self.dialog.find_again(text))
      44  
      45          self.engine.setpat('Goodbye')
      46          self.assertFalse(self.dialog.find_again(text))
      47  
      48          self.engine.setpat('World!')
      49          self.assertTrue(self.dialog.find_again(text))
      50  
      51          self.engine.setpat('Hello World!')
      52          self.assertTrue(self.dialog.find_again(text))
      53  
      54          # Regular expression
      55          self.engine.revar = BooleanVar(self.root, True)
      56          self.engine.setpat('W[aeiouy]r')
      57          self.assertTrue(self.dialog.find_again(text))
      58  
      59      def test_find_selection(self):
      60          # Select some text and make sure it's found
      61          text = self.text
      62          # Add additional line to find
      63          self.text.insert('2.0', 'Hello World!')
      64  
      65          text.tag_add('sel', '1.0', '1.4')       # Select 'Hello'
      66          self.assertTrue(self.dialog.find_selection(text))
      67  
      68          text.tag_remove('sel', '1.0', 'end')
      69          text.tag_add('sel', '1.6', '1.11')      # Select 'World!'
      70          self.assertTrue(self.dialog.find_selection(text))
      71  
      72          text.tag_remove('sel', '1.0', 'end')
      73          text.tag_add('sel', '1.0', '1.11')      # Select 'Hello World!'
      74          self.assertTrue(self.dialog.find_selection(text))
      75  
      76          # Remove additional line
      77          text.delete('2.0', 'end')
      78  
      79  if __name__ == '__main__':
      80      unittest.main(verbosity=2, exit=2)