diff options
Diffstat (limited to 'Lib/idlelib/idle_test/test_browser.py')
-rw-r--r-- | Lib/idlelib/idle_test/test_browser.py | 248 |
1 files changed, 0 insertions, 248 deletions
diff --git a/Lib/idlelib/idle_test/test_browser.py b/Lib/idlelib/idle_test/test_browser.py deleted file mode 100644 index 25d6dc6..0000000 --- a/Lib/idlelib/idle_test/test_browser.py +++ /dev/null @@ -1,248 +0,0 @@ -"Test browser, coverage 90%." - -from idlelib import browser -from test.support import requires -import unittest -from unittest import mock -from idlelib.idle_test.mock_idle import Func - -from collections import deque -import os.path -import pyclbr -from tkinter import Tk - -from idlelib.tree import TreeNode - - -class ModuleBrowserTest(unittest.TestCase): - - @classmethod - def setUpClass(cls): - requires('gui') - cls.root = Tk() - cls.root.withdraw() - cls.mb = browser.ModuleBrowser(cls.root, __file__, _utest=True) - - @classmethod - def tearDownClass(cls): - cls.mb.close() - cls.root.update_idletasks() - cls.root.destroy() - del cls.root, cls.mb - - def test_init(self): - mb = self.mb - eq = self.assertEqual - eq(mb.path, __file__) - eq(pyclbr._modules, {}) - self.assertIsInstance(mb.node, TreeNode) - self.assertIsNotNone(browser.file_open) - - def test_settitle(self): - mb = self.mb - self.assertIn(os.path.basename(__file__), mb.top.title()) - self.assertEqual(mb.top.iconname(), 'Module Browser') - - def test_rootnode(self): - mb = self.mb - rn = mb.rootnode() - self.assertIsInstance(rn, browser.ModuleBrowserTreeItem) - - def test_close(self): - mb = self.mb - mb.top.destroy = Func() - mb.node.destroy = Func() - mb.close() - self.assertTrue(mb.top.destroy.called) - self.assertTrue(mb.node.destroy.called) - del mb.top.destroy, mb.node.destroy - - -# Nested tree same as in test_pyclbr.py except for supers on C0. C1. -mb = pyclbr -module, fname = 'test', 'test.py' -C0 = mb.Class(module, 'C0', ['base'], fname, 1) -F1 = mb._nest_function(C0, 'F1', 3) -C1 = mb._nest_class(C0, 'C1', 6, ['']) -C2 = mb._nest_class(C1, 'C2', 7) -F3 = mb._nest_function(C2, 'F3', 9) -f0 = mb.Function(module, 'f0', fname, 11) -f1 = mb._nest_function(f0, 'f1', 12) -f2 = mb._nest_function(f1, 'f2', 13) -c1 = mb._nest_class(f0, 'c1', 15) -mock_pyclbr_tree = {'C0': C0, 'f0': f0} - -# Adjust C0.name, C1.name so tests do not depend on order. -browser.transform_children(mock_pyclbr_tree, 'test') # C0(base) -browser.transform_children(C0.children) # C1() - -# The class below checks that the calls above are correct -# and that duplicate calls have no effect. - - -class TransformChildrenTest(unittest.TestCase): - - def test_transform_module_children(self): - eq = self.assertEqual - transform = browser.transform_children - # Parameter matches tree module. - tcl = list(transform(mock_pyclbr_tree, 'test')) - eq(tcl, [C0, f0]) - eq(tcl[0].name, 'C0(base)') - eq(tcl[1].name, 'f0') - # Check that second call does not change suffix. - tcl = list(transform(mock_pyclbr_tree, 'test')) - eq(tcl[0].name, 'C0(base)') - # Nothing to traverse if parameter name isn't same as tree module. - tcl = list(transform(mock_pyclbr_tree, 'different name')) - eq(tcl, []) - - def test_transform_node_children(self): - eq = self.assertEqual - transform = browser.transform_children - # Class with two children, one name altered. - tcl = list(transform(C0.children)) - eq(tcl, [F1, C1]) - eq(tcl[0].name, 'F1') - eq(tcl[1].name, 'C1()') - tcl = list(transform(C0.children)) - eq(tcl[1].name, 'C1()') - # Function with two children. - eq(list(transform(f0.children)), [f1, c1]) - - -class ModuleBrowserTreeItemTest(unittest.TestCase): - - @classmethod - def setUpClass(cls): - cls.mbt = browser.ModuleBrowserTreeItem(fname) - - def test_init(self): - self.assertEqual(self.mbt.file, fname) - - def test_gettext(self): - self.assertEqual(self.mbt.GetText(), fname) - - def test_geticonname(self): - self.assertEqual(self.mbt.GetIconName(), 'python') - - def test_isexpandable(self): - self.assertTrue(self.mbt.IsExpandable()) - - def test_listchildren(self): - save_rex = browser.pyclbr.readmodule_ex - save_tc = browser.transform_children - browser.pyclbr.readmodule_ex = Func(result=mock_pyclbr_tree) - browser.transform_children = Func(result=[f0, C0]) - try: - self.assertEqual(self.mbt.listchildren(), [f0, C0]) - finally: - browser.pyclbr.readmodule_ex = save_rex - browser.transform_children = save_tc - - def test_getsublist(self): - mbt = self.mbt - mbt.listchildren = Func(result=[f0, C0]) - sub0, sub1 = mbt.GetSubList() - del mbt.listchildren - self.assertIsInstance(sub0, browser.ChildBrowserTreeItem) - self.assertIsInstance(sub1, browser.ChildBrowserTreeItem) - self.assertEqual(sub0.name, 'f0') - self.assertEqual(sub1.name, 'C0(base)') - - @mock.patch('idlelib.browser.file_open') - def test_ondoubleclick(self, fopen): - mbt = self.mbt - - with mock.patch('os.path.exists', return_value=False): - mbt.OnDoubleClick() - fopen.assert_not_called() - - with mock.patch('os.path.exists', return_value=True): - mbt.OnDoubleClick() - fopen.assert_called() - fopen.called_with(fname) - - -class ChildBrowserTreeItemTest(unittest.TestCase): - - @classmethod - def setUpClass(cls): - CBT = browser.ChildBrowserTreeItem - cls.cbt_f1 = CBT(f1) - cls.cbt_C1 = CBT(C1) - cls.cbt_F1 = CBT(F1) - - @classmethod - def tearDownClass(cls): - del cls.cbt_C1, cls.cbt_f1, cls.cbt_F1 - - def test_init(self): - eq = self.assertEqual - eq(self.cbt_C1.name, 'C1()') - self.assertFalse(self.cbt_C1.isfunction) - eq(self.cbt_f1.name, 'f1') - self.assertTrue(self.cbt_f1.isfunction) - - def test_gettext(self): - self.assertEqual(self.cbt_C1.GetText(), 'class C1()') - self.assertEqual(self.cbt_f1.GetText(), 'def f1(...)') - - def test_geticonname(self): - self.assertEqual(self.cbt_C1.GetIconName(), 'folder') - self.assertEqual(self.cbt_f1.GetIconName(), 'python') - - def test_isexpandable(self): - self.assertTrue(self.cbt_C1.IsExpandable()) - self.assertTrue(self.cbt_f1.IsExpandable()) - self.assertFalse(self.cbt_F1.IsExpandable()) - - def test_getsublist(self): - eq = self.assertEqual - CBT = browser.ChildBrowserTreeItem - - f1sublist = self.cbt_f1.GetSubList() - self.assertIsInstance(f1sublist[0], CBT) - eq(len(f1sublist), 1) - eq(f1sublist[0].name, 'f2') - - eq(self.cbt_F1.GetSubList(), []) - - @mock.patch('idlelib.browser.file_open') - def test_ondoubleclick(self, fopen): - goto = fopen.return_value.gotoline = mock.Mock() - self.cbt_F1.OnDoubleClick() - fopen.assert_called() - goto.assert_called() - goto.assert_called_with(self.cbt_F1.obj.lineno) - # Failure test would have to raise OSError or AttributeError. - - -class NestedChildrenTest(unittest.TestCase): - "Test that all the nodes in a nested tree are added to the BrowserTree." - - def test_nested(self): - queue = deque() - actual_names = [] - # The tree items are processed in breadth first order. - # Verify that processing each sublist hits every node and - # in the right order. - expected_names = ['f0', 'C0(base)', - 'f1', 'c1', 'F1', 'C1()', - 'f2', 'C2', - 'F3'] - CBT = browser.ChildBrowserTreeItem - queue.extend((CBT(f0), CBT(C0))) - while queue: - cb = queue.popleft() - sublist = cb.GetSubList() - queue.extend(sublist) - self.assertIn(cb.name, cb.GetText()) - self.assertIn(cb.GetIconName(), ('python', 'folder')) - self.assertIs(cb.IsExpandable(), sublist != []) - actual_names.append(cb.name) - self.assertEqual(actual_names, expected_names) - - -if __name__ == '__main__': - unittest.main(verbosity=2) |