#!/usr/bin/env python
import setpath
from bike.testutils import *
from bike.transformer.save import save

from moveToModule import *

class TestMoveClass(BRMTestCase):
    def test_movesTheText(self):
        src1=trimLines("""
        def before(): pass
        class TheClass:
            pass
        def after(): pass
        """)
        src1after=trimLines("""
        def before(): pass
        def after(): pass
        """)
        src2after=trimLines("""
        class TheClass:
            pass
        """)
        
        try:
            createPackageStructure(src1, "")
            moveClassToNewModule(pkgstructureFile1,2,
                                 pkgstructureFile2)
            save()
            self.assertEqual(src1after,file(pkgstructureFile1).read())
            self.assertEqual(src2after,file(pkgstructureFile2).read())
        finally:
            removePackageStructure()

class TestMoveFunction(BRMTestCase):
    def test_importsNameReference(self):
        src1=trimLines("""
        a = 'hello'
        def theFunction(self):
            print a
        """)
        src2after=trimLines("""
        from a.foo import a
        def theFunction(self):
            print a
        """)
        self.helper(src1, src2after)
        


    def test_importsExternalReference(self):
        src0=("""
        a = 'hello'
        """)
        src1=trimLines("""
        from top import a
        def theFunction(self):
            print a
        """)
        src2after=trimLines("""
        from top import a
        def theFunction(self):
            print a
        """)
        try:
            createPackageStructure(src1, "", src0)
            moveFunctionToNewModule(pkgstructureFile1,2,
                                    pkgstructureFile2)
            save()
            self.assertEqual(src2after,file(pkgstructureFile2).read())
        finally:
            removePackageStructure()

    def test_doesntImportRefCreatedInFunction(self):
        src1=trimLines("""
        def theFunction(self):
            a = 'hello'
            print a
        """)
        src2after=trimLines("""
        def theFunction(self):
            a = 'hello'
            print a
        """)
        
        self.helper(src1, src2after)


    def test_doesntImportRefCreatedInFunction(self):
        src1=trimLines("""
        def theFunction(self):
            a = 'hello'
            print a
        """)
        src2after=trimLines("""
        def theFunction(self):
            a = 'hello'
            print a
        """)
        
        self.helper(src1, src2after)


    def test_addsImportStatementToOriginalFileIfRequired(self):
        src1=trimLines("""
        def theFunction(self):
            pass
        b = theFunction()
        """)
        
        src1after=trimLines("""
        from a.b.bah import theFunction
        b = theFunction()
        """)
        try:
            createPackageStructure(src1,"")
            moveFunctionToNewModule(pkgstructureFile1,1,
                                    pkgstructureFile2)
            save()
            self.assertEqual(src1after,file(pkgstructureFile1).read())
        finally:
            removePackageStructure()

    def test_updatesFromImportStatementsInOtherModules(self):
        src0=trimLines("""
        from a.foo import theFunction
        print theFunction()
        """)
        src1=trimLines("""
        def theFunction(self):
            pass
        """)
        
        src0after=trimLines("""
        from a.b.bah import theFunction
        print theFunction()
        """)
        try:
            createPackageStructure(src1,"",src0)
            moveFunctionToNewModule(pkgstructureFile1,1,
                                    pkgstructureFile2)
            save()
            self.assertEqual(src0after,file(pkgstructureFile0).read())
        finally:
            removePackageStructure()

    def test_updatesFromImportMultiplesInOtherModules(self):
        src0=trimLines("""
        from a.foo import something,theFunction,somethingelse #comment
        print theFunction()
        """)
        src1=trimLines("""
        def theFunction(self):
            pass
        something = ''
        somethingelse = 0
        """)
        
        src0after=trimLines("""
        from a.foo import something,somethingelse #comment
        from a.b.bah import theFunction
        print theFunction()
        """)
        try:
            createPackageStructure(src1,"",src0)
            moveFunctionToNewModule(pkgstructureFile1,1,
                                    pkgstructureFile2)
            save()
            self.assertEqual(src0after,file(pkgstructureFile0).read())
        finally:
            removePackageStructure()
        
    def test_updatesFromImportMultiplesInTargetModule(self):
        src0=trimLines("""
        from a.foo import something,theFunction,somethingelse #comment
        print theFunction()
        """)
        src1=trimLines("""
        def theFunction(self):
            pass
        something = ''
        somethingelse = 0
        """)
        
        src0after=trimLines("""
        from a.foo import something,somethingelse #comment
        print theFunction()
        def theFunction(self):
            pass
        """)
        try:
            createPackageStructure(src1,"",src0)
            moveFunctionToNewModule(pkgstructureFile1,1,
                                    pkgstructureFile0)
            save()
            #print file(pkgstructureFile0).read()
            self.assertEqual(src0after,file(pkgstructureFile0).read())
        finally:
            removePackageStructure()


    def test_updatesFromImportInTargetModule(self):
        src0=trimLines("""
        from a.foo import theFunction
        print theFunction()
        """)
        src1=trimLines("""
        def theFunction(self):
            pass
        """)
        
        src0after=trimLines("""
        print theFunction()
        def theFunction(self):
            pass
        """)
        try:
            createPackageStructure(src1,"",src0)
            moveFunctionToNewModule(pkgstructureFile1,1,
                                    pkgstructureFile0)
            save()
            self.assertEqual(src0after,file(pkgstructureFile0).read())
        finally:
            removePackageStructure()



    def helper(self, src1, src2after):
        try:
            createPackageStructure(src1, "")
            moveFunctionToNewModule(pkgstructureFile1,2,
                                    pkgstructureFile2)
            save()
            self.assertEqual(src2after,file(pkgstructureFile2).read())
        finally:
            removePackageStructure()
        

        
if __name__ == "__main__":
    unittest.main()

#!/usr/bin/env python
import setpath
from bike.testutils import *
from bike.transformer.save import save

from moveToModule import *

class TestMoveClass(BRMTestCase):
    def test_movesTheText(self):
        src1=trimLines("""
        def before(): pass
        class TheClass:
            pass
        def after(): pass
        """)
        src1after=trimLines("""
        def before(): pass
        def after(): pass
        """)
        src2after=trimLines("""
        class TheClass:
            pass
        """)
        
        try:
            createPackageStructure(src1, "")
            moveClassToNewModule(pkgstructureFile1,2,
                                 pkgstructureFile2)
            save()
            self.assertEqual(src1after,file(pkgstructureFile1).read())
            self.assertEqual(src2after,file(pkgstructureFile2).read())
        finally:
            removePackageStructure()

class TestMoveFunction(BRMTestCase):
    def test_importsNameReference(self):
        src1=trimLines("""
        a = 'hello'
        def theFunction(self):
            print a
        """)
        src2after=trimLines("""
        from a.foo import a
        def theFunction(self):
            print a
        """)
        self.helper(src1, src2after)
        


    def test_importsExternalReference(self):
        src0=("""
        a = 'hello'
        """)
        src1=trimLines("""
        from top import a
        def theFunction(self):
            print a
        """)
        src2after=trimLines("""
        from top import a
        def theFunction(self):
            print a
        """)
        try:
            createPackageStructure(src1, "", src0)
            moveFunctionToNewModule(pkgstructureFile1,2,
                                    pkgstructureFile2)
            save()
            self.assertEqual(src2after,file(pkgstructureFile2).read())
        finally:
            removePackageStructure()

    def test_doesntImportRefCreatedInFunction(self):
        src1=trimLines("""
        def theFunction(self):
            a = 'hello'
            print a
        """)
        src2after=trimLines("""
        def theFunction(self):
            a = 'hello'
            print a
        """)
        
        self.helper(src1, src2after)


    def test_doesntImportRefCreatedInFunction(self):
        src1=trimLines("""
        def theFunction(self):
            a = 'hello'
            print a
        """)
        src2after=trimLines("""
        def theFunction(self):
            a = 'hello'
            print a
        """)
        
        self.helper(src1, src2after)


    def test_addsImportStatementToOriginalFileIfRequired(self):
        src1=trimLines("""
        def theFunction(self):
            pass
        b = theFunction()
        """)
        
        src1after=trimLines("""
        from a.b.bah import theFunction
        b = theFunction()
        """)
        try:
            createPackageStructure(src1,"")
            moveFunctionToNewModule(pkgstructureFile1,1,
                                    pkgstructureFile2)
            save()
            self.assertEqual(src1after,file(pkgstructureFile1).read())
        finally:
            removePackageStructure()

    def test_updatesFromImportStatementsInOtherModules(self):
        src0=trimLines("""
        from a.foo import theFunction
        print theFunction()
        """)
        src1=trimLines("""
        def theFunction(self):
            pass
        """)
        
        src0after=trimLines("""
        from a.b.bah import theFunction
        print theFunction()
        """)
        try:
            createPackageStructure(src1,"",src0)
            moveFunctionToNewModule(pkgstructureFile1,1,
                                    pkgstructureFile2)
            save()
            self.assertEqual(src0after,file(pkgstructureFile0).read())
        finally:
            removePackageStructure()

    def test_updatesFromImportMultiplesInOtherModules(self):
        src0=trimLines("""
        from a.foo import something,theFunction,somethingelse #comment
        print theFunction()
        """)
        src1=trimLines("""
        def theFunction(self):
            pass
        something = ''
        somethingelse = 0
        """)
        
        src0after=trimLines("""
        from a.foo import something,somethingelse #comment
        from a.b.bah import theFunction
        print theFunction()
        """)
        try:
            createPackageStructure(src1,"",src0)
            moveFunctionToNewModule(pkgstructureFile1,1,
                                    pkgstructureFile2)
            save()
            self.assertEqual(src0after,file(pkgstructureFile0).read())
        finally:
            removePackageStructure()
        
    def test_updatesFromImportMultiplesInTargetModule(self):
        src0=trimLines("""
        from a.foo import something,theFunction,somethingelse #comment
        print theFunction()
        """)
        src1=trimLines("""
        def theFunction(self):
            pass
        something = ''
        somethingelse = 0
        """)
        
        src0after=trimLines("""
        from a.foo import something,somethingelse #comment
        print theFunction()
        def theFunction(self):
            pass
        """)
        try:
            createPackageStructure(src1,"",src0)
            moveFunctionToNewModule(pkgstructureFile1,1,
                                    pkgstructureFile0)
            save()
            #print file(pkgstructureFile0).read()
            self.assertEqual(src0after,file(pkgstructureFile0).read())
        finally:
            removePackageStructure()


    def test_updatesFromImportInTargetModule(self):
        src0=trimLines("""
        from a.foo import theFunction
        print theFunction()
        """)
        src1=trimLines("""
        def theFunction(self):
            pass
        """)
        
        src0after=trimLines("""
        print theFunction()
        def theFunction(self):
            pass
        """)
        try:
            createPackageStructure(src1,"",src0)
            moveFunctionToNewModule(pkgstructureFile1,1,
                                    pkgstructureFile0)
            save()
            self.assertEqual(src0after,file(pkgstructureFile0).read())
        finally:
            removePackageStructure()



    def helper(self, src1, src2after):
        try:
            createPackageStructure(src1, "")
            moveFunctionToNewModule(pkgstructureFile1,2,
                                    pkgstructureFile2)
            save()
            self.assertEqual(src2after,file(pkgstructureFile2).read())
        finally:
            removePackageStructure()
        

        
if __name__ == "__main__":
    unittest.main()

#!/usr/bin/env python def before(): pass         class TheClass:             pass         def after(): pass def before(): pass         def after(): pass class TheClass:             pass a = 'hello'         def theFunction(self):             print a from a.foo import a         def theFunction(self):             print a a = 'hello' from top import a         def theFunction(self):             print a from top import a         def theFunction(self):             print a def theFunction(self):             a = 'hello'             print a def theFunction(self):             a = 'hello'             print a def theFunction(self):             a = 'hello'             print a def theFunction(self):             a = 'hello'             print a def theFunction(self):             pass         b = theFunction() from a.b.bah import theFunction         b = theFunction() from a.foo import theFunction         print theFunction() def theFunction(self):             pass from a.b.bah import theFunction         print theFunction() from a.foo import something,theFunction,somethingelse #comment         print theFunction() def theFunction(self):             pass         something = ''         somethingelse = 0 from a.foo import something,somethingelse #comment         from a.b.bah import theFunction         print theFunction() from a.foo import something,theFunction,somethingelse #comment         print theFunction() def theFunction(self):             pass         something = ''         somethingelse = 0 from a.foo import something,somethingelse #comment         print theFunction()         def theFunction(self):             pass #print file(pkgstructureFile0).read() from a.foo import theFunction         print theFunction() def theFunction(self):             pass print theFunction()         def theFunction(self):             pass