1 '''Test the functions and main class method of textView.py.''' 2 3 import unittest 4 import os 5 from test.test_support import requires 6 from Tkinter import Tk 7 from idlelib import textView as tv 8 from idlelib.idle_test.mock_idle import Func 9 from idlelib.idle_test.mock_tk import Mbox 10 11 12 class TV(tv.TextViewer): # Use in TextViewTest 13 transient = Func() 14 grab_set = Func() 15 wait_window = Func() 16 17 class textviewClassTest(unittest.TestCase): 18 19 @classmethod 20 def setUpClass(cls): 21 requires('gui') 22 cls.root = Tk() 23 cls.root.withdraw() 24 25 @classmethod 26 def tearDownClass(cls): 27 cls.root.destroy() 28 del cls.root 29 30 def setUp(self): 31 TV.transient.__init__() 32 TV.grab_set.__init__() 33 TV.wait_window.__init__() 34 35 def test_init_modal(self): 36 view = TV(self.root, 'Title', 'test text') 37 self.assertTrue(TV.transient.called) 38 self.assertTrue(TV.grab_set.called) 39 self.assertTrue(TV.wait_window.called) 40 view.Ok() 41 42 def test_init_nonmodal(self): 43 view = TV(self.root, 'Title', 'test text', modal=False) 44 self.assertFalse(TV.transient.called) 45 self.assertFalse(TV.grab_set.called) 46 self.assertFalse(TV.wait_window.called) 47 view.Ok() 48 49 def test_ok(self): 50 view = TV(self.root, 'Title', 'test text', modal=False) 51 view.destroy = Func() 52 view.Ok() 53 self.assertTrue(view.destroy.called) 54 del view.destroy # Unmask the real function. 55 view.destroy() 56 57 58 class ViewFunctionTest(unittest.TestCase): 59 60 @classmethod 61 def setUpClass(cls): 62 requires('gui') 63 cls.root = Tk() 64 cls.root.withdraw() 65 cls.orig_mbox = tv.tkMessageBox 66 tv.tkMessageBox = Mbox 67 68 @classmethod 69 def tearDownClass(cls): 70 cls.root.destroy() 71 del cls.root 72 tv.tkMessageBox = cls.orig_mbox 73 del cls.orig_mbox 74 75 def test_view_text(self): 76 # If modal True, get tkinter error 'can't invoke "event" command'. 77 view = tv.view_text(self.root, 'Title', 'test text', modal=False) 78 self.assertIsInstance(view, tv.TextViewer) 79 view.Ok() 80 81 def test_view_file(self): 82 test_dir = os.path.dirname(__file__) 83 testfile = os.path.join(test_dir, 'test_textview.py') 84 view = tv.view_file(self.root, 'Title', testfile, modal=False) 85 self.assertIsInstance(view, tv.TextViewer) 86 self.assertIn('Test', view.textView.get('1.0', '1.end')) 87 view.Ok() 88 89 # Mock messagebox will be used; view_file will return None. 90 testfile = os.path.join(test_dir, '../notthere.py') 91 view = tv.view_file(self.root, 'Title', testfile, modal=False) 92 self.assertIsNone(view) 93 94 95 if __name__ == '__main__': 96 unittest.main(verbosity=2) 97