OLD | NEW |
(Empty) | |
| 1 import unittest |
| 2 |
| 3 from rope.base import ast |
| 4 from rope.refactor import suites |
| 5 |
| 6 |
| 7 class SuiteTest(unittest.TestCase): |
| 8 |
| 9 def setUp(self): |
| 10 super(SuiteTest, self).setUp() |
| 11 |
| 12 def tearDown(self): |
| 13 super(SuiteTest, self).tearDown() |
| 14 |
| 15 def test_trivial_case(self): |
| 16 root = source_suite_tree('') |
| 17 self.assertEquals(1, root.get_start()) |
| 18 self.assertEquals(0, len(root.get_children())) |
| 19 |
| 20 def test_simple_ifs(self): |
| 21 root = source_suite_tree('if True:\n pass') |
| 22 self.assertEquals(1, len(root.get_children())) |
| 23 |
| 24 def test_simple_else(self): |
| 25 root = source_suite_tree( |
| 26 'if True:\n pass\nelse:\n pass\n') |
| 27 self.assertEquals(2, len(root.get_children())) |
| 28 self.assertEquals(1, root.get_children()[1].get_start()) |
| 29 |
| 30 def test_for(self): |
| 31 root = source_suite_tree( |
| 32 '\nfor i in range(10):\n pass\nelse:\n pass\n') |
| 33 self.assertEquals(2, len(root.get_children())) |
| 34 self.assertEquals(2, root.get_children()[1].get_start()) |
| 35 |
| 36 def test_while(self): |
| 37 root = source_suite_tree( |
| 38 'while True:\n pass\n') |
| 39 self.assertEquals(1, len(root.get_children())) |
| 40 self.assertEquals(1, root.get_children()[0].get_start()) |
| 41 |
| 42 def test_with(self): |
| 43 root = source_suite_tree( |
| 44 'from __future__ import with_statement\nwith file(x): pass\n') |
| 45 self.assertEquals(1, len(root.get_children())) |
| 46 self.assertEquals(2, root.get_children()[0].get_start()) |
| 47 |
| 48 def test_try_finally(self): |
| 49 root = source_suite_tree( |
| 50 'try:\n pass\nfinally:\n pass\n') |
| 51 self.assertEquals(2, len(root.get_children())) |
| 52 self.assertEquals(1, root.get_children()[0].get_start()) |
| 53 |
| 54 def test_try_except(self): |
| 55 root = source_suite_tree( |
| 56 'try:\n pass\nexcept:\n pass\nelse:\n pass\n') |
| 57 self.assertEquals(3, len(root.get_children())) |
| 58 self.assertEquals(1, root.get_children()[2].get_start()) |
| 59 |
| 60 def test_try_except_finally(self): |
| 61 root = source_suite_tree( |
| 62 'try:\n pass\nexcept:\n pass\nfinally:\n pass\n') |
| 63 self.assertEquals(3, len(root.get_children())) |
| 64 self.assertEquals(1, root.get_children()[2].get_start()) |
| 65 |
| 66 def test_local_start_and_end(self): |
| 67 root = source_suite_tree('if True:\n pass\nelse:\n pass\n') |
| 68 self.assertEquals(1, root.local_start()) |
| 69 self.assertEquals(4, root.local_end()) |
| 70 if_suite = root.get_children()[0] |
| 71 self.assertEquals(2, if_suite.local_start()) |
| 72 self.assertEquals(2, if_suite.local_end()) |
| 73 else_suite = root.get_children()[1] |
| 74 self.assertEquals(4, else_suite.local_start()) |
| 75 self.assertEquals(4, else_suite.local_end()) |
| 76 |
| 77 def test_find_suite(self): |
| 78 root = source_suite_tree('\n') |
| 79 self.assertEquals(root, root.find_suite(1)) |
| 80 |
| 81 def test_find_suite_for_ifs(self): |
| 82 root = source_suite_tree('if True:\n pass\n') |
| 83 if_suite = root.get_children()[0] |
| 84 self.assertEquals(if_suite, root.find_suite(2)) |
| 85 |
| 86 def test_find_suite_for_between_suites(self): |
| 87 root = source_suite_tree( |
| 88 'if True:\n pass\nprint(1)\nif True:\n pass\n') |
| 89 if_suite1 = root.get_children()[0] |
| 90 if_suite2 = root.get_children()[1] |
| 91 self.assertEquals(if_suite1, root.find_suite(2)) |
| 92 self.assertEquals(if_suite2, root.find_suite(5)) |
| 93 self.assertEquals(root, root.find_suite(3)) |
| 94 |
| 95 def test_simple_find_visible(self): |
| 96 root = source_suite_tree('a = 1\n') |
| 97 self.assertEquals(1, suites.find_visible_for_suite(root, [1])) |
| 98 |
| 99 def test_simple_find_visible_ifs(self): |
| 100 root = source_suite_tree('\nif True:\n a = 1\n b = 2\n') |
| 101 self.assertEquals(root.find_suite(3), root.find_suite(4)) |
| 102 self.assertEquals(3, suites.find_visible_for_suite(root, [3, 4])) |
| 103 |
| 104 def test_simple_find_visible_for_else(self): |
| 105 root = source_suite_tree('\nif True:\n pass\nelse: pass\n') |
| 106 self.assertEquals(2, suites.find_visible_for_suite(root, [2, 4])) |
| 107 |
| 108 def test_simple_find_visible_for_different_suites(self): |
| 109 root = source_suite_tree('if True:\n pass\na = 1\n' |
| 110 'if False:\n pass\n') |
| 111 self.assertEquals(1, suites.find_visible_for_suite(root, [2, 3])) |
| 112 self.assertEquals(5, suites.find_visible_for_suite(root, [5])) |
| 113 self.assertEquals(1, suites.find_visible_for_suite(root, [2, 5])) |
| 114 |
| 115 def test_not_always_selecting_scope_start(self): |
| 116 root = source_suite_tree( |
| 117 'if True:\n a = 1\n if True:\n pass\n' |
| 118 ' else:\n pass\n') |
| 119 self.assertEquals(3, suites.find_visible_for_suite(root, [4, 6])) |
| 120 self.assertEquals(3, suites.find_visible_for_suite(root, [3, 5])) |
| 121 self.assertEquals(3, suites.find_visible_for_suite(root, [4, 5])) |
| 122 |
| 123 def test_ignoring_functions(self): |
| 124 root = source_suite_tree( |
| 125 'def f():\n pass\na = 1\n') |
| 126 self.assertEquals(3, suites.find_visible_for_suite(root, [2, 3])) |
| 127 |
| 128 def test_ignoring_classes(self): |
| 129 root = source_suite_tree( |
| 130 'a = 1\nclass C():\n pass\n') |
| 131 self.assertEquals(1, suites.find_visible_for_suite(root, [1, 3])) |
| 132 |
| 133 |
| 134 def source_suite_tree(source): |
| 135 return suites.ast_suite_tree(ast.parse(source)) |
| 136 |
| 137 |
| 138 if __name__ == '__main__': |
| 139 unittest.main() |
OLD | NEW |