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); }
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); }
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"); }
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()); }
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()); }
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 }
/// <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); } }
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); }
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()); }
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); }
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); }
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()); }
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()); }
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); }
/// <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)); }