Ejemplo n.º 1
0
        public void TrickyFileTest()
        {
            var parser   = new SrcMLCppParser(generator);
            var elements = parser.Parse("TestFiles\\Parameters.h");

            Assert.IsNotNull(elements);
        }
Ejemplo n.º 2
0
        public void ParseAboutDlgTest()
        {
            var parser   = new SrcMLCppParser(generator);
            var elements = parser.Parse("TestFiles\\AboutDlg.cpp");

            Assert.IsNotNull(elements);
        }
Ejemplo n.º 3
0
        public void ParseAnotherEnumTest()
        {
            var parser   = new SrcMLCppParser(generator);
            var elements = parser.Parse("TestFiles\\xmlMatchedTagsHighlighter.cpp");

            Assert.IsNotNull(elements);
        }
Ejemplo n.º 4
0
        public void ParseCPPSourceWithErrorsTest()
        {
            bool seenGetTimeMethod = false;
            int  numMethods        = 0;
            ///////string sourceFile = @"..\..\Parser\Parser.UnitTests\TestFiles\Event.CPP.txt";
            string sourceFile = @"TestFiles\EventWithErrorInIt.cpp";
            var    parser     = new SrcMLCppParser(generator);
            var    elements   = parser.Parse(sourceFile);

            Assert.IsNotNull(elements);
            Assert.AreEqual(elements.Count, 5);
            ///////CheckParseOfEventFile(parser, sourceFile, elements);
        }
Ejemplo n.º 5
0
        private static void CheckParseOfEventFile(SrcMLCppParser parser, string sourceFile, List <ProgramElement> elements)
        {
            bool seenGetTimeMethod = false;
            int  numMethods        = 0;

            foreach (ProgramElement pe in elements)
            {
                if (pe is CppUnresolvedMethodElement)
                {
                    numMethods++;

                    //Resolve
                    bool          isResolved = false;
                    MethodElement method     = null;
                    CppUnresolvedMethodElement unresolvedMethod = (CppUnresolvedMethodElement)pe;
                    foreach (String headerFile in unresolvedMethod.IncludeFileNames)
                    {
                        //it's reasonable to assume that the header file path is relative from the cpp file,
                        //as other included files are unlikely to be part of the same project and therefore
                        //should not need to be parsed
                        string headerPath = System.IO.Path.GetDirectoryName(sourceFile) + "\\" + headerFile;
                        if (!System.IO.File.Exists(headerPath))
                        {
                            continue;
                        }

                        isResolved = unresolvedMethod.TryResolve(unresolvedMethod, parser.Parse(headerPath), out method);
                        if (isResolved == true)
                        {
                            break;
                        }
                    }
                    Assert.IsTrue(isResolved);
                    Assert.IsNotNull(method);

                    //pick one of the resolved methods to see if it seems complete
                    if (method.Name == "getTime")
                    {
                        seenGetTimeMethod = true;
                        Assert.AreEqual(method.DefinitionLineNumber, 13);
                        Assert.AreEqual(method.ReturnType, "double");
                        Assert.AreEqual(method.AccessLevel, AccessLevel.Public);
                        Assert.AreEqual(method.Arguments, String.Empty);
                        Assert.AreEqual(method.Body, "{ \n  return _time; \n}");
                        Assert.AreNotEqual(method.ClassId, System.Guid.Empty);
                    }
                }
            }
            Assert.AreEqual(numMethods, 6);
            Assert.IsTrue(seenGetTimeMethod);
        }
Ejemplo n.º 6
0
 public void ParseCppConstructorTest()
 {
     bool hasConstructor = false;
     var parser = new SrcMLCppParser(generator);
     var elements = parser.Parse("TestFiles\\Event.H.txt");
     Assert.IsNotNull(elements);
     foreach(ProgramElement pe in elements)
     {
         if(pe is MethodPrototypeElement)
         {
             var protoElement = (MethodPrototypeElement)pe;
             if(protoElement.IsConstructor)
             {
                 hasConstructor = true;
                 Assert.AreEqual(protoElement.Name, "Event");
                 Assert.AreEqual(protoElement.DefinitionLineNumber, 15);
             }
         }
     }
     Assert.IsTrue(hasConstructor);
 }
Ejemplo n.º 7
0
        public void ParseCppConstructorTest()
        {
            bool hasConstructor = false;
            var  parser         = new SrcMLCppParser(generator);
            var  elements       = parser.Parse("TestFiles\\Event.H.txt");

            Assert.IsNotNull(elements);
            foreach (ProgramElement pe in elements)
            {
                if (pe is MethodPrototypeElement)
                {
                    var protoElement = (MethodPrototypeElement)pe;
                    if (protoElement.IsConstructor)
                    {
                        hasConstructor = true;
                        Assert.AreEqual(protoElement.Name, "Event");
                        Assert.AreEqual(protoElement.DefinitionLineNumber, 15);
                    }
                }
            }
            Assert.IsTrue(hasConstructor);
        }
Ejemplo n.º 8
0
        public void WeirdStructTest()
        {
            //Note: may not want to create this in mydocuments....
            //create a test file
            String WeirdStruct = "struct LangMenuItem { LangType _langType; int	_cmdID; generic_string _langName; " +
                                 "LangMenuItem(LangType lt, int cmdID = 0, generic_string langName = TEXT(\"\")): " +
                                 "_langType(lt), _cmdID(cmdID), _langName(langName){};};";
            String WeirdStructFile = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\HelloWorld1.cs";

            System.IO.File.WriteAllText(WeirdStructFile, WeirdStruct);

            bool hasStruct = false;
            Guid structId  = Guid.Empty;
            var  parser    = new SrcMLCppParser(generator);
            var  elements  = parser.Parse(WeirdStructFile);

            Assert.IsTrue(elements.Count == 2);

            foreach (ProgramElement pe in elements)
            {
                if (pe is StructElement)
                {
                    StructElement structElement = (StructElement)pe;
                    Assert.IsNotNull(structElement);
                    Assert.AreEqual(structElement.Name, "LangMenuItem");
                    structId  = structElement.Id;
                    hasStruct = true;
                }
                else if (pe is MethodElement)
                {
                    MethodElement methodElement = (MethodElement)pe;
                    Assert.AreEqual(methodElement.ClassId, structId);
                }
            }
            Assert.IsTrue(hasStruct);

            //delete file
            System.IO.File.Delete(WeirdStructFile);
        }
Ejemplo n.º 9
0
        public void ParseUndefinedNameEnumTest()
        {
            bool hasEnum  = false;
            var  parser   = new SrcMLCppParser(generator);
            var  elements = parser.Parse("TestFiles\\PlayMp3Dlg.h.txt");

            Assert.IsNotNull(elements);
            foreach (ProgramElement pe in elements)
            {
                if (pe is EnumElement)
                {
                    EnumElement enumElem = (EnumElement)pe;
                    Assert.AreEqual(enumElem.Name, "");
                    Assert.AreEqual(enumElem.DefinitionLineNumber, 30);
                    Assert.AreEqual(enumElem.Body, "IDD IDD_PLAYMP3_DIALOG");
                    Assert.AreEqual(enumElem.AccessLevel, AccessLevel.Public);
                    Assert.True(enumElem.FullFilePath.EndsWith("TestFiles\\PlayMp3Dlg.h.txt"));
                    hasEnum = true;
                }
            }
            Assert.IsTrue(hasEnum);
        }
Ejemplo n.º 10
0
        public void ParseCPPHeaderTest()
        {
            bool hasClass = false;
            bool hasEnum  = false;
            var  parser   = new SrcMLCppParser(generator);
            var  elements = parser.Parse("TestFiles\\Event.H.txt");

            Assert.IsNotNull(elements);
            Assert.AreEqual(elements.Count, 8);
            foreach (ProgramElement pe in elements)
            {
                if (pe is ClassElement)
                {
                    ClassElement classElem = (ClassElement)pe;
                    Assert.AreEqual(classElem.Name, "Event");
                    Assert.AreEqual(classElem.DefinitionLineNumber, 12);
                    Assert.AreEqual(classElem.AccessLevel, AccessLevel.Public);
                    Assert.AreEqual(classElem.Namespace, String.Empty);
                    Assert.True(classElem.FullFilePath.EndsWith("TestFiles\\Event.H.txt"));
                    hasClass = true;
                }
                else if (pe is EnumElement)
                {
                    EnumElement enumElem = (EnumElement)pe;
                    Assert.AreEqual(enumElem.Name, "EventType");
                    Assert.AreEqual(enumElem.DefinitionLineNumber, 6);
                    Assert.AreEqual(enumElem.Namespace, String.Empty);
                    Assert.AreEqual(enumElem.Body, "SENSED_DATA_READY SENDING_DONE RECEIVING_DONE");
                    Assert.AreEqual(enumElem.AccessLevel, AccessLevel.Public);
                    Assert.True(enumElem.FullFilePath.EndsWith("TestFiles\\Event.H.txt"));
                    hasEnum = true;
                }
            }
            Assert.IsTrue(hasClass);
            Assert.IsTrue(hasEnum);
        }
Ejemplo n.º 11
0
 public void ParseAnotherEnumTest()
 {
     var parser = new SrcMLCppParser(generator);
     var elements = parser.Parse("TestFiles\\xmlMatchedTagsHighlighter.cpp");
     Assert.IsNotNull(elements);
 }
Ejemplo n.º 12
0
 public void ParseAboutDlgTest()
 {
     var parser = new SrcMLCppParser(generator);
     var elements = parser.Parse("TestFiles\\AboutDlg.cpp");
     Assert.IsNotNull(elements);
 }
Ejemplo n.º 13
0
 private void _processFileInBackground_DoWork(object sender, DoWorkEventArgs e)
 {
     var parser = new SrcMLCppParser(generator);
     var elements = parser.Parse("TestFiles\\xmlMatchedTagsHighlighter.cpp");
 }
Ejemplo n.º 14
0
        private static void CheckParseOfEventFile(SrcMLCppParser parser, string sourceFile, List<ProgramElement> elements)
        {
            bool seenGetTimeMethod = false;
            int numMethods = 0;
            foreach (ProgramElement pe in elements)
            {
                if (pe is CppUnresolvedMethodElement)
                {
                    numMethods++;

                    //Resolve
                    bool isResolved = false;
                    MethodElement method = null;
                    CppUnresolvedMethodElement unresolvedMethod = (CppUnresolvedMethodElement) pe;
                    foreach (String headerFile in unresolvedMethod.IncludeFileNames)
                    {
                        //it's reasonable to assume that the header file path is relative from the cpp file,
                        //as other included files are unlikely to be part of the same project and therefore
                        //should not need to be parsed
                        string headerPath = System.IO.Path.GetDirectoryName(sourceFile) + "\\" + headerFile;
                        if (!System.IO.File.Exists(headerPath)) continue;

                        isResolved = unresolvedMethod.TryResolve(unresolvedMethod, parser.Parse(headerPath), out method);
                        if (isResolved == true) break;
                    }
                    Assert.IsTrue(isResolved);
                    Assert.IsNotNull(method);

                    //pick one of the resolved methods to see if it seems complete
                    if (method.Name == "getTime")
                    {
                        seenGetTimeMethod = true;
                        Assert.AreEqual(method.DefinitionLineNumber, 13);
                        Assert.AreEqual(method.ReturnType, "double");
                        Assert.AreEqual(method.AccessLevel, AccessLevel.Public);
                        Assert.AreEqual(method.Arguments, String.Empty);
                        Assert.AreEqual(method.Body, "{ \n  return _time; \n}");
                        Assert.AreNotEqual(method.ClassId, System.Guid.Empty);
                    }
                }
            }
            Assert.AreEqual(numMethods, 6);
            Assert.IsTrue(seenGetTimeMethod);
        }
Ejemplo n.º 15
0
        public void WeirdStructTest()
        {
            //Note: may not want to create this in mydocuments....
            //create a test file
            String WeirdStruct = "struct LangMenuItem { LangType _langType; int	_cmdID; generic_string _langName; " +
                                    "LangMenuItem(LangType lt, int cmdID = 0, generic_string langName = TEXT(\"\")): " +
                                    "_langType(lt), _cmdID(cmdID), _langName(langName){};};";
            String WeirdStructFile = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\HelloWorld1.cs";
            System.IO.File.WriteAllText(WeirdStructFile, WeirdStruct);

            bool hasStruct = false;
            Guid structId = Guid.Empty;
            var parser = new SrcMLCppParser(generator);
            var elements = parser.Parse(WeirdStructFile);
            Assert.IsTrue(elements.Count == 2);

            foreach (ProgramElement pe in elements)
            {
                if (pe is StructElement)
                {
                    StructElement structElement = (StructElement)pe;
                    Assert.IsNotNull(structElement);
                    Assert.AreEqual(structElement.Name, "LangMenuItem");
                    structId = structElement.Id;
                    hasStruct = true;
                }
                else if (pe is MethodElement)
                {
                    MethodElement methodElement = (MethodElement)pe;
                    Assert.AreEqual(methodElement.ClassId, structId);
                }
            }
            Assert.IsTrue(hasStruct);

            //delete file
            System.IO.File.Delete(WeirdStructFile);
        }
Ejemplo n.º 16
0
 public void TrickyFileTest()
 {
     var parser = new SrcMLCppParser(generator);
     var elements = parser.Parse("TestFiles\\Parameters.h");
     Assert.IsNotNull(elements);
 }
Ejemplo n.º 17
0
 public void ParseUndefinedNameEnumTest()
 {
     bool hasEnum = false;
     var parser = new SrcMLCppParser(generator);
     var elements = parser.Parse("TestFiles\\PlayMp3Dlg.h.txt");
     Assert.IsNotNull(elements);
     foreach(ProgramElement pe in elements)
     {
         if(pe is EnumElement)
         {
             EnumElement enumElem = (EnumElement)pe;
             Assert.AreEqual(enumElem.Name, "");
             Assert.AreEqual(enumElem.DefinitionLineNumber, 30);
             Assert.AreEqual(enumElem.Body, "IDD IDD_PLAYMP3_DIALOG");
             Assert.AreEqual(enumElem.AccessLevel, AccessLevel.Public);
             Assert.True(enumElem.FullFilePath.EndsWith("TestFiles\\PlayMp3Dlg.h.txt"));
             hasEnum = true;
         }
     }
     Assert.IsTrue(hasEnum);
 }
Ejemplo n.º 18
0
 private void _processFileInBackground_DoWork(object sender, DoWorkEventArgs e)
 {
     var parser   = new SrcMLCppParser(generator);
     var elements = parser.Parse("TestFiles\\xmlMatchedTagsHighlighter.cpp");
 }
Ejemplo n.º 19
0
 public void ParseCPPHeaderTest()
 {
     bool hasClass = false;
     bool hasEnum = false;
     var parser = new SrcMLCppParser(generator);
     var elements = parser.Parse("TestFiles\\Event.H.txt");
     Assert.IsNotNull(elements);
     Assert.AreEqual(elements.Count, 8);
     foreach(ProgramElement pe in elements)
     {
         if(pe is ClassElement)
         {
             ClassElement classElem = (ClassElement)pe;
             Assert.AreEqual(classElem.Name, "Event");
             Assert.AreEqual(classElem.DefinitionLineNumber, 12);
             Assert.AreEqual(classElem.AccessLevel, AccessLevel.Public);
             Assert.AreEqual(classElem.Namespace, String.Empty);
             Assert.True(classElem.FullFilePath.EndsWith("TestFiles\\Event.H.txt"));
             hasClass = true;
         }
         else if(pe is EnumElement)
         {
             EnumElement enumElem = (EnumElement)pe;
             Assert.AreEqual(enumElem.Name, "EventType");
             Assert.AreEqual(enumElem.DefinitionLineNumber, 6);
             Assert.AreEqual(enumElem.Namespace, String.Empty);
             Assert.AreEqual(enumElem.Body, "SENSED_DATA_READY SENDING_DONE RECEIVING_DONE");
             Assert.AreEqual(enumElem.AccessLevel, AccessLevel.Public);
             Assert.True(enumElem.FullFilePath.EndsWith("TestFiles\\Event.H.txt"));
             hasEnum = true;
         }
     }
     Assert.IsTrue(hasClass);
     Assert.IsTrue(hasEnum);
 }
Ejemplo n.º 20
0
 public void ParseCPPSourceWithErrorsTest()
 {
     bool seenGetTimeMethod = false;
     int numMethods = 0;
     ///////string sourceFile = @"..\..\Parser\Parser.UnitTests\TestFiles\Event.CPP.txt";
     string sourceFile = @"TestFiles\EventWithErrorInIt.cpp";
     var parser = new SrcMLCppParser(generator);
     var elements = parser.Parse(sourceFile);
     Assert.IsNotNull(elements);
     Assert.AreEqual(elements.Count, 5);
     ///////CheckParseOfEventFile(parser, sourceFile, elements);
 }