public void ParseMultipleParents()
        {
            var  parser    = new SrcMLCSharpParser(generator);
            var  elements  = parser.Parse("TestFiles\\MultiParentTest.txt");
            bool seenClass = false;

            foreach (var programElement in elements)
            {
                if (programElement.ProgramElementType == ProgramElementType.Class)
                {
                    seenClass = true;
                    var classElement = programElement as ClassElement;
                    int numParents   = 0;
                    //TODO - not sure how we will be able to determine which are interfaces and which are classes
                    //might have to just put all but the first one in interfaces?
                    if (classElement.ImplementedInterfaces != String.Empty)
                    {
                        numParents += classElement.ImplementedInterfaces.Split(' ').Count();
                    }
                    if (classElement.ExtendedClasses != String.Empty)
                    {
                        numParents += classElement.ExtendedClasses.Split(' ').Count();
                    }
                    Assert.IsTrue(numParents == 4);
                }
            }
            Assert.IsTrue(seenClass);
        }
示例#2
0
        public void GenerateSrcMLShortestFileTest()
        {
            var parser = new SrcMLCSharpParser(generator);
            var srcML  = parser.Parse("TestFiles\\ShortestCSharpFile.txt");

            Assert.IsTrue(srcML != null);
        }
示例#3
0
        public void ParseClassTest()
        {
            bool seenClass = false;
            var  parser    = new SrcMLCSharpParser(generator);
            var  elements  = parser.Parse("TestFiles\\ShortCSharpFile.txt");

            Assert.IsNotNull(elements);
            Assert.IsTrue(elements.Count > 0);
            foreach (ProgramElement pe in elements)
            {
                if (pe is ClassElement)
                {
                    ClassElement classElem = (ClassElement)pe;
                    if (classElem.Name == "SrcMLGenerator")
                    {
                        seenClass = true;
                        Assert.AreEqual(classElem.DefinitionLineNumber, 14);
                        Assert.AreEqual(classElem.AccessLevel, AccessLevel.Public);
                        Assert.AreEqual(classElem.Namespace, "Sando.Parser");
                        Assert.True(classElem.FullFilePath.EndsWith("TestFiles\\ShortCSharpFile.txt"));
                    }
                }
            }
            Assert.IsTrue(seenClass);
        }
        public static List <ProgramElement> ParseCsharpFile(string filePath)
        {
            SrcMLCSharpParser parser = new SrcMLCSharpParser(new ABB.SrcML.SrcMLGenerator(TestUtils.SrcMLDirectory));
            var elements             = parser.Parse(filePath);

            return(elements);
        }
        public void ClassInheritanceTest()
        {
            bool seenClass = false;
            var  parser    = new SrcMLCSharpParser(generator);
            var  elements  = parser.Parse("TestFiles\\InheritanceCSharpFile.txt");

            Assert.IsNotNull(elements);
            Assert.IsTrue(elements.Count > 0);
            foreach (ProgramElement pe in elements)
            {
                if (pe is ClassElement)
                {
                    ClassElement classElem = (ClassElement)pe;
                    if (classElem.Name == "IndexerException")
                    {
                        seenClass = true;
                        Assert.AreEqual(classElem.DefinitionLineNumber, 8);
                        Assert.AreEqual(classElem.AccessLevel, AccessLevel.Public);
                        Assert.AreEqual(classElem.Namespace, "Sando.Indexer.Exceptions");
                        //TODO - make this not dependent upon your path...
                        //Assert.AreEqual(classElem.FullFilePath, "C:\\Users\\kosta\\sando\\Parser\\Parser.UnitTests\\TestFiles\\InheritanceCSharpFile.txt");
                        Assert.AreEqual(classElem.ExtendedClasses, "SandoException");
                    }
                }
            }
            Assert.IsTrue(seenClass);
        }
 public void ParseMultipleParents()
 {
     var parser = new SrcMLCSharpParser(generator);
     var elements = parser.Parse("TestFiles\\MultiParentTest.txt");
     bool seenClass = false;
     foreach(var programElement in elements)
     {
         if(programElement.ProgramElementType == ProgramElementType.Class)
         {
             seenClass = true;
             var classElement = programElement as ClassElement;
             int numParents = 0;
             //TODO - not sure how we will be able to determine which are interfaces and which are classes
             //might have to just put all but the first one in interfaces?
             if(classElement.ImplementedInterfaces != String.Empty)
             {
                 numParents += classElement.ImplementedInterfaces.Split(' ').Count();
             }
             if(classElement.ExtendedClasses != String.Empty)
             {
                 numParents += classElement.ExtendedClasses.Split(' ').Count();
             }
             Assert.IsTrue(numParents==4);
         }
     }
     Assert.IsTrue(seenClass);
 }
 public void ClassInheritanceTest()
 {
     bool seenClass = false;
     var parser = new SrcMLCSharpParser(generator);
     var elements = parser.Parse("TestFiles\\InheritanceCSharpFile.txt");
     Assert.IsNotNull(elements);
     Assert.IsTrue(elements.Count > 0);
     foreach(ProgramElement pe in elements)
     {
         if(pe is ClassElement)
         {
             ClassElement classElem = (ClassElement)pe;
             if(classElem.Name == "IndexerException")
             {
                 seenClass = true;
                 Assert.AreEqual(classElem.DefinitionLineNumber, 8);
                 Assert.AreEqual(classElem.AccessLevel, AccessLevel.Public);
                 Assert.AreEqual(classElem.Namespace, "Sando.Indexer.Exceptions");
                 //TODO - make this not dependent upon your path...
                 //Assert.AreEqual(classElem.FullFilePath, "C:\\Users\\kosta\\sando\\Parser\\Parser.UnitTests\\TestFiles\\InheritanceCSharpFile.txt");
                 Assert.AreEqual(classElem.ExtendedClasses, "SandoException");
             }
         }
     }
     Assert.IsTrue(seenClass);
 }
示例#8
0
        public void ParsePossiblyFailingFile()
        {
            var parser   = new SrcMLCSharpParser(generator);
            var elements = parser.Parse("TestFiles\\MESTParsingFile.txt");

            Assert.IsNotNull(elements);
            Assert.IsTrue(elements.Count > 0);
        }
示例#9
0
 private SearchTester()
 {
     TestUtils.InitializeDefaultExtensionPoints();
     //set up generator
     _parser = new SrcMLCSharpParser(new ABB.SrcML.SrcMLGenerator(TestUtils.SrcMLDirectory));
     _luceneTempIndexesDirectory = PathManager.Instance.GetIndexPath(ServiceLocator.Resolve <SolutionKey>());
     Directory.CreateDirectory(_luceneTempIndexesDirectory);
     TestUtils.ClearDirectory(_luceneTempIndexesDirectory);
 }
示例#10
0
        public void ParseMethodTest()
        {
            var parser   = new SrcMLCSharpParser(generator);
            var elements = parser.Parse("TestFiles\\ShortCSharpFile.txt");

            Assert.IsNotNull(elements);
            Assert.IsTrue(elements.Count > 0);

            CheckParseOfShortCSharpFile(elements);
        }
示例#11
0
        public void GIVEN_file_with_readonly_and_static_elements_WHEN_parse_method_is_called_THEN_valid_access_levels_are_retrieved()
        {
            var parser   = new SrcMLCSharpParser(generator);
            var elements = parser.Parse("TestFiles\\ShortCSharpFile.txt");

            var readonlyField = elements.OfType <FieldElement>().FirstOrDefault(f => f.Name == "Language");

            Assert.IsNotNull(readonlyField);
            Assert.AreEqual(readonlyField.AccessLevel, AccessLevel.Internal);

            var staticMethod = elements.OfType <MethodElement>().FirstOrDefault(f => f.Name == "SetSrcMLLocation");

            Assert.IsNotNull(staticMethod);
            Assert.AreEqual(staticMethod.AccessLevel, AccessLevel.Public);
        }
示例#12
0
 public void CSharpRegionTest()
 {
     SrcMLCSharpParser parser = new SrcMLCSharpParser(generator);
     var elements = parser.Parse("TestFiles\\RegionTest.txt");
     Assert.IsNotNull(elements);
     Assert.IsTrue(elements.Count == 2);
     bool hasClass = false, hasMethod = false;
     foreach(var programElement in elements)
     {
         if(programElement as MethodElement != null)
             hasMethod = true;
         if(programElement as ClassElement != null)
             hasClass = true;
     }
     Assert.IsTrue(hasClass && hasMethod);
 }
示例#13
0
        public void BasicParserTest()
        {
            SrcMLCSharpParser parser = new SrcMLCSharpParser(generator);
            var elements = parser.Parse("TestFiles\\ShortCSharpFile.txt");
            Assert.IsNotNull(elements);
            Assert.IsTrue(elements.Count>0);
            bool hasClass=false, hasMethod=false;
            foreach (var programElement in elements)
            {
                if(programElement as MethodElement != null)
                    hasMethod = true;
                if(programElement as ClassElement != null)
                    hasClass = true;

                Assert.IsTrue(programElement.RawSource != null);
            }
            Assert.IsTrue(hasClass && hasMethod);
        }
示例#14
0
        public void MethodLinksToClassTest()
        {
            return;

            //NOTE: this test fails because of a bug in srcML
            //please turn this test back on once we receive a fix
            //from the srcML guys
            SrcMLCSharpParser parser = new SrcMLCSharpParser();
            var          elements    = parser.Parse("..\\..\\Parser\\Parser.UnitTests\\TestFiles\\ImageCaptureCS.txt");
            ClassElement ImageCaptureClassElement = null;
            bool         foundMethod = false;

            // first find the class element
            foreach (ProgramElement pe in elements)
            {
                if (pe is ClassElement)
                {
                    ClassElement cls = (ClassElement)pe;
                    if (cls.Name == "ImageCapture")
                    {
                        ImageCaptureClassElement = cls;
                    }
                }
            }

            // then the method element that should link to it
            foreach (ProgramElement pe in elements)
            {
                if (pe is MethodElement)
                {
                    MethodElement method = (MethodElement)pe;
                    if (method.Name == "CaptureByHdc")
                    {
                        foundMethod = true;
                        Assert.AreEqual(method.ClassId, ImageCaptureClassElement.Id);
                        Assert.AreEqual(method.ClassName, ImageCaptureClassElement.Name);
                    }
                }
            }

            Assert.IsTrue(foundMethod);
        }
示例#15
0
 public void CSharpStructParserTest()
 {
     SrcMLCSharpParser parser = new SrcMLCSharpParser(generator);
     var elements = parser.Parse("TestFiles\\Struct1.cs.txt");
     bool hasStruct = false;
     foreach (var programElement in elements)
     {
         if (programElement as StructElement != null)
         {
             StructElement structElem = (StructElement)programElement;
             Assert.AreEqual(structElem.Name, "SimpleStruct");
             Assert.AreEqual(structElem.DefinitionLineNumber, 6);
             Assert.AreEqual(structElem.Namespace, "SimpleNamespace");
             Assert.AreEqual(structElem.AccessLevel, AccessLevel.Internal);
             Assert.True(structElem.FullFilePath.EndsWith("TestFiles\\Struct1.cs.txt"));
             hasStruct = true;
         }
     }
     Assert.IsTrue(hasStruct);
 }
示例#16
0
        public void CSharpStructParserTest()
        {
            SrcMLCSharpParser parser = new SrcMLCSharpParser(generator);
            var  elements            = parser.Parse("TestFiles\\Struct1.cs.txt");
            bool hasStruct           = false;

            foreach (var programElement in elements)
            {
                if (programElement as StructElement != null)
                {
                    StructElement structElem = (StructElement)programElement;
                    Assert.AreEqual(structElem.Name, "SimpleStruct");
                    Assert.AreEqual(structElem.DefinitionLineNumber, 6);
                    Assert.AreEqual(structElem.Namespace, "SimpleNamespace");
                    Assert.AreEqual(structElem.AccessLevel, AccessLevel.Internal);
                    Assert.True(structElem.FullFilePath.EndsWith("TestFiles\\Struct1.cs.txt"));
                    hasStruct = true;
                }
            }
            Assert.IsTrue(hasStruct);
        }
        public void ParseProperties()
        {
            var  parser          = new SrcMLCSharpParser(generator);
            var  elements        = parser.Parse("TestFiles\\ShortInheritance.txt");
            bool seenClass       = false;
            int  countProperties = 0;

            foreach (var programElement in elements)
            {
                if (programElement.ProgramElementType == ProgramElementType.Class)
                {
                    seenClass = true;
                }
                if (programElement.ProgramElementType == ProgramElementType.Property)
                {
                    countProperties++;
                }
            }
            Assert.IsTrue(seenClass);
            Assert.IsTrue(countProperties == 6);
        }
示例#18
0
        public void EnumParserTest()
        {
            SrcMLCSharpParser parser = new SrcMLCSharpParser(generator);
            var  elements            = parser.Parse("TestFiles\\ShortCSharpFile.txt");
            bool hasEnum             = false;

            foreach (var programElement in elements)
            {
                if (programElement as EnumElement != null)
                {
                    EnumElement enumElem = (EnumElement)programElement;
                    Assert.AreEqual(enumElem.Name, "LanguageEnum");
                    Assert.AreEqual(enumElem.DefinitionLineNumber, 7);
                    Assert.AreEqual(enumElem.Namespace, "Sando.Parser");
                    Assert.AreEqual(enumElem.Body, "Java C CSharp");
                    Assert.AreEqual(enumElem.AccessLevel, AccessLevel.Public);
                    Assert.True(enumElem.FullFilePath.EndsWith("TestFiles\\ShortCSharpFile.txt"));
                    hasEnum = true;
                }
            }
            Assert.IsTrue(hasEnum);
        }
示例#19
0
        public void CSharpRegionTest()
        {
            SrcMLCSharpParser parser = new SrcMLCSharpParser(generator);
            var elements             = parser.Parse("TestFiles\\RegionTest.txt");

            Assert.IsNotNull(elements);
            Assert.IsTrue(elements.Count == 2);
            bool hasClass = false, hasMethod = false;

            foreach (var programElement in elements)
            {
                if (programElement as MethodElement != null)
                {
                    hasMethod = true;
                }
                if (programElement as ClassElement != null)
                {
                    hasClass = true;
                }
            }
            Assert.IsTrue(hasClass && hasMethod);
        }
示例#20
0
        public void ParseConstructorTest()
        {
            bool hasConstructor = false;
            var  parser         = new SrcMLCSharpParser(generator);
            var  elements       = parser.Parse("TestFiles\\ShortCSharpFile.txt");

            Assert.IsNotNull(elements);
            foreach (ProgramElement pe in elements)
            {
                if (pe is MethodElement)
                {
                    var methodElement = (MethodElement)pe;
                    if (methodElement.IsConstructor)
                    {
                        hasConstructor = true;
                        Assert.AreEqual(methodElement.Name, "SrcMLGenerator");
                        Assert.AreEqual(methodElement.DefinitionLineNumber, 21);
                        Assert.AreEqual(methodElement.AccessLevel, AccessLevel.Public);
                    }
                }
            }
            Assert.IsTrue(hasConstructor);
        }
示例#21
0
        public void BasicParserTest()
        {
            SrcMLCSharpParser parser = new SrcMLCSharpParser(generator);
            var elements             = parser.Parse("TestFiles\\ShortCSharpFile.txt");

            Assert.IsNotNull(elements);
            Assert.IsTrue(elements.Count > 0);
            bool hasClass = false, hasMethod = false;

            foreach (var programElement in elements)
            {
                if (programElement as MethodElement != null)
                {
                    hasMethod = true;
                }
                if (programElement as ClassElement != null)
                {
                    hasClass = true;
                }

                Assert.IsTrue(programElement.RawSource != null);
            }
            Assert.IsTrue(hasClass && hasMethod);
        }
示例#22
0
 public void EnumParserTest()
 {
     SrcMLCSharpParser parser = new SrcMLCSharpParser(generator);
     var elements = parser.Parse("TestFiles\\ShortCSharpFile.txt");
     bool hasEnum = false;
     foreach(var programElement in elements)
     {
         if(programElement as EnumElement != null)
         {
             EnumElement enumElem = (EnumElement)programElement;
             Assert.AreEqual(enumElem.Name, "LanguageEnum");
             Assert.AreEqual(enumElem.DefinitionLineNumber, 7);
             Assert.AreEqual(enumElem.Namespace, "Sando.Parser");
             Assert.AreEqual(enumElem.Body, "Java C CSharp");
             Assert.AreEqual(enumElem.AccessLevel, AccessLevel.Public);
             Assert.True(enumElem.FullFilePath.EndsWith("TestFiles\\ShortCSharpFile.txt"));
             hasEnum = true;
         }
     }
     Assert.IsTrue(hasEnum);
 }
示例#23
0
 public void ParsePossiblyFailingFile()
 {
     var parser = new SrcMLCSharpParser(generator);
     var elements = parser.Parse("TestFiles\\MESTParsingFile.txt");
     Assert.IsNotNull(elements);
     Assert.IsTrue(elements.Count > 0);
 }
示例#24
0
        public void ParseMethodTest()
        {
            var parser = new SrcMLCSharpParser(generator);
            var elements = parser.Parse("TestFiles\\ShortCSharpFile.txt");
            Assert.IsNotNull(elements);
            Assert.IsTrue(elements.Count>0);

            CheckParseOfShortCSharpFile(elements);
        }
示例#25
0
 public void ParseConstructorTest()
 {
     bool hasConstructor = false;
     var parser = new SrcMLCSharpParser(generator);
     var elements = parser.Parse("TestFiles\\ShortCSharpFile.txt");
     Assert.IsNotNull(elements);
     foreach(ProgramElement pe in elements)
     {
         if(pe is MethodElement)
         {
             var methodElement = (MethodElement)pe;
             if(methodElement.IsConstructor)
             {
                 hasConstructor = true;
                 Assert.AreEqual(methodElement.Name, "SrcMLGenerator");
                 Assert.AreEqual(methodElement.DefinitionLineNumber, 21);
                 Assert.AreEqual(methodElement.AccessLevel, AccessLevel.Public);
             }
         }
     }
     Assert.IsTrue(hasConstructor);
 }
示例#26
0
 public void ParseClassTest()
 {
     bool seenClass = false;
     var parser = new SrcMLCSharpParser(generator);
     var elements = parser.Parse("TestFiles\\ShortCSharpFile.txt");
     Assert.IsNotNull(elements);
     Assert.IsTrue(elements.Count > 0);
     foreach(ProgramElement pe in elements)
     {
         if(pe is ClassElement)
         {
             ClassElement classElem = (ClassElement)pe;
             if(classElem.Name == "SrcMLGenerator")
             {
                 seenClass = true;
                 Assert.AreEqual(classElem.DefinitionLineNumber, 14);
                 Assert.AreEqual(classElem.AccessLevel, AccessLevel.Public);
                 Assert.AreEqual(classElem.Namespace, "Sando.Parser");
                 Assert.True(classElem.FullFilePath.EndsWith("TestFiles\\ShortCSharpFile.txt"));
             }
         }
     }
     Assert.IsTrue(seenClass);
 }
示例#27
0
        public void MethodLinksToClassTest()
        {
            return;

            //NOTE: this test fails because of a bug in srcML
            //please turn this test back on once we receive a fix
            //from the srcML guys
            SrcMLCSharpParser parser = new SrcMLCSharpParser();
            var elements = parser.Parse("..\\..\\Parser\\Parser.UnitTests\\TestFiles\\ImageCaptureCS.txt");
            ClassElement ImageCaptureClassElement = null;
            bool foundMethod = false;

            // first find the class element
            foreach(ProgramElement pe in elements)
            {
                if(pe is ClassElement)
                {
                    ClassElement cls = (ClassElement)pe;
                    if(cls.Name == "ImageCapture")
                    {
                        ImageCaptureClassElement = cls;
                    }
                }
            }

            // then the method element that should link to it
            foreach(ProgramElement pe in elements)
            {
                if(pe is MethodElement)
                {
                    MethodElement method = (MethodElement)pe;
                    if(method.Name == "CaptureByHdc")
                    {
                        foundMethod = true;
                        Assert.AreEqual(method.ClassId, ImageCaptureClassElement.Id);
                        Assert.AreEqual(method.ClassName, ImageCaptureClassElement.Name);
                    }
                }
            }

            Assert.IsTrue(foundMethod);
        }
示例#28
0
        public void GIVEN_file_with_readonly_and_static_elements_WHEN_parse_method_is_called_THEN_valid_access_levels_are_retrieved()
        {
            var parser = new SrcMLCSharpParser(generator);
            var elements = parser.Parse("TestFiles\\ShortCSharpFile.txt");

            var readonlyField = elements.OfType<FieldElement>().FirstOrDefault(f => f.Name == "Language");
            Assert.IsNotNull(readonlyField);
            Assert.AreEqual(readonlyField.AccessLevel, AccessLevel.Internal);

            var staticMethod = elements.OfType<MethodElement>().FirstOrDefault(f => f.Name == "SetSrcMLLocation");
            Assert.IsNotNull(staticMethod);
            Assert.AreEqual(staticMethod.AccessLevel, AccessLevel.Public);
        }
示例#29
0
 public void GenerateSrcMLShortestFileTest()
 {
     var parser = new SrcMLCSharpParser(generator);
     var srcML = parser.Parse("TestFiles\\ShortestCSharpFile.txt");
     Assert.IsTrue(srcML!=null);
 }
示例#30
0
 public static List<ProgramElement> ParseCsharpFile(string filePath)
 {
     SrcMLCSharpParser parser = new SrcMLCSharpParser(new ABB.SrcML.SrcMLGenerator(TestUtils.SrcMLDirectory));
     var elements = parser.Parse(filePath);
     return elements;
 }
 public void ParseProperties()
 {
     var parser = new SrcMLCSharpParser(generator);
     var elements = parser.Parse("TestFiles\\ShortInheritance.txt");
     bool seenClass = false;
     int countProperties = 0;
     foreach (var programElement in elements)
     {
         if(programElement.ProgramElementType == ProgramElementType.Class)
             seenClass = true;
         if(programElement.ProgramElementType == ProgramElementType.Property)
             countProperties++;
     }
     Assert.IsTrue(seenClass);
     Assert.IsTrue(countProperties==6);
 }