Exemplo n.º 1
0
        public void AdditionalFileService_ParseXmlFile_ValidXml_Parsed()
        {
            var additionalFile = new TestAdditionalDocument(
                ExampleXmlFileName,
                ValidXml);

            var additionalFileService = new AdditionalFileService(ImmutableArray.Create <AdditionalText>(additionalFile), FileParseRule);

            var parsedFile = additionalFileService.ParseXmlFile(additionalFile);

            Assert.Empty(additionalFileService.ParsingDiagnostics);
            Assert.Equal(3, parsedFile.Elements("Entry").Count());
        }
Exemplo n.º 2
0
        public void AdditionalFileService_ParseXmlFile_InvalidXml_ParsingDiagnostic()
        {
            const string ExpectedExceptionMessage =
                "The 'Entry' start tag on line 1 position 8 does not match the end tag of 'Root'. Line 1, position 17.";

            var additionalFile        = new TestAdditionalDocument(ExampleXmlFileName, InvalidXml);
            var additionalFileService = new AdditionalFileService(ImmutableArray.Create <AdditionalText>(additionalFile), FileParseRule);

            additionalFileService.ParseXmlFile(additionalFile);

            Assert.Equal(1, additionalFileService.ParsingDiagnostics.Count);
            Assert.Equal(FileParseRuleId, additionalFileService.ParsingDiagnostics[0].Id);
            Assert.Equal(ExpectedExceptionMessage, additionalFileService.ParsingDiagnostics[0].GetMessage());
        }
Exemplo n.º 3
0
        public void AdditionalFileService_ParseXmlFile_MultipleFilesWithInvalidXml_ParsingDiagnostics()
        {
            var additionalFiles = ImmutableArray.Create <AdditionalText>(
                new TestAdditionalDocument("a.xml", InvalidXml),
                new TestAdditionalDocument("b.xml", InvalidXml));

            var additionalFileService = new AdditionalFileService(additionalFiles, FileParseRule);

            foreach (var file in additionalFiles)
            {
                additionalFileService.ParseXmlFile(file);
            }

            Assert.Equal(2, additionalFileService.ParsingDiagnostics.Count);
        }
Exemplo n.º 4
0
            public override void Initialize(AnalysisContext context)
            {
                context.RegisterCompilationStartAction(compilationStartContext =>
                {
                    var additionalFileService = new AdditionalFileService(compilationStartContext.Options.AdditionalFiles, FileParseRule);

                    foreach (AdditionalText file in additionalFileService.GetFilesMatchingPattern(ExampleXmlFileName))
                    {
                        additionalFileService.ParseXmlFile(file);
                    }

                    // Register a random SyntaxNodeAction to avoid error RS1013: Start action has no registered non-end actions
                    compilationStartContext.RegisterSyntaxNodeAction(_ => { }, SyntaxKind.ClassDeclaration);
                    compilationStartContext.RegisterCompilationEndAction(additionalFileService.ReportAnyParsingDiagnostics);
                });
            }