class FetchTest(unittest.TestCase): '''Test History.fetch with wrapped tk.Text. ''' @classmethod def setUpClass(cls): requires('gui') cls.root = tk.Tk() def setUp(self): self.text = text = TextWrapper(self.root) text.insert('1.0', ">>> ") text.mark_set('iomark', '1.4') text.mark_gravity('iomark', 'left') self.history = History(text) self.history.history = [line1, line2] @classmethod def tearDownClass(cls): cls.root.destroy() del cls.root def fetch_test(self, reverse, line, prefix, index, *, bell=False): # Perform one fetch as invoked by Alt-N or Alt-P # Test the result. The line test is the most important. # The last two are diagnostic of fetch internals. History = self.history History.fetch(reverse) Equal = self.assertEqual Equal(self.text.get('iomark', 'end-1c'), line) Equal(self.text._bell, bell) if bell: self.text._bell = False Equal(History.prefix, prefix) Equal(History.pointer, index) Equal(self.text.compare("insert", '==', "end-1c"), 1) def test_fetch_prev_cyclic(self): prefix = '' test = self.fetch_test test(True, line2, prefix, 1) test(True, line1, prefix, 0) test(True, prefix, None, None, bell=True) def test_fetch_next_cyclic(self): prefix = '' test = self.fetch_test test(False, line1, prefix, 0) test(False, line2, prefix, 1) test(False, prefix, None, None, bell=True) # Prefix 'a' tests skip line2, which starts with 'b' def test_fetch_prev_prefix(self): prefix = 'a' self.text.insert('iomark', prefix) self.fetch_test(True, line1, prefix, 0) self.fetch_test(True, prefix, None, None, bell=True) def test_fetch_next_prefix(self): prefix = 'a' self.text.insert('iomark', prefix) self.fetch_test(False, line1, prefix, 0) self.fetch_test(False, prefix, None, None, bell=True) def test_fetch_prev_noncyclic(self): prefix = '' self.history.cyclic = False test = self.fetch_test test(True, line2, prefix, 1) test(True, line1, prefix, 0) test(True, line1, prefix, 0, bell=True) def test_fetch_next_noncyclic(self): prefix = '' self.history.cyclic = False test = self.fetch_test test(False, prefix, None, None, bell=True) test(True, line2, prefix, 1) test(False, prefix, None, None, bell=True) test(False, prefix, None, None, bell=True) def test_fetch_cursor_move(self): # Move cursor after fetch self.history.fetch(reverse=True) # initialization self.text.mark_set('insert', 'iomark') self.fetch_test(True, line2, None, None, bell=True) def test_fetch_edit(self): # Edit after fetch self.history.fetch(reverse=True) # initialization self.text.delete('iomark', 'insert', ) self.text.insert('iomark', 'a =') self.fetch_test(True, line1, 'a =', 0) # prefix is reset def test_history_prev_next(self): # Minimally test functions bound to events self.history.history_prev('dummy event') self.assertEqual(self.history.pointer, 1) self.history.history_next('dummy event') self.assertEqual(self.history.pointer, None)
class FetchTest(unittest.TestCase): '''Test History.fetch with wrapped tk.Text. ''' @classmethod def setUpClass(cls): requires('gui') cls.root = tk.Tk() cls.root.withdraw() def setUp(self): self.text = text = TextWrapper(self.root) text.insert('1.0', ">>> ") text.mark_set('iomark', '1.4') text.mark_gravity('iomark', 'left') self.history = History(text) self.history.history = [line1, line2] @classmethod def tearDownClass(cls): cls.root.destroy() del cls.root def fetch_test(self, reverse, line, prefix, index, *, bell=False): # Perform one fetch as invoked by Alt-N or Alt-P # Test the result. The line test is the most important. # The last two are diagnostic of fetch internals. History = self.history History.fetch(reverse) Equal = self.assertEqual Equal(self.text.get('iomark', 'end-1c'), line) Equal(self.text._bell, bell) if bell: self.text._bell = False Equal(History.prefix, prefix) Equal(History.pointer, index) Equal(self.text.compare("insert", '==', "end-1c"), 1) def test_fetch_prev_cyclic(self): prefix = '' test = self.fetch_test test(True, line2, prefix, 1) test(True, line1, prefix, 0) test(True, prefix, None, None, bell=True) def test_fetch_next_cyclic(self): prefix = '' test = self.fetch_test test(False, line1, prefix, 0) test(False, line2, prefix, 1) test(False, prefix, None, None, bell=True) # Prefix 'a' tests skip line2, which starts with 'b' def test_fetch_prev_prefix(self): prefix = 'a' self.text.insert('iomark', prefix) self.fetch_test(True, line1, prefix, 0) self.fetch_test(True, prefix, None, None, bell=True) def test_fetch_next_prefix(self): prefix = 'a' self.text.insert('iomark', prefix) self.fetch_test(False, line1, prefix, 0) self.fetch_test(False, prefix, None, None, bell=True) def test_fetch_prev_noncyclic(self): prefix = '' self.history.cyclic = False test = self.fetch_test test(True, line2, prefix, 1) test(True, line1, prefix, 0) test(True, line1, prefix, 0, bell=True) def test_fetch_next_noncyclic(self): prefix = '' self.history.cyclic = False test = self.fetch_test test(False, prefix, None, None, bell=True) test(True, line2, prefix, 1) test(False, prefix, None, None, bell=True) test(False, prefix, None, None, bell=True) def test_fetch_cursor_move(self): # Move cursor after fetch self.history.fetch(reverse=True) # initialization self.text.mark_set('insert', 'iomark') self.fetch_test(True, line2, None, None, bell=True) def test_fetch_edit(self): # Edit after fetch self.history.fetch(reverse=True) # initialization self.text.delete( 'iomark', 'insert', ) self.text.insert('iomark', 'a =') self.fetch_test(True, line1, 'a =', 0) # prefix is reset def test_history_prev_next(self): # Minimally test functions bound to events self.history.history_prev('dummy event') self.assertEqual(self.history.pointer, 1) self.history.history_next('dummy event') self.assertEqual(self.history.pointer, None)
class FetchTest(unittest.TestCase): """Test History.fetch with wrapped tk.Text. """ @classmethod def setUpClass(cls): requires('gui') cls.root = tk.Tk() cls.root.withdraw() def setUp(self): self.text = text = TextWrapper(self.root) text.insert('1.0', '>>> ') text.mark_set('iomark', '1.4') text.mark_gravity('iomark', 'left') self.history = History(text) self.history.history = [line1, line2] @classmethod def tearDownClass(cls): cls.root.destroy() del cls.root def fetch_test(self, reverse, line, prefix, index, *, bell=False): History = self.history History.fetch(reverse) Equal = self.assertEqual Equal(self.text.get('iomark', 'end-1c'), line) Equal(self.text._bell, bell) if bell: self.text._bell = False Equal(History.prefix, prefix) Equal(History.pointer, index) Equal(self.text.compare('insert', '==', 'end-1c'), 1) def test_fetch_prev_cyclic(self): prefix = '' test = self.fetch_test test(True, line2, prefix, 1) test(True, line1, prefix, 0) test(True, prefix, None, None, bell=True) def test_fetch_next_cyclic(self): prefix = '' test = self.fetch_test test(False, line1, prefix, 0) test(False, line2, prefix, 1) test(False, prefix, None, None, bell=True) def test_fetch_prev_prefix(self): prefix = 'a' self.text.insert('iomark', prefix) self.fetch_test(True, line1, prefix, 0) self.fetch_test(True, prefix, None, None, bell=True) def test_fetch_next_prefix(self): prefix = 'a' self.text.insert('iomark', prefix) self.fetch_test(False, line1, prefix, 0) self.fetch_test(False, prefix, None, None, bell=True) def test_fetch_prev_noncyclic(self): prefix = '' self.history.cyclic = False test = self.fetch_test test(True, line2, prefix, 1) test(True, line1, prefix, 0) test(True, line1, prefix, 0, bell=True) def test_fetch_next_noncyclic(self): prefix = '' self.history.cyclic = False test = self.fetch_test test(False, prefix, None, None, bell=True) test(True, line2, prefix, 1) test(False, prefix, None, None, bell=True) test(False, prefix, None, None, bell=True) def test_fetch_cursor_move(self): self.history.fetch(reverse=True) self.text.mark_set('insert', 'iomark') self.fetch_test(True, line2, None, None, bell=True) def test_fetch_edit(self): self.history.fetch(reverse=True) self.text.delete('iomark', 'insert') self.text.insert('iomark', 'a =') self.fetch_test(True, line1, 'a =', 0) def test_history_prev_next(self): self.history.history_prev('dummy event') self.assertEqual(self.history.pointer, 1) self.history.history_next('dummy event') self.assertEqual(self.history.pointer, None)