コード例 #1
0
ファイル: bikefacade.py プロジェクト: unnch/spell-sat
 def extractLocalVariable(self, filename_path, begin_line, begin_col,
                          end_line, end_col, variablename):
     filename_path = self.normalizeFilename(filename_path)
     extractVariable.extractLocalVariable(filename_path,
                                          coords(begin_line, begin_col),
                                          coords(end_line, end_col),
                                          variablename)
コード例 #2
0
    def test_extractsFromFirstBlockOfIfElseStatement(self):
        srcBefore=trimLines("""
        def foo():
            if bah:
                print \"hello1\"
                print \"hello2\"
                
            elif foo:
                pass
        """)
        srcAfter=trimLines("""
        def foo():
            if bah:
                newFunction()
                print \"hello2\"
                
            elif foo:
                pass

        def newFunction():
            print \"hello1\"
        """)
        src = helper(srcBefore, coords(3, 0),
                         coords(4, 0), "newFunction")
        self.assertEqual(srcAfter, src)
コード例 #3
0
ファイル: test_extractMethod.py プロジェクト: lebauce/artub
    def test_extractAssignedVariableUsedInOuterForLoop(self):
        srcBefore=trimLines("""
        def foo():
            b = 0
            for a in range(1, 3):
                b = b+1
                while b != 2:
                    print a
                    b += 1
        """)
        srcAfter=trimLines("""
        def foo():
            b = 0
            for a in range(1, 3):
                b = b+1
                while b != 2:
                    b = newFunction(a, b)

        def newFunction(a, b):
            print a
            b += 1
            return b
        """)

        src = helper(srcBefore, coords(6, 0),
                         coords(8, 0), "newFunction")
        self.assertEqual(srcAfter, src)
コード例 #4
0
ファイル: test_extractMethod.py プロジェクト: lebauce/artub
    def test_extractsFromFirstBlockOfIfElseStatement(self):
        srcBefore=trimLines("""
        def foo():
            if bah:
                print \"hello1\"
                print \"hello2\"
                
            elif foo:
                pass
        """)
        srcAfter=trimLines("""
        def foo():
            if bah:
                newFunction()
                print \"hello2\"
                
            elif foo:
                pass

        def newFunction():
            print \"hello1\"
        """)
        src = helper(srcBefore, coords(3, 0),
                         coords(4, 0), "newFunction")
        self.assertEqual(srcAfter, src)
コード例 #5
0
ファイル: test_extractMethod.py プロジェクト: lebauce/artub
    def test_newMethodHasArgumentsForUsedTemporarys(self):

        srcBefore=trimLines("""
        class MyClass:
            def myMethod(self, c): 
                a = something()
                b = somethingelse()
                print a + b + c + d
                print \"hello\"
                dosomethingelse(a, b)
        """)                
        srcAfter=trimLines("""
        class MyClass:
            def myMethod(self, c): 
                a = something()
                b = somethingelse()
                self.newMethod(a, b, c)
                dosomethingelse(a, b)

            def newMethod(self, a, b, c):
                print a + b + c + d
                print \"hello\"
        """)

        src = helper(srcBefore, coords(5, 8), coords(6, 21), "newMethod")
        self.assertEqual(srcAfter, src)
コード例 #6
0
    def test_newMethodHasArgumentsForUsedTemporarys(self):

        srcBefore = trimLines("""
        class MyClass:
            def myMethod(self, c): 
                a = something()
                b = somethingelse()
                print a + b + c + d
                print \"hello\"
                dosomethingelse(a, b)
        """)
        srcAfter = trimLines("""
        class MyClass:
            def myMethod(self, c): 
                a = something()
                b = somethingelse()
                self.newMethod(a, b, c)
                dosomethingelse(a, b)

            def newMethod(self, a, b, c):
                print a + b + c + d
                print \"hello\"
        """)

        src = helper(srcBefore, coords(5, 8), coords(6, 21), "newMethod")
        self.assertEqual(srcAfter, src)
コード例 #7
0
ファイル: bikefacade.py プロジェクト: seciltabur/spell-sat
 def extractLocalVariable(self,filename_path, begin_line, begin_col,
                          end_line, end_col, variablename):
     filename_path = self.normalizeFilename(filename_path)
     extractVariable.extractLocalVariable(filename_path,
                                          coords(begin_line, begin_col),
                                          coords(end_line, end_col),
                                          variablename)
コード例 #8
0
    def test_extractAssignedVariableUsedInOuterForLoop(self):
        srcBefore = trimLines("""
        def foo():
            b = 0
            for a in range(1, 3):
                b = b+1
                while b != 2:
                    print a
                    b += 1
        """)
        srcAfter = trimLines("""
        def foo():
            b = 0
            for a in range(1, 3):
                b = b+1
                while b != 2:
                    b = newFunction(a, b)

        def newFunction(a, b):
            print a
            b += 1
            return b
        """)

        src = helper(srcBefore, coords(6, 0), coords(8, 0), "newFunction")
        self.assertEqual(srcAfter, src)
コード例 #9
0
 def test_getsTabwidthForFunctionAtRootScope(self):
     src = trimLines("""
     def myFn(self):
         pass
     """)
     sourcenode = writeSourceAndCreateNode(src)
     em = ExtractMethod(sourcenode, coords(2, 0), coords(2, 9), "foobah")
     self.assertEqual(em.getTabwidthOfParentFunction(), 0)
コード例 #10
0
ファイル: bikefacade.py プロジェクト: seciltabur/spell-sat
 def extract(self, filename_path, 
             begin_line, begin_col,
             end_line, end_col, 
             name):
     filename_path = self.normalizeFilename(filename_path)
     extractMethod.extractMethod(filename_path,
                                 coords(begin_line, begin_col), 
                                 coords(end_line, end_col), name)
コード例 #11
0
ファイル: test_extractMethod.py プロジェクト: lebauce/artub
 def test_getsTabwidthForFunctionAtRootScope(self):
     src=trimLines("""
     def myFn(self):
         pass
     """)
     sourcenode = writeSourceAndCreateNode(src)
     em = ExtractMethod(sourcenode, coords(2, 0),
                          coords(2, 9), "foobah")
     self.assertEqual(em.getTabwidthOfParentFunction(), 0)
コード例 #12
0
 def test_getsTabwidthForSimpleMethod(self):
     src = trimLines("""
     class MyClass:
         def myMethod(self):
             pass
     """)
     sourcenode = writeSourceAndCreateNode(src)
     em = ExtractMethod(sourcenode, coords(3, 11), coords(3, 17), "foobah")
     self.assertEqual(em.getTabwidthOfParentFunction(), 4)
コード例 #13
0
ファイル: test_extractMethod.py プロジェクト: lebauce/artub
 def test_getsTabwidthForSimpleMethod(self):
     src=trimLines("""
     class MyClass:
         def myMethod(self):
             pass
     """)
     sourcenode = writeSourceAndCreateNode(src)
     em = ExtractMethod(sourcenode, coords(3, 11),
                          coords(3, 17), "foobah")
     self.assertEqual(em.getTabwidthOfParentFunction(), 4)
コード例 #14
0
 def test_getsSingleLinePassStatementWhenWholeLineIsHighlighted(self):
     src = trimLines("""
     class MyClass:
         def myMethod(self):
             pass
     """)
     sourcenode = writeSourceAndCreateNode(src)
     em = ExtractMethod(sourcenode, coords(3, 0), coords(3, 12), "foobah")
     em.getRegionToBuffer()
     self.assertEqual(len(em.extractedLines), 1)
     self.assertEqual(em.extractedLines[0], "pass\n")
コード例 #15
0
    def test_doesntBarfWhenEncountersMethodCalledOnCreatedObj(self):
        srcBefore = trimLines(r"""
        results = QueryEngine(q).foo()
        """)
        srcAfter = trimLines(r"""
        newFunction()

        def newFunction():
            results = QueryEngine(q).foo()
        """)
        src = helper(srcBefore, coords(1, 0), coords(2, 0), "newFunction")
        self.assertEqual(srcAfter, src)
コード例 #16
0
ファイル: test_extractMethod.py プロジェクト: lebauce/artub
 def test_getsSingleLinePassStatementWhenWholeLineIsHighlighted(self):
     src=trimLines("""
     class MyClass:
         def myMethod(self):
             pass
     """)
     sourcenode = writeSourceAndCreateNode(src)
     em = ExtractMethod(sourcenode, coords(3, 0),
                          coords(3, 12), "foobah")
     em.getRegionToBuffer()
     self.assertEqual(len(em.extractedLines), 1)
     self.assertEqual(em.extractedLines[0], "pass\n")
コード例 #17
0
 def test_getsHighlightedSingleLinePassStatement(self):
     src=trimLines("""
     class MyClass:
         def myMethod(self):
             pass
     """)
     sourcenode = createAST(src)
     em = ExtractMethod(sourcenode, coords(3, 8),
                          coords(3, 12), "foobah")
     em.getRegionToBuffer()
     self.assertEqual(len(em.extractedLines), 1)
     self.assertEqual(em.extractedLines[0], "pass\n")
コード例 #18
0
ファイル: test_extractMethod.py プロジェクト: lebauce/artub
    def test_doesntBarfWhenEncountersMethodCalledOnCreatedObj(self):
        srcBefore=trimLines(r"""
        results = QueryEngine(q).foo()
        """)
        srcAfter=trimLines(r"""
        newFunction()

        def newFunction():
            results = QueryEngine(q).foo()
        """)
        src = helper(srcBefore, coords(1, 0),
                         coords(2, 0), "newFunction")
        self.assertEqual(srcAfter, src)
コード例 #19
0
 def test_getsHighlightedSubstringOfLine(self):
     src = trimLines("""
     class MyClass:
         def myMethod(self):
             if a == 3:
                 pass
     """)
     region = trimLines("""
     a == 3
     """)
     sourcenode = writeSourceAndCreateNode(src)
     em = ExtractMethod(sourcenode, coords(3, 11), coords(3, 17), "foobah")
     em.getRegionToBuffer()
     self.assertEqual(em.extractedLines, region.splitlines(1))
コード例 #20
0
    def test_worksIfNoLinesBeforeExtractedCode(self):
        srcBefore = trimLines(r"""
        print a + 2
        f(b)	
        """)
        srcAfter = trimLines(r"""
        newFunction()

        def newFunction():
            print a + 2
            f(b)	
        """)
        src = helper(srcBefore, coords(1, 0), coords(2, 4), "newFunction")
        self.assertEqual(srcAfter, src)
コード例 #21
0
 def test_getsMultiLineRegionWhenJustRegionIsHighlighted(self):
     src = trimLines("""
     class MyClass:
         def myMethod(self):
             print 'hello'
             pass
     """)
     region = trimLines("""
     print 'hello'
     pass
     """)
     sourcenode = writeSourceAndCreateNode(src)
     em = ExtractMethod(sourcenode, coords(3, 8), coords(4, 12), "foobah")
     em.getRegionToBuffer()
     self.assertEqual(em.extractedLines, region.splitlines(1))
コード例 #22
0
ファイル: test_extractMethod.py プロジェクト: lebauce/artub
    def test_worksIfNoLinesBeforeExtractedCode(self):
        srcBefore=trimLines(r"""
        print a + 2
        f(b)	
        """)
        srcAfter=trimLines(r"""
        newFunction()

        def newFunction():
            print a + 2
            f(b)	
        """)
        src = helper(srcBefore, coords(1, 0),
                         coords(2, 4), "newFunction")
        self.assertEqual(srcAfter, src)
コード例 #23
0
ファイル: test_extractMethod.py プロジェクト: lebauce/artub
    def test_extractsPassWhenFunctionAllOnOneLine(self):
        srcBefore=trimLines("""
        class MyClass:
            def myMethod(self): pass # comment
        """)

        srcAfter=trimLines("""
        class MyClass:
            def myMethod(self): self.newMethod() # comment

            def newMethod(self):
                pass
        """)
        src = helper(srcBefore, coords(2, 24), coords(2, 28),"newMethod")
        self.assertEqual(src,srcAfter)
コード例 #24
0
    def test_extractsQueryWhenFunctionAllOnOneLine(self):
        srcBefore = trimLines("""
        class MyClass:
            def myMethod(self, a): print a # comment
        """)

        srcAfter = trimLines("""
        class MyClass:
            def myMethod(self, a): self.newMethod(a) # comment

            def newMethod(self, a):
                print a
        """)
        src = helper(srcBefore, coords(2, 27), coords(2, 34), "newMethod")
        self.assertEqual(srcAfter, src)
コード例 #25
0
    def test_extractsPassWhenFunctionAllOnOneLine(self):
        srcBefore = trimLines("""
        class MyClass:
            def myMethod(self): pass # comment
        """)

        srcAfter = trimLines("""
        class MyClass:
            def myMethod(self): self.newMethod() # comment

            def newMethod(self):
                pass
        """)
        src = helper(srcBefore, coords(2, 24), coords(2, 28), "newMethod")
        self.assertEqual(src, srcAfter)
コード例 #26
0
ファイル: test_extractMethod.py プロジェクト: lebauce/artub
 def test_getsHighlightedSubstringOfLine(self):
     src=trimLines("""
     class MyClass:
         def myMethod(self):
             if a == 3:
                 pass
     """)
     region=trimLines("""
     a == 3
     """)
     sourcenode = writeSourceAndCreateNode(src)
     em = ExtractMethod(sourcenode, coords(3, 11),
                          coords(3, 17), "foobah")
     em.getRegionToBuffer()
     self.assertEqual(em.extractedLines, region.splitlines(1))
コード例 #27
0
ファイル: test_extractMethod.py プロジェクト: lebauce/artub
    def test_extractsQueryWhenFunctionAllOnOneLine(self):
        srcBefore=trimLines("""
        class MyClass:
            def myMethod(self, a): print a # comment
        """)

        srcAfter=trimLines("""
        class MyClass:
            def myMethod(self, a): self.newMethod(a) # comment

            def newMethod(self, a):
                print a
        """)
        src = helper(srcBefore, coords(2, 27), coords(2, 34), "newMethod")
        self.assertEqual(srcAfter, src)
コード例 #28
0
ファイル: test_extractMethod.py プロジェクト: lebauce/artub
    def test_extractsPass(self):
        srcBefore=trimLines("""
        class MyClass:
            def myMethod(self):
                pass
        """)
        srcAfter=trimLines("""
        class MyClass:
            def myMethod(self):
                self.newMethod()

            def newMethod(self):
                pass
        """)
        src = helper(srcBefore, coords(3, 8), coords(3, 12), "newMethod")
        self.assertEqual(src,srcAfter)
コード例 #29
0
    def test_extractsPass(self):
        srcBefore = trimLines("""
        class MyClass:
            def myMethod(self):
                pass
        """)
        srcAfter = trimLines("""
        class MyClass:
            def myMethod(self):
                self.newMethod()

            def newMethod(self):
                pass
        """)
        src = helper(srcBefore, coords(3, 8), coords(3, 12), "newMethod")
        self.assertEqual(src, srcAfter)
コード例 #30
0
    def test_extractsConditionalFromExpression(self):
        srcBefore = trimLines("""
        def foo():
            if 123+3:
                print aoue
        """)
        srcAfter = trimLines("""
        def foo():
            if newFunction():
                print aoue

        def newFunction():
            return 123+3
        """)
        src = helper(srcBefore, coords(2, 7), coords(2, 12), "newFunction")
        self.assertEqual(srcAfter, src)
コード例 #31
0
    def test_extractsPassWhenSelectionCoordsAreReversed(self):
        srcBefore = trimLines("""
        class MyClass:
            def myMethod(self):
                pass
        """)
        srcAfter = trimLines("""
        class MyClass:
            def myMethod(self):
                self.newMethod()

            def newMethod(self):
                pass
        """)
        src = helper(srcBefore, coords(3, 12), coords(3, 8), "newMethod")
        self.assertEqual(srcAfter, src)
コード例 #32
0
    def test_doesntHaveToBeInsideAFunction(self):
        srcBefore = trimLines(r"""
        a = 1
        print a + 2
        f(b)	
        """)
        srcAfter = trimLines(r"""
        a = 1
        newFunction(a)

        def newFunction(a):
            print a + 2
            f(b)	
        """)
        src = helper(srcBefore, coords(2, 0), coords(3, 4), "newFunction")
        self.assertEqual(srcAfter, src)
コード例 #33
0
ファイル: test_extractMethod.py プロジェクト: lebauce/artub
    def test_extractsPassWhenSelectionCoordsAreReversed(self):
        srcBefore=trimLines("""
        class MyClass:
            def myMethod(self):
                pass
        """)
        srcAfter=trimLines("""
        class MyClass:
            def myMethod(self):
                self.newMethod()

            def newMethod(self):
                pass
        """)
        src = helper(srcBefore, coords(3, 12), coords(3, 8), "newMethod")
        self.assertEqual(srcAfter, src)
コード例 #34
0
ファイル: test_extractMethod.py プロジェクト: lebauce/artub
 def test_getsMultiLineRegionWhenJustRegionIsHighlighted(self):
     src=trimLines("""
     class MyClass:
         def myMethod(self):
             print 'hello'
             pass
     """)
     region=trimLines("""
     print 'hello'
     pass
     """)
     sourcenode = writeSourceAndCreateNode(src)
     em = ExtractMethod(sourcenode, coords(3, 8),
                          coords(4, 12), "foobah")
     em.getRegionToBuffer()
     self.assertEqual(em.extractedLines, region.splitlines(1))
コード例 #35
0
    def test_extractsAssignToAttribute(self):
        srcBefore = trimLines("""
        def simulateLoad(path):
            item = foo()
            item.decl = line
        """)
        srcAfter = trimLines("""
        def simulateLoad(path):
            item = foo()
            newFunction(item)

        def newFunction(item):
            item.decl = line
        """)

        src = helper(srcBefore, coords(3, 0), coords(4, 0), "newFunction")
        self.assertEqual(srcAfter, src)
コード例 #36
0
ファイル: test_extractMethod.py プロジェクト: lebauce/artub
    def test_doesntHaveToBeInsideAFunction(self):
        srcBefore=trimLines(r"""
        a = 1
        print a + 2
        f(b)	
        """)
        srcAfter=trimLines(r"""
        a = 1
        newFunction(a)

        def newFunction(a):
            print a + 2
            f(b)	
        """)
        src = helper(srcBefore, coords(2, 0),
                         coords(3, 4), "newFunction")
        self.assertEqual(srcAfter, src)
コード例 #37
0
    def test_extractsForLoopUsingLoopVariable(self):
        srcBefore = trimLines("""
        def foo():
            for i in range(1, 3):
                print i
        """)
        srcAfter = trimLines("""
        def foo():
            for i in range(1, 3):
                newFunction(i)

        def newFunction(i):
            print i
        """)

        src = helper(srcBefore, coords(3, 0), coords(4, 0), "newFunction")
        self.assertEqual(srcAfter, src)
コード例 #38
0
ファイル: test_extractMethod.py プロジェクト: lebauce/artub
    def test_extractsConditionalFromExpression(self):
        srcBefore=trimLines("""
        def foo():
            if 123+3:
                print aoue
        """)
        srcAfter=trimLines("""
        def foo():
            if newFunction():
                print aoue

        def newFunction():
            return 123+3
        """)
        src = helper(srcBefore, coords(2, 7),
                         coords(2, 12), "newFunction")
        self.assertEqual(srcAfter, src)
コード例 #39
0
    def test_getsMultiLineRegionWhenRegionLinesAreHighlighted(self):
        src=trimLines("""
        class MyClass:
            def myMethod(self):
                print 'hello'
                pass

        """)
        region=trimLines("""
        print 'hello'
        pass
        """)
        sourcenode = createAST(src)
        em = ExtractMethod(sourcenode, coords(3, 0),
                             coords(5, 0), "foobah")
        em.getRegionToBuffer()
        self.assertEqual(em.extractedLines, region.splitlines(1))
コード例 #40
0
ファイル: test_extractMethod.py プロジェクト: lebauce/artub
    def test_extractsAssignToAttribute(self):
        srcBefore=trimLines("""
        def simulateLoad(path):
            item = foo()
            item.decl = line
        """)
        srcAfter=trimLines("""
        def simulateLoad(path):
            item = foo()
            newFunction(item)

        def newFunction(item):
            item.decl = line
        """)

        src = helper(srcBefore, coords(3, 0),
                         coords(4, 0), "newFunction")
        self.assertEqual(srcAfter, src)
コード例 #41
0
    def test_extractsPassFromForLoop(self):
        srcBefore = trimLines("""
        class MyClass:
            def myMethod(self): # comment
                for i in foo:
                    pass
        """)
        srcAfter = trimLines("""
        class MyClass:
            def myMethod(self): # comment
                for i in foo:
                    self.newMethod()

            def newMethod(self):
                pass
        """)
        src = helper(srcBefore, coords(4, 12), coords(4, 16), "newMethod")
        self.assertEqual(srcAfter, src)
コード例 #42
0
ファイル: test_extractMethod.py プロジェクト: lebauce/artub
    def test_extractsForLoopUsingLoopVariable(self):
        srcBefore=trimLines("""
        def foo():
            for i in range(1, 3):
                print i
        """)
        srcAfter=trimLines("""
        def foo():
            for i in range(1, 3):
                newFunction(i)

        def newFunction(i):
            print i
        """)

        src = helper(srcBefore, coords(3, 0),
                         coords(4, 0), "newFunction")
        self.assertEqual(srcAfter, src)
コード例 #43
0
ファイル: test_extractMethod.py プロジェクト: lebauce/artub
    def test_extractsPassFromForLoop(self):
        srcBefore=trimLines("""
        class MyClass:
            def myMethod(self): # comment
                for i in foo:
                    pass
        """)                
        srcAfter=trimLines("""
        class MyClass:
            def myMethod(self): # comment
                for i in foo:
                    self.newMethod()

            def newMethod(self):
                pass
        """)
        src = helper(srcBefore, coords(4, 12), coords(4, 16), "newMethod")
        self.assertEqual(srcAfter, src)
コード例 #44
0
ファイル: test_extractMethod.py プロジェクト: lebauce/artub
    def test_extractsExpression(self):
        srcBefore=trimLines("""
        class MyClass:
            def myMethod(self): # comment
                a = 32
                b = 2 + a * 1 + 2
        """)
        srcAfter=trimLines("""
        class MyClass:
            def myMethod(self): # comment
                a = 32
                b = 2 + self.newMethod(a) + 2

            def newMethod(self, a):
                return a * 1
        """)
        src = helper(srcBefore, coords(4, 16), coords(4, 21), "newMethod")
        self.assertEqual(srcAfter, src)
コード例 #45
0
    def test_extractsExpression(self):
        srcBefore = trimLines("""
        class MyClass:
            def myMethod(self): # comment
                a = 32
                b = 2 + a * 1 + 2
        """)
        srcAfter = trimLines("""
        class MyClass:
            def myMethod(self): # comment
                a = 32
                b = 2 + self.newMethod(a) + 2

            def newMethod(self, a):
                return a * 1
        """)
        src = helper(srcBefore, coords(4, 16), coords(4, 21), "newMethod")
        self.assertEqual(srcAfter, src)
コード例 #46
0
    def test_canExtractQueryFromNestedIfStatement(self):
        srcBefore = trimLines("""
        def theFunction():
            if foo: # comment
                if bah:
                    pass
        """)
        srcAfter = trimLines("""
        def theFunction():
            if foo: # comment
                if newFunction():
                    pass

        def newFunction():
            return bah
        """)
        src = helper(srcBefore, coords(3, 11), coords(3, 14), "newFunction")
        self.assertEqual(srcAfter, src)
コード例 #47
0
    def test_extractsExpression2(self):
        srcBefore = trimLines("""
        class MyClass:
            def myMethod(self): # comment
                g = 32
                assert output.thingy(g) == \"bah\"
        """)
        srcAfter = trimLines("""
        class MyClass:
            def myMethod(self): # comment
                g = 32
                assert self.newMethod(g) == \"bah\"

            def newMethod(self, g):
                return output.thingy(g)
        """)
        src = helper(srcBefore, coords(4, 15), coords(4, 31), "newMethod")
        self.assertEqual(srcAfter, src)
コード例 #48
0
ファイル: test_extractMethod.py プロジェクト: lebauce/artub
    def test_extractsExpression2(self):
        srcBefore=trimLines("""
        class MyClass:
            def myMethod(self): # comment
                g = 32
                assert output.thingy(g) == \"bah\"
        """)
        srcAfter=trimLines("""
        class MyClass:
            def myMethod(self): # comment
                g = 32
                assert self.newMethod(g) == \"bah\"

            def newMethod(self, g):
                return output.thingy(g)
        """)
        src = helper(srcBefore, coords(4, 15), coords(4, 31), "newMethod")
        self.assertEqual(srcAfter, src)
コード例 #49
0
ファイル: test_extractMethod.py プロジェクト: lebauce/artub
    def test_extractCodeAfterCommentInMiddleOfFnDoesntRaiseParseException(self):
        srcBefore=trimLines("""
        def theFunction():
            print 1
            # comment
            print 2
        """)
        srcAfter=trimLines("""
        def theFunction():
            print 1
            # comment
            newFunction()

        def newFunction():
            print 2
        """)
        src = helper(srcBefore, coords(4, 0),
                         coords(5, 0), "newFunction")
        self.assertEqual(srcAfter, src)
コード例 #50
0
    def test_extractsAugAssign(self):
        srcBefore = trimLines("""
        def foo():
            a = 3
            a += 1
            print a
        """)
        srcAfter = trimLines("""
        def foo():
            a = 3
            a = newFunction(a)
            print a

        def newFunction(a):
            a += 1
            return a
        """)
        src = helper(srcBefore, coords(3, 0), coords(4, 0), "newFunction")
        self.assertEqual(srcAfter, src)
コード例 #51
0
    def test_worksWhenUserSelectsABlockButDoesntSelectTheHangingDedent(self):
        srcBefore = trimLines("""
        class MyClass:
            def myMethod(self): # comment
                for i in foo:
                    pass
        """)
        srcAfter = trimLines("""
        class MyClass:
            def myMethod(self): # comment
                for i in foo:
                    self.newMethod()

            def newMethod(self):
                pass
        """)

        src = helper(srcBefore, coords(4, 8), coords(4, 16), "newMethod")
        self.assertEqual(srcAfter, src)
コード例 #52
0
    def test_extractCodeAfterCommentInMiddleOfFnDoesntRaiseParseException(
            self):
        srcBefore = trimLines("""
        def theFunction():
            print 1
            # comment
            print 2
        """)
        srcAfter = trimLines("""
        def theFunction():
            print 1
            # comment
            newFunction()

        def newFunction():
            print 2
        """)
        src = helper(srcBefore, coords(4, 0), coords(5, 0), "newFunction")
        self.assertEqual(srcAfter, src)
コード例 #53
0
ファイル: test_extractMethod.py プロジェクト: lebauce/artub
    def test_canExtractQueryFromNestedIfStatement(self):
        srcBefore=trimLines("""
        def theFunction():
            if foo: # comment
                if bah:
                    pass
        """)
        srcAfter=trimLines("""
        def theFunction():
            if foo: # comment
                if newFunction():
                    pass

        def newFunction():
            return bah
        """)
        src = helper(srcBefore, coords(3, 11),
                         coords(3, 14), "newFunction")
        self.assertEqual(srcAfter, src)
コード例 #54
0
    def test_worksWhenAssignmentsToTuples(self):
        srcBefore = trimLines("""
        class MyClass:
            def myMethod(self): 
                a, b, c = 35, 36, 37
                print a + b
        """)
        srcAfter = trimLines("""
        class MyClass:
            def myMethod(self): 
                a, b, c = 35, 36, 37
                self.newMethod(a, b)

            def newMethod(self, a, b):
                print a + b
        """)

        src = helper(srcBefore, coords(4, 8), coords(4, 19), "newMethod")
        self.assertEqual(srcAfter, src)
コード例 #55
0
    def test_extractWhileLoopVariableIncrement(self):
        srcBefore = trimLines("""
        def foo():
            a = 0
            while a != 3:
                a = a+1
        """)
        srcAfter = trimLines("""
        def foo():
            a = 0
            while a != 3:
                a = newFunction(a)

        def newFunction(a):
            a = a+1
            return a
        """)
        src = helper(srcBefore, coords(4, 0), coords(5, 0), "newFunction")
        self.assertEqual(srcAfter, src)
コード例 #56
0
ファイル: test_extractMethod.py プロジェクト: lebauce/artub
    def test_worksWhenUserSelectsABlockButDoesntSelectTheHangingDedent(self):
        srcBefore=trimLines("""
        class MyClass:
            def myMethod(self): # comment
                for i in foo:
                    pass
        """)
        srcAfter=trimLines("""
        class MyClass:
            def myMethod(self): # comment
                for i in foo:
                    self.newMethod()

            def newMethod(self):
                pass
        """)

        src = helper(srcBefore, coords(4, 8), coords(4, 16), "newMethod")
        self.assertEqual(srcAfter, src)
コード例 #57
0
ファイル: test_extractMethod.py プロジェクト: lebauce/artub
    def test_worksWhenAssignmentsToTuples(self):
        srcBefore=trimLines("""
        class MyClass:
            def myMethod(self): 
                a, b, c = 35, 36, 37
                print a + b
        """)
        srcAfter=trimLines("""
        class MyClass:
            def myMethod(self): 
                a, b, c = 35, 36, 37
                self.newMethod(a, b)

            def newMethod(self, a, b):
                print a + b
        """)

        src = helper(srcBefore, coords(4, 8), coords(4, 19), "newMethod")
        self.assertEqual(srcAfter, src)
コード例 #58
0
ファイル: test_extractMethod.py プロジェクト: lebauce/artub
    def test_doesntMessUpTheNextFunctionOrClass(self):
        srcBefore=trimLines("""
        def myFunction():
            a = 3
            print \"hello\"+a  # extract me
            
        class MyClass:
            def myMethod(self):
                b = 12      # extract me
                c = 3       # and me
                d = 2       # and me
                print b, c
        """)
        srcAfter=trimLines("""
        def myFunction():
            a = 3
            newFunction(a)

        def newFunction(a):
            print \"hello\"+a  # extract me
            
        class MyClass:
            def myMethod(self):
                b = 12      # extract me
                c = 3       # and me
                d = 2       # and me
                print b, c
        """)

        # extract code on one line
        src = helper(srcBefore, coords(3, 4),
                         coords(3, 34), "newFunction")
        self.assertEqual(srcAfter, src)

        from bike.transformer.save import resetOutputQueue

        resetOutputQueue()
        
        # extract code on 2 lines (most common user method)
        src = helper(srcBefore, coords(3, 0),
                         coords(4, 0), "newFunction")
        self.assertEqual(srcAfter, src)