diff options
Diffstat (limited to 'src/System.ServiceModel.Syndication/tests/BasicScenarioTests.cs')
-rw-r--r-- | src/System.ServiceModel.Syndication/tests/BasicScenarioTests.cs | 116 |
1 files changed, 112 insertions, 4 deletions
diff --git a/src/System.ServiceModel.Syndication/tests/BasicScenarioTests.cs b/src/System.ServiceModel.Syndication/tests/BasicScenarioTests.cs index ef2665785e..ee89b27219 100644 --- a/src/System.ServiceModel.Syndication/tests/BasicScenarioTests.cs +++ b/src/System.ServiceModel.Syndication/tests/BasicScenarioTests.cs @@ -9,6 +9,7 @@ using System.ServiceModel.Syndication; using System.Xml; using System.IO; using Xunit; +using System.Linq; namespace System.ServiceModel.Syndication.Tests { @@ -285,19 +286,126 @@ namespace System.ServiceModel.Syndication.Tests } [Fact] - [ActiveIssue(25156)] public static void SyndicationFeed_Rss_WrongDateFormat() { // *** SETUP *** \\ - Rss20FeedFormatter rssformatter = new Rss20FeedFormatter(); - XmlReader reader = XmlReader.Create(@"rssSpecExampleWrongDateFormat.xml"); // *** EXECUTE *** \\ SyndicationFeed res = SyndicationFeed.Load(reader); // *** ASSERT *** \\ - Assert.True(!res.LastUpdatedTime.Equals(new DateTimeOffset())); + Assert.True(res != null, "res was null."); + Assert.Equal(new DateTimeOffset(2016, 8, 23, 16, 8, 0, new TimeSpan(-4, 0, 0)), res.LastUpdatedTime); + Assert.True(res.Items != null, "res.Items was null."); + Assert.True(res.Items.Count() == 4, $"res.Items.Count() was not as expected. Expected: 4; Actual: {res.Items.Count()}"); + SyndicationItem[] items = res.Items.ToArray(); + DateTimeOffset dateTimeOffset; + Assert.Throws<XmlException>(() => dateTimeOffset = items[2].PublishDate); + } + + [Fact] + public static void SyndicationFeed_Rss_DateTimeParser() + { + // *** SETUP *** \\ + // *** EXECUTE *** \\ + SyndicationFeed feed; + DateTimeOffset dto = new DateTimeOffset(2017, 1, 2, 3, 4, 5, new TimeSpan(0)); + using (XmlReader reader = XmlReader.Create(@"RssSpecCustomParser.xml")) + { + var formatter = new Rss20FeedFormatter(); + formatter.DateTimeParser = (value, localName, ns) => dto; + formatter.ReadFrom(reader); + feed = formatter.Feed; + } + + // *** ASSERT *** \\ + Assert.True(feed != null, "res was null."); + Assert.Equal(dto, feed.LastUpdatedTime); + } + + [Fact] + public static void SyndicationFeed_Rss_UriParser() + { + // *** SETUP *** \\ + // *** EXECUTE *** \\ + SyndicationFeed feed; + using (XmlReader reader = XmlReader.Create(@"RssSpecCustomParser.xml")) + { + var formatter = new Rss20FeedFormatter + { + UriParser = (value, kind, localName, ns) => new Uri($"http://value-{value}-kind-{kind}-localName-{localName}-ns-{ns}-end") + }; + formatter.ReadFrom(reader); + feed = formatter.Feed; + } + + // *** ASSERT *** \\ + Assert.True(feed != null, "res was null."); + Assert.Equal(new Uri("http://value-ChannelBase-kind-relativeorabsolute-localName-channel-ns--end"), feed.BaseUri); + Assert.Equal(new Uri("http://value-ImageUrl-kind-relativeorabsolute-localName-url-ns--end"), feed.ImageUrl); + Assert.NotNull(feed.Links); + Assert.Equal(1, feed.Links.Count); + Assert.Equal(new Uri("http://value-FeedLink-kind-relativeorabsolute-localName-link-ns--end"), feed.Links.First().Uri); + + Assert.True(feed.Items != null, "res.Items was null."); + Assert.Equal(1, feed.Items.Count()); + Assert.Equal(1, feed.Items.First().Links.Count); + Assert.Equal(new Uri("http://value-itemlink-kind-relativeorabsolute-localName-link-ns--end"), feed.Items.First().Links.First().Uri); + } + + [Fact] + public static void SyndicationFeed_Atom_DateTimeParser() + { + // *** SETUP *** \\ + // *** EXECUTE *** \\ + SyndicationFeed feed; + DateTimeOffset dto = new DateTimeOffset(2017, 1, 2, 3, 4, 5, new TimeSpan(0)); + using (XmlReader reader = XmlReader.Create(@"SimpleAtomFeedCustomParser.xml")) + { + var formatter = new Atom10FeedFormatter + { + DateTimeParser = (value, localName, ns) => dto + }; + formatter.ReadFrom(reader); + feed = formatter.Feed; + } + + // *** ASSERT *** \\ + Assert.True(feed != null, "res was null."); + Assert.Equal(dto, feed.LastUpdatedTime); + + Assert.True(feed.Items != null, "res.Items was null."); + Assert.Equal(1, feed.Items.Count()); + Assert.Equal(dto, feed.Items.First().LastUpdatedTime); + } + + [Fact] + public static void SyndicationFeed_Atom_UriParser() + { + // *** SETUP *** \\ + // *** EXECUTE *** \\ + SyndicationFeed feed; + using (XmlReader reader = XmlReader.Create(@"SimpleAtomFeedCustomParser.xml")) + { + var formatter = new Atom10FeedFormatter + { + UriParser = (value, kind, localName, ns) => new Uri($"http://value-{value}-kind-{kind}-localName-{localName}-ns-{ns}-end") + }; + formatter.ReadFrom(reader); + feed = formatter.Feed; + } + + // *** ASSERT *** \\ + Assert.True(feed != null, "res was null."); + Assert.Equal(new Uri("http://value-FeedLogo-kind-relativeorabsolute-localName-logo-ns-http//www.w3.org/2005/Atom-end"), feed.ImageUrl); + + Assert.True(feed.Items != null, "res.Items was null."); + Assert.Equal(1, feed.Items.Count()); + Assert.NotNull(feed.Items.First().Links); + Assert.Equal(1, feed.Items.First().Links.Count); + Assert.Equal(new Uri("http://value-EntryLinkHref-kind-relativeorabsolute-localName-link-ns-http//www.w3.org/2005/Atom-end"), feed.Items.First().Links.First().Uri); + Assert.Equal(new Uri("http://value-EntryContentSrc-kind-relativeorabsolute-localName-content-ns-http://www.w3.org/2005/Atom-end"), ((UrlSyndicationContent)feed.Items.First().Content).Url); } [Fact] |