public void Init()
        {
            string python =
                "from sys import exit as myexit";

            parseInfo       = PythonParserHelper.CreateParseInfo(python);
            resolverContext = new PythonResolverContext(parseInfo);
        }
        public void HasDottedImportNameReturnsFalseForMyNamespaceWithMyNamespaceTestImportedWithoutDtso()
        {
            string           code      = "import MyNamespaceTest";
            ParseInformation parseInfo = PythonParserHelper.CreateParseInfo(code);

            PythonResolverContext resolverContext = new PythonResolverContext(parseInfo);

            Assert.IsFalse(resolverContext.HasDottedImportNameThatStartsWith("MyNamespace"));
        }
        public void HasDottedImportNameReturnsTrueForSystemWithSystemWindowsFormsImported()
        {
            string           code      = "import System.Windows.Forms";
            ParseInformation parseInfo = PythonParserHelper.CreateParseInfo(code);

            PythonResolverContext resolverContext = new PythonResolverContext(parseInfo);

            Assert.IsTrue(resolverContext.HasDottedImportNameThatStartsWith("System"));
        }
예제 #4
0
        public void Init()
        {
            string python =
                "import math as m\r\n" +
                "import sys as s";

            parseInfo       = PythonParserHelper.CreateParseInfo(python);
            resolverContext = new PythonResolverContext(parseInfo);
        }
예제 #5
0
        public void HasImportReturnsFalseForFromImport()
        {
            string           code      = "from import sys";
            ParseInformation parseInfo = PythonParserHelper.CreateParseInfo(code);

            PythonResolverContext resolverContext = new PythonResolverContext(parseInfo);

            Assert.IsFalse(resolverContext.HasImport("sys"));
        }
예제 #6
0
        public void HasImportReturnsTrueForImportedAsName()
        {
            string           code      = "import sys as something";
            ParseInformation parseInfo = PythonParserHelper.CreateParseInfo(code);

            PythonResolverContext resolverContext = new PythonResolverContext(parseInfo);

            Assert.IsTrue(resolverContext.HasImport("something"));
        }
예제 #7
0
        public void HasImportReturnsTrueForImportThatDoesExistInCompilationUnitWithSingleUsingWithMultipleNamespaces()
        {
            string           code      = "import abc, ghi";
            ParseInformation parseInfo = PythonParserHelper.CreateParseInfo(code);

            PythonResolverContext resolverContext = new PythonResolverContext(parseInfo);

            Assert.IsTrue(resolverContext.HasImport("ghi"));
        }
예제 #8
0
        public void HasImportReturnsTrueForImportThatDoesExistInCompilationUnit()
        {
            string           code      = "import abc";
            ParseInformation parseInfo = PythonParserHelper.CreateParseInfo(code);

            PythonResolverContext resolverContext = new PythonResolverContext(parseInfo);

            Assert.IsTrue(resolverContext.HasImport("abc"));
        }
        public void CreateParseInfoReturnsParseInfoWithSingleClass()
        {
            string code =
                "class foo:\r\n" +
                "    pass";

            ParseInformation parseInfo = PythonParserHelper.CreateParseInfo(code);

            Assert.AreEqual("foo", parseInfo.CompilationUnit.Classes[0].Name);
        }
예제 #10
0
        public void GetModulesThatImportEverythingReturnsSysForFromSysImportAllStatement()
        {
            string           code      = "from sys import *";
            ParseInformation parseInfo = PythonParserHelper.CreateParseInfo(code);

            PythonResolverContext resolverContext = new PythonResolverContext(parseInfo);

            string[] expectedModules = new string[] { "sys" };
            Assert.AreEqual(expectedModules, resolverContext.GetModulesThatImportEverything());
        }
예제 #11
0
        public void GetModulesThatImportEverythingReturnsEmptyCollectionIfNotImportAll()
        {
            string           code      = "from math import tan";
            ParseInformation parseInfo = PythonParserHelper.CreateParseInfo(code);

            PythonResolverContext resolverContext = new PythonResolverContext(parseInfo);

            string[] expectedModules = new string[0];
            Assert.AreEqual(expectedModules, resolverContext.GetModulesThatImportEverything());
        }
예제 #12
0
        public void Parse_ClassMethodHasNoPropertyButHasAssignmentStatementUsingMemberExpression_ParseInfoHasNoPropertyAddedAndNoExceptionThrown()
        {
            string code =
                "class MyClass:\r\n" +
                "    a.b = foo()\r\n" +
                "\r\n";

            ParseInformation parseInfo = PythonParserHelper.CreateParseInfo(code);
            int count = parseInfo.CompilationUnit.Classes[0].Properties.Count;

            Assert.AreEqual(0, count);
        }
예제 #13
0
        public void Parse_ClassMethodHasNoPropertyButHasAssignmentStatementSetToValueFromFunctionCall_ParseInfoHasNoPropertyAdded()
        {
            string code =
                "class MyClass:\r\n" +
                "    a = foo()\r\n" +
                "\r\n";

            ParseInformation parseInfo = PythonParserHelper.CreateParseInfo(code);
            int count = parseInfo.CompilationUnit.Classes[0].Properties.Count;

            Assert.AreEqual(0, count);
        }
예제 #14
0
        public void GetModulesThatImportEverythingIgnoresNonFromImportStatement()
        {
            string code =
                "import math\r\n" +
                "from sys import *";
            ParseInformation parseInfo = PythonParserHelper.CreateParseInfo(code);

            PythonResolverContext resolverContext = new PythonResolverContext(parseInfo);

            string[] expectedModules = new string[] { "sys" };
            Assert.AreEqual(expectedModules, resolverContext.GetModulesThatImportEverything());
        }
예제 #15
0
        void ParseClassWithProperty()
        {
            string code =
                "class MyClass:\r\n" +
                "    def __init__(self):\r\n" +
                "        self._count = 0\r\n" +
                "\r\n" +
                "    def get_Count(self):\r\n" +
                "        return self._count\r\n" +
                "\r\n" +
                "    def _set_Count(self, value):\r\n" +
                "        self._count = value\r\n" +
                "\r\n" +
                "    Count = property(fget=get_Count, fset=set_Count)\r\n";

            ParseInformation parseInfo = PythonParserHelper.CreateParseInfo(code);

            property = parseInfo.CompilationUnit.Classes[0].Properties[0];
        }
예제 #16
0
        void ParseCode(string code)
        {
            ParseInformation parseInfo = PythonParserHelper.CreateParseInfo(code);

            myClass = parseInfo.CompilationUnit.Classes[0];
        }