Index: tools/telemetry/third_party/rope/ropetest/refactor/usefunctiontest.py |
diff --git a/tools/telemetry/third_party/rope/ropetest/refactor/usefunctiontest.py b/tools/telemetry/third_party/rope/ropetest/refactor/usefunctiontest.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a6eada009c2b6a946afa79ceeb77e66bfe2c3f9d |
--- /dev/null |
+++ b/tools/telemetry/third_party/rope/ropetest/refactor/usefunctiontest.py |
@@ -0,0 +1,125 @@ |
+try: |
+ import unittest2 as unittest |
+except ImportError: |
+ import unittest |
+ |
+from rope.base import exceptions |
+from ropetest import testutils |
+from rope.refactor.usefunction import UseFunction |
+ |
+ |
+class UseFunctionTest(unittest.TestCase): |
+ |
+ def setUp(self): |
+ super(UseFunctionTest, self).setUp() |
+ self.project = testutils.sample_project() |
+ self.mod1 = testutils.create_module(self.project, 'mod1') |
+ self.mod2 = testutils.create_module(self.project, 'mod2') |
+ |
+ def tearDown(self): |
+ testutils.remove_project(self.project) |
+ super(UseFunctionTest, self).tearDown() |
+ |
+ def test_simple_case(self): |
+ code = 'def f():\n pass\n' |
+ self.mod1.write(code) |
+ user = UseFunction(self.project, self.mod1, code.rindex('f')) |
+ self.project.do(user.get_changes()) |
+ self.assertEquals(code, self.mod1.read()) |
+ |
+ def test_simple_function(self): |
+ code = 'def f(p):\n print(p)\nprint(1)\n' |
+ self.mod1.write(code) |
+ user = UseFunction(self.project, self.mod1, code.rindex('f')) |
+ self.project.do(user.get_changes()) |
+ self.assertEquals('def f(p):\n print(p)\nf(1)\n', |
+ self.mod1.read()) |
+ |
+ def test_simple_function2(self): |
+ code = 'def f(p):\n print(p + 1)\nprint(1 + 1)\n' |
+ self.mod1.write(code) |
+ user = UseFunction(self.project, self.mod1, code.rindex('f')) |
+ self.project.do(user.get_changes()) |
+ self.assertEquals('def f(p):\n print(p + 1)\nf(1)\n', |
+ self.mod1.read()) |
+ |
+ def test_functions_with_multiple_statements(self): |
+ code = 'def f(p):\n r = p + 1\n print(r)\nr = 2 + 1\nprint(r)\n' |
+ self.mod1.write(code) |
+ user = UseFunction(self.project, self.mod1, code.rindex('f')) |
+ self.project.do(user.get_changes()) |
+ self.assertEquals('def f(p):\n r = p + 1\n print(r)\nf(2)\n', |
+ self.mod1.read()) |
+ |
+ def test_returning(self): |
+ code = 'def f(p):\n return p + 1\nr = 2 + 1\nprint(r)\n' |
+ self.mod1.write(code) |
+ user = UseFunction(self.project, self.mod1, code.rindex('f')) |
+ self.project.do(user.get_changes()) |
+ self.assertEquals( |
+ 'def f(p):\n return p + 1\nr = f(2)\nprint(r)\n', |
+ self.mod1.read()) |
+ |
+ def test_returning_a_single_expression(self): |
+ code = 'def f(p):\n return p + 1\nprint(2 + 1)\n' |
+ self.mod1.write(code) |
+ user = UseFunction(self.project, self.mod1, code.rindex('f')) |
+ self.project.do(user.get_changes()) |
+ self.assertEquals( |
+ 'def f(p):\n return p + 1\nprint(f(2))\n', |
+ self.mod1.read()) |
+ |
+ def test_occurrences_in_other_modules(self): |
+ code = 'def f(p):\n return p + 1\n' |
+ self.mod1.write(code) |
+ user = UseFunction(self.project, self.mod1, code.rindex('f')) |
+ self.mod2.write('print(2 + 1)\n') |
+ self.project.do(user.get_changes()) |
+ self.assertEquals('import mod1\nprint(mod1.f(2))\n', |
+ self.mod2.read()) |
+ |
+ def test_when_performing_on_non_functions(self): |
+ code = 'var = 1\n' |
+ self.mod1.write(code) |
+ with self.assertRaises(exceptions.RefactoringError): |
+ UseFunction(self.project, self.mod1, code.rindex('var')) |
+ |
+ def test_differing_in_the_inner_temp_names(self): |
+ code = 'def f(p):\n a = p + 1\n print(a)\nb = 2 + 1\nprint(b)\n' |
+ self.mod1.write(code) |
+ user = UseFunction(self.project, self.mod1, code.rindex('f')) |
+ self.project.do(user.get_changes()) |
+ self.assertEquals('def f(p):\n a = p + 1\n print(a)\nf(2)\n', |
+ self.mod1.read()) |
+ |
+ # TODO: probably new options should be added to restructure |
+ def xxx_test_being_a_bit_more_intelligent_when_returning_assigneds(self): |
+ code = 'def f(p):\n a = p + 1\n return a\n'\ |
+ 'var = 2 + 1\nprint(var)\n' |
+ self.mod1.write(code) |
+ user = UseFunction(self.project, self.mod1, code.rindex('f')) |
+ self.project.do(user.get_changes()) |
+ self.assertEquals('def f(p):\n a = p + 1\n return a\n' |
+ 'var = f(p)\nprint(var)\n', self.mod1.read()) |
+ |
+ def test_exception_when_performing_a_function_with_yield(self): |
+ code = 'def func():\n yield 1\n' |
+ self.mod1.write(code) |
+ with self.assertRaises(exceptions.RefactoringError): |
+ UseFunction(self.project, self.mod1, code.index('func')) |
+ |
+ def test_exception_when_performing_a_function_two_returns(self): |
+ code = 'def func():\n return 1\n return 2\n' |
+ self.mod1.write(code) |
+ with self.assertRaises(exceptions.RefactoringError): |
+ UseFunction(self.project, self.mod1, code.index('func')) |
+ |
+ def test_exception_when_returns_is_not_the_last_statement(self): |
+ code = 'def func():\n return 2\n a = 1\n' |
+ self.mod1.write(code) |
+ with self.assertRaises(exceptions.RefactoringError): |
+ UseFunction(self.project, self.mod1, code.index('func')) |
+ |
+ |
+if __name__ == '__main__': |
+ unittest.main() |