Ejemplo n.º 1
0
        public void TestRoundTripWithDefaultExtension(string sourceFileName, bool useCompression)
        {
            var sourceFilePath = Path.Combine(TestInputPath, sourceFileName);
            var destFilePath   = Path.Combine(TestInputPath, DefaultInputName);

            LibSrcMLRunner runner = new LibSrcMLRunner();

            runner.GenerateSrcMLFromFile(sourceFilePath, destFilePath + ".cpp", Language.CPlusPlus, new Collection <UInt32>()
            {
                LibSrcMLRunner.SrcMLOptions.SRCML_OPTION_POSITION
            }, new Dictionary <string, Language>()
            {
            });
            Assert.That(File.Exists(destFilePath + ".cpp0.xml"));

            var fileUnit      = SrcMLElement.Load(destFilePath + ".cpp0.xml");
            var dataGenerator = new DataGenerator();
            var nsd           = dataGenerator.Parse(fileUnit.Element(SRC.Unit)) as NamespaceDefinition;

            string outputFileName = Path.ChangeExtension(DefaultOutputName, useCompression ? XmlSerialization.DEFAULT_COMPRESSED_EXTENSION : XmlSerialization.DEFAULT_EXTENSION);

            XmlSerialization.WriteElement(nsd, outputFileName);
            var nsdFromFile = XmlSerialization.Load(outputFileName) as NamespaceDefinition;

            DataAssert.StatementsAreEqual(nsd, nsdFromFile);
        }
Ejemplo n.º 2
0
        public void SingleFileTest()
        {
            generator.GenerateSrcMLFromFile("srcmltest\\foo.c", "srcml_xml\\singlefile.xml");
            var unit = SrcMLElement.Load("srcml_xml\\singlefile.xml");

            Assert.IsNotNull(unit);
            Assert.AreEqual("srcmltest\\foo.c", unit.Attribute("filename").Value);
        }
Ejemplo n.º 3
0
 private void AddSourceFiles()
 {
     Console.WriteLine("Thread 2: adding file: " + @"TestFiles\small_json_reader.cpp.xml");
     manager.AddSrcMLFile(SrcMLElement.Load(@"TestFiles\small_json_reader.cpp.xml"));
     Console.WriteLine("Thread 2: adding file: " + @"TestFiles\function_def.cpp.xml");
     manager.AddSrcMLFile(SrcMLElement.Load(@"TestFiles\function_def.cpp.xml"));
     Console.WriteLine("Thread 2: adding file: " + @"TestFiles\function_def2.cpp");
     manager.AddSourceFile(@"TestFiles\function_def2.cpp");
 }
Ejemplo n.º 4
0
        public void TestCSharpExpressionWithDefaultKeyword()
        {
            var generator = new SrcMLGenerator(Path.Combine(SrcMLHelper.GetSrcMLRootDirectory(), SrcMLHelper.srcMLExecutableLocation));

            generator.GenerateSrcMLFromFile("external\\TestCSharpExpressionWithDefaultKeyword.cs", "external_xml\\TestCSharpExpressionWithDefaultKeyword.cs.xml");
            var fileUnit = SrcMLElement.Load("external_xml\\TestCSharpExpressionWithDefaultKeyword.cs.xml");
            var classB   = fileUnit.Element(SRC.Class);

            Assert.IsNotNull(classB);
            Assert.AreEqual(2, classB.Descendants(SRC.Function).Count());
        }
Ejemplo n.º 5
0
        public void TestCSharpExpressionWithDefaultKeyword()
        {
            var generator = new SrcMLGenerator(TestConstants.SrcmlPath);

            generator.GenerateSrcMLFromFile("external\\TestCSharpExpressionWithDefaultKeyword.cs", "external_xml\\TestCSharpExpressionWithDefaultKeyword.cs.xml");
            var fileUnit = SrcMLElement.Load("external_xml\\TestCSharpExpressionWithDefaultKeyword.cs.xml");
            var classB   = fileUnit.Element(SRC.Class);

            Assert.IsNotNull(classB);
            Assert.AreEqual(2, classB.Descendants(SRC.Function).Count());
        }
Ejemplo n.º 6
0
        public void TestCacheRoundTrip()
        {
            manager.AddSrcMLFile(SrcMLElement.Load(@"TestFiles\json_reader.cpp.xml"));
            int beforeCount = manager.GetSwumData().Count;
            //string tempFile = Path.GetTempFileName();
            string tempFile = "swum_cache.txt";

            manager.PrintSwumCache(tempFile);
            manager.ReadSwumCache(tempFile);
            Assert.AreEqual(beforeCount, manager.GetSwumData().Count);
            //TODO: add assertions that verify contents of SWUM
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Generates SWUMs for the method definitions within the given source file.
        /// </summary>
        /// <param name="sourcePath">The path to the source file.</param>
        public void AddSourceFile(string sourcePath)
        {
            //Don't try to process files that SrcML can't handle
            if (Archive != null && !Archive.IsValidFileExtension(sourcePath))
            {
                return;
            }
            var fileExt = Path.GetExtension(sourcePath);

            if (fileExt == null || (Generator != null && !Generator.ExtensionMapping.ContainsKey(fileExt)))
            {
                return;
            }

            sourcePath = Path.GetFullPath(sourcePath);
            XElement fileElement;

            if (Archive != null)
            {
                fileElement = Archive.GetXElementForSourceFile(sourcePath);
                if (fileElement == null)
                {
                    LogEvents.SwumFileNotFoundInArchive(this, sourcePath);
                }
            }
            else if (Generator != null)
            {
                string outFile = Path.GetTempFileName();
                try {
                    Generator.GenerateSrcMLFromFile(sourcePath, outFile);
                    fileElement = SrcMLElement.Load(outFile);
                    if (fileElement == null)
                    {
                        LogEvents.SwumErrorGeneratingSrcML(this, sourcePath);
                    }
                } finally {
                    File.Delete(outFile);
                }
            }
            else
            {
                throw new InvalidOperationException("SwumManager - Archive and Generator are both null");
            }

            try {
                if (fileElement != null)
                {
                    AddSwumForMethodDefinitions(fileElement, sourcePath);
                }
            } catch (Exception e) {
                LogEvents.SwumErrorCreatingSwum(this, sourcePath, e);
            }
        }
Ejemplo n.º 8
0
        public List <ProgramElement> Parse(string fileName)
        {
            var      programElements = new List <ProgramElement>();
            XElement sourceElements;

            if (SrcMLService != null)
            {
                sourceElements = SrcMLService.GetXElementForSourceFile(fileName);
                if (sourceElements != null)
                {
                    programElements = Parse(fileName, sourceElements);
                }
                else
                {
                    FileLogger.DefaultLogger.ErrorFormat("SrcMLCppParser: File not found in SrcMLService: {0}", fileName);
                }
            }
            else if (Archive != null)
            {
                sourceElements = Archive.GetXElementForSourceFile(fileName);
                if (sourceElements != null)
                {
                    programElements = Parse(fileName, sourceElements);
                }
                else
                {
                    LogEvents.ParserFileNotFoundInArchiveError(this, fileName);
                }
            }
            else if (Generator != null)
            {
                string outFile = Path.GetTempFileName();
                try {
                    //This is a C++ parser, so we'll convert the input file as C++ no matter what the file extension is
                    Generator.GenerateSrcMLFromFile(fileName, outFile, Language.CPlusPlus);
                    sourceElements = SrcMLElement.Load(outFile);
                    if (sourceElements != null)
                    {
                        programElements = Parse(fileName, sourceElements);
                    }
                } finally {
                    File.Delete(outFile);
                }
            }
            else
            {
                throw new InvalidOperationException("SrcMLCppParser - Archive and Generator are both null");
            }

            return(programElements);
        }
Ejemplo n.º 9
0
        public void TestCSharpUsingStatement()
        {
            var generator = new SrcMLGenerator(TestConstants.SrcmlPath);

            generator.GenerateSrcMLFromFile("external\\TestCSharpUsingStatement.cs", "external_xml\\TestCSharpUsingStatement.cs.xml");
            var fileUnit = SrcMLElement.Load("external_xml\\TestCSharpUsingStatement.cs.xml");

            var usingBlock = fileUnit.Elements(SRC.Using).FirstOrDefault();

            Assert.IsNotNull(usingBlock);

            Assert.AreEqual(1, usingBlock.Elements(SRC.Declaration).Count());
            Assert.AreEqual(1, usingBlock.Elements(SRC.Block).Count());
        }
Ejemplo n.º 10
0
        public void TestCppStaticTypeModifier()
        {
            var generator = new SrcMLGenerator(TestConstants.SrcmlPath);

            generator.GenerateSrcMLFromFile("external\\TestCppTypeModifiers.cpp", "external_xml\\TestCppStaticModifier.cpp.xml");
            var fileUnit       = SrcMLElement.Load("external_xml\\TestCppStaticModifier.cpp.xml");
            var typeWithStatic = fileUnit.Descendants(SRC.Type).LastOrDefault();

            Assert.IsNotNull(typeWithStatic);
            var staticModifier = typeWithStatic.Elements(SRC.Specifier).FirstOrDefault();

            Assert.IsNotNull(staticModifier);
            Assert.AreEqual("static", staticModifier.Value);
        }
Ejemplo n.º 11
0
        public void TestCppStaticTypeModifier()
        {
            var generator = new SrcMLGenerator(Path.Combine(SrcMLHelper.GetSrcMLRootDirectory(), SrcMLHelper.srcMLExecutableLocation));

            generator.GenerateSrcMLFromFile("external\\TestCppTypeModifiers.cpp", "external_xml\\TestCppStaticModifier.cpp.xml");
            var fileUnit       = SrcMLElement.Load("external_xml\\TestCppStaticModifier.cpp.xml");
            var typeWithStatic = fileUnit.Descendants(SRC.Declaration).LastOrDefault();

            Assert.IsNotNull(typeWithStatic);
            var staticModifier = typeWithStatic.Elements(SRC.Specifier).FirstOrDefault();

            Assert.IsNotNull(staticModifier);
            Assert.AreEqual("static", staticModifier.Value);
        }
Ejemplo n.º 12
0
        public void TestCSharpUsingStatement()
        {
            var generator = new SrcMLGenerator(Path.Combine(SrcMLHelper.GetSrcMLRootDirectory(), SrcMLHelper.srcMLExecutableLocation));

            generator.GenerateSrcMLFromFile("external\\TestCSharpUsingStatement.cs", "external_xml\\TestCSharpUsingStatement.cs.xml");
            var fileUnit = SrcMLElement.Load("external_xml\\TestCSharpUsingStatement.cs.xml");

            var usingBlock = fileUnit.Elements(SRC.Using_Stmt).FirstOrDefault();

            Assert.IsNotNull(usingBlock);

            Assert.AreEqual(1, usingBlock.Elements(SRC.Init).Count());
            Assert.AreEqual(1, usingBlock.Elements(SRC.Block).Count());
        }
Ejemplo n.º 13
0
        public void TestCSharpExpressionWithRemove()
        {
            var generator = new SrcMLGenerator(TestConstants.SrcmlPath);

            generator.GenerateSrcMLFromFile("external\\TestCSharpExpressionWithRemove.cs", "external_xml\\TestCSharpExpressionWithRemove.cs.xml");
            var fileUnit = SrcMLElement.Load("external_xml\\TestCSharpExpressionWithRemove.cs.xml");

            var method = fileUnit.Descendants(SRC.Function).FirstOrDefault();

            Assert.IsNotNull(method);
            var methodBlock = method.Element(SRC.Block);

            Assert.IsNotNull(methodBlock);
            Assert.AreEqual(1, methodBlock.Elements(SRC.ExpressionStatement).Count());
        }
Ejemplo n.º 14
0
        public void TestCSharpExpressionWithRemove()
        {
            var generator = new SrcMLGenerator(Path.Combine(SrcMLHelper.GetSrcMLRootDirectory(), SrcMLHelper.srcMLExecutableLocation));

            generator.GenerateSrcMLFromFile("external\\TestCSharpExpressionWithRemove.cs", "external_xml\\TestCSharpExpressionWithRemove.cs.xml");
            var fileUnit = SrcMLElement.Load("external_xml\\TestCSharpExpressionWithRemove.cs.xml");

            var method = fileUnit.Descendants(SRC.Function).FirstOrDefault();

            Assert.IsNotNull(method);
            var methodBlock = method.Element(SRC.Block);

            Assert.IsNotNull(methodBlock);
            Assert.AreEqual(1, methodBlock.Elements(SRC.ExpressionStatement).Count());
        }
        public void TestRoundTrip(string sourceFileName, bool compressOutput)
        {
            var sourceFilePath = Path.Combine(TestInputPath, sourceFileName);

            var srcMLGenerator = new SrcMLGenerator("SrcML");
            var dataGenerator  = new DataGenerator();

            Assert.That(srcMLGenerator.Generate(sourceFilePath, DefaultInputName));
            var fileUnit = SrcMLElement.Load(DefaultInputName);
            var nsd      = dataGenerator.Parse(fileUnit) as NamespaceDefinition;

            XmlSerialization.WriteElement(nsd, DefaultOutputName, compressOutput);
            var nsdFromFile = XmlSerialization.Load(DefaultOutputName, compressOutput) as NamespaceDefinition;

            DataAssert.StatementsAreEqual(nsd, nsdFromFile);
        }
        public void TestRoundTripWithDefaultExtension(string sourceFileName, bool useCompression)
        {
            var sourceFilePath = Path.Combine(TestInputPath, sourceFileName);

            var srcMLGenerator = new SrcMLGenerator("SrcML");
            var dataGenerator  = new DataGenerator();

            Assert.That(srcMLGenerator.Generate(sourceFilePath, DefaultInputName));
            var fileUnit = SrcMLElement.Load(DefaultInputName);
            var nsd      = dataGenerator.Parse(fileUnit) as NamespaceDefinition;

            string outputFileName = Path.ChangeExtension(DefaultOutputName, useCompression ? XmlSerialization.DEFAULT_COMPRESSED_EXTENSION : XmlSerialization.DEFAULT_EXTENSION);

            XmlSerialization.WriteElement(nsd, outputFileName);
            var nsdFromFile = XmlSerialization.Load(outputFileName) as NamespaceDefinition;

            DataAssert.StatementsAreEqual(nsd, nsdFromFile);
        }
Ejemplo n.º 17
0
        /// <summary>
        /// Parses a srcML file and returns a <see cref="NamespaceDefinition"/>
        /// </summary>
        /// <param name="srcMLFileName">The path to the srcML file</param>
        /// <returns>The namespace definition for <paramref name="srcMLFileName"/></returns>
        public NamespaceDefinition Parse(string srcMLFileName)
        {
            var unit = SrcMLElement.Load(srcMLFileName);

            return(Parse(unit));
        }