コード例 #1
0
        public void ParseAndFormat(SampleFeed embeddedDocument)
        {
            // arrange
            var document1 = embeddedDocument.XDocument;

            // action
            var tryParseResult = Rss20FeedParser.TryParseRss20Feed(document1, out var feed);

            Assert.True(tryParseResult);

            var tryFormatResult = Rss20FeedFormatter.TryFormatRss20Feed(feed, out var document2);

            Assert.True(tryFormatResult);

            var xmlWriterSettings = new XmlWriterSettings {
                Indent = true
            };
            var xmlStringBuilder1 = new StringBuilder();
            var xmlStringBuilder2 = new StringBuilder();

            using (var xmlWriter1 = XmlWriter.Create(xmlStringBuilder1, xmlWriterSettings))
                using (var xmlWriter2 = XmlWriter.Create(xmlStringBuilder2, xmlWriterSettings))
                {
                    document1.WriteTo(xmlWriter1);
                    document2.WriteTo(xmlWriter2);
                    xmlWriter1.Flush();
                    xmlWriter2.Flush();

                    // assert
                    var xmlString1 = xmlStringBuilder1.ToString();
                    var xmlString2 = xmlStringBuilder2.ToString();
                    Assert.Equal(xmlString1, xmlString2);
                }
        }
コード例 #2
0
        public void ParseWithoutCrashing(SampleFeed embeddedDocument)
        {
            // arrange
            var document = embeddedDocument.XDocument;

            // action
            // ReSharper disable once UnusedVariable
            var tryParseResult = Rss20FeedParser.TryParseRss20Feed(document, out var parsedFeed);

            // assert
            Assert.True(tryParseResult);
        }
コード例 #3
0
            public override bool CustomFilter(SampleFeed x)
            {
                if (x.XDocument?.Root?.Name != Rss10Constants.RdfNamespace + "RDF")
                {
                    return(false);
                }

                var recognizedNamespaceNames = Rss10Constants.RecognizedNamespaces.Select(y => y.NamespaceName).ToHashSet();

                if (!recognizedNamespaceNames.Contains(x.XDocument?.Root?.Attribute("xmlns")?.Value))
                {
                    return(false);
                }

                return(true);
            }
コード例 #4
0
        public void ParseSampleFeedWithBlueShedSampleExtension(SampleFeed embeddedDocument)
        {
            // arrange
            var document1 = embeddedDocument.JsonDocument;

            // action
            var tryParseResult = JsonFeedParser.TryParseJsonFeed(document1, out var feed, new ExtensionManifestDirectory {
                new BlueShedSampleExtensionManifest()
            });

            Assert.True(tryParseResult);

            // assert
            Assert.Equal(1, feed.Extensions.Count);
            var blueShedExtension = (BlueShedSampleExtension)feed.Extensions.SingleOrDefault(x => x is BlueShedSampleExtension);

            Assert.NotNull(blueShedExtension);
            Assert.Equal("https://blueshed-podcasts.com/json-feed-extension-docs", blueShedExtension.About);
        }
コード例 #5
0
        public void ParseAndFormat(SampleFeed embeddedDocument)
        {
            // arrange
            var document1 = embeddedDocument.JsonDocument;

            // action
            var tryParseResult = JsonFeedParser.TryParseJsonFeed(document1, out var feed);

            Assert.True(tryParseResult);

            var tryFormatResult = JsonFeedFormatter.TryFormatJsonFeed(feed, out var document2);

            Assert.True(tryFormatResult);

            using (var stringWriter1 = new StringWriter())
                using (var stringWriter2 = new StringWriter())
                    using (var jsonWriter1 = new JsonTextWriter(stringWriter1)
                    {
                        Formatting = Formatting.Indented,
                        StringEscapeHandling = StringEscapeHandling.EscapeHtml,
                        Indentation = 4,
                    })
                        using (var jsonWriter2 = new JsonTextWriter(stringWriter2)
                        {
                            Formatting = Formatting.Indented,
                            StringEscapeHandling = StringEscapeHandling.EscapeHtml,
                            Indentation = 4,
                        })
                        {
                            document1.WriteTo(jsonWriter1);
                            document2.WriteTo(jsonWriter2);
                            jsonWriter1.Flush();
                            jsonWriter2.Flush();

                            // assert
                            var jsonString1 = stringWriter1.ToString();
                            var jsonString2 = stringWriter2.ToString();
                            Assert.Equal(jsonString1, jsonString2);
                        }
        }
コード例 #6
0
 public override bool CustomFilter(SampleFeed x) => x.XDocument?.Root?.Name == "rss";
コード例 #7
0
 public override bool CustomFilter(SampleFeed x) => x.JsonDocument != default;
コード例 #8
0
 public override bool CustomFilter(SampleFeed x) => x.XDocument?.Root?.Name.LocalName == "feed";