@@ -18,9 +18,9 @@ public void BasicRSSFeedTest()
1818
1919 Assert . AreEqual ( 2 , items . Length ) ;
2020
21- Assert . AreEqual ( "http://example.org/foo/bar/1" , items [ 0 ] . Uri . ToString ( ) ) ;
21+ Assert . AreEqual ( "http://example.org/foo/bar/1" , items [ 0 ] . Uri ? . ToString ( ) ) ;
2222 Assert . AreEqual ( "Title 1" , items [ 0 ] . Title ) ;
23- Assert . IsTrue ( items [ 0 ] . Summary . StartsWith ( "Lorem ipsum dolor sit" ) ) ;
23+ Assert . IsTrue ( items [ 0 ] . Summary ? . StartsWith ( "Lorem ipsum dolor sit" ) ) ;
2424 Assert . IsNull ( items [ 0 ] . Content ) ;
2525 Assert . AreEqual ( "tag:example.org,1999:blog-123456789123456789123456789.post-987564321987654231" , items [ 0 ] . Id ) ;
2626 Assert . AreEqual ( DateTimeOffset . Parse ( "2014-04-16T13:57:35.0000000+02:00" , CultureInfo . InvariantCulture , DateTimeStyles . None ) , items [ 0 ] . PublishDate ) ;
@@ -34,8 +34,8 @@ public void BasicRSSFeedTest()
3434 Assert . AreEqual ( DateTimeOffset . MinValue , items [ 1 ] . PublishDate ) ;
3535 Assert . AreEqual ( DateTimeOffset . MinValue , items [ 1 ] . LastUpdatedDate ) ;
3636
37- Assert . IsTrue ( items [ 0 ] . GetContent ( ) . StartsWith ( "Lorem ipsum dolor sit" ) ) ;
38- Assert . IsTrue ( items [ 0 ] . GetSummary ( ) . StartsWith ( "Lorem ipsum dolor sit" ) ) ;
37+ Assert . IsTrue ( items [ 0 ] . GetContent ( ) ? . StartsWith ( "Lorem ipsum dolor sit" ) ) ;
38+ Assert . IsTrue ( items [ 0 ] . GetSummary ( ) ? . StartsWith ( "Lorem ipsum dolor sit" ) ) ;
3939
4040#pragma warning disable 0618
4141 Assert . AreEqual ( DateTimeOffset . Parse ( "2014-04-16T13:57:35.0000000+02:00" , CultureInfo . InvariantCulture , DateTimeStyles . None ) , items [ 0 ] . Date ) ;
@@ -51,9 +51,9 @@ public void BasicRSSWithImageFeedTest()
5151
5252 Assert . AreEqual ( 2 , items . Length ) ;
5353
54- Assert . AreEqual ( "http://example.org/foo/bar/1" , items [ 0 ] . Uri . ToString ( ) ) ;
54+ Assert . AreEqual ( "http://example.org/foo/bar/1" , items [ 0 ] . Uri ? . ToString ( ) ) ;
5555 Assert . AreEqual ( "Title 1" , items [ 0 ] . Title ) ;
56- Assert . IsTrue ( items [ 0 ] . Summary . StartsWith ( "Lorem ipsum dolor sit" ) ) ;
56+ Assert . IsTrue ( items [ 0 ] . Summary ? . StartsWith ( "Lorem ipsum dolor sit" ) ) ;
5757 Assert . IsNull ( items [ 0 ] . Content ) ;
5858 Assert . AreEqual ( "tag:example.org,1999:blog-123456789123456789123456789.post-987564321987654231" , items [ 0 ] . Id ) ;
5959 Assert . AreEqual ( DateTimeOffset . Parse ( "2014-04-16T13:57:35.0000000+02:00" , CultureInfo . InvariantCulture , DateTimeStyles . None ) , items [ 0 ] . PublishDate ) ;
@@ -67,17 +67,17 @@ public void BasicRSSWithImageFeedTest()
6767 Assert . AreEqual ( DateTimeOffset . MinValue , items [ 1 ] . PublishDate ) ;
6868 Assert . AreEqual ( DateTimeOffset . MinValue , items [ 1 ] . LastUpdatedDate ) ;
6969
70- Assert . IsTrue ( items [ 0 ] . GetContent ( ) . StartsWith ( "Lorem ipsum dolor sit" ) ) ;
71- Assert . IsTrue ( items [ 0 ] . GetSummary ( ) . StartsWith ( "Lorem ipsum dolor sit" ) ) ;
70+ Assert . IsTrue ( items [ 0 ] . GetContent ( ) ? . StartsWith ( "Lorem ipsum dolor sit" ) ) ;
71+ Assert . IsTrue ( items [ 0 ] . GetSummary ( ) ? . StartsWith ( "Lorem ipsum dolor sit" ) ) ;
7272
7373#pragma warning disable 0618
7474 Assert . AreEqual ( DateTimeOffset . Parse ( "2014-04-16T13:57:35.0000000+02:00" , CultureInfo . InvariantCulture , DateTimeStyles . None ) , items [ 0 ] . Date ) ;
7575 Assert . AreEqual ( DateTimeOffset . MinValue , items [ 1 ] . Date ) ;
7676#pragma warning restore 0618
7777
78- Assert . AreEqual ( 2 , items [ 0 ] . Images . Count ( ) ) ;
79- Assert . AreEqual ( "http://example.org/foo/bar/123abc.png" , items [ 0 ] . Images . ElementAt ( 0 ) . ToString ( ) ) ;
80- Assert . AreEqual ( "http://example.org/foo/bar/123abc_2.png" , items [ 0 ] . Images . ElementAt ( 1 ) . ToString ( ) ) ;
78+ Assert . AreEqual ( 2 , items [ 0 ] ? . Images ? . Count ( ) ) ;
79+ Assert . AreEqual ( "http://example.org/foo/bar/123abc.png" , items [ 0 ] . Images ? . ElementAt ( 0 ) . ToString ( ) ) ;
80+ Assert . AreEqual ( "http://example.org/foo/bar/123abc_2.png" , items [ 0 ] . Images ? . ElementAt ( 1 ) . ToString ( ) ) ;
8181 }
8282
8383 [ TestMethod ]
@@ -126,8 +126,8 @@ public void ExtendedNormalizerRSSFeedTest()
126126 var items = target . RetrieveFeed ( @"TestFeeds\basic.rss" ) . ToArray ( ) ;
127127
128128 Assert . IsInstanceOfType < ExtendedFeedItem > ( items [ 0 ] ) ;
129- Assert . AreEqual ( 1 , ( ( ExtendedFeedItem ) items [ 0 ] ) . Authors . Length ) ;
130- Assert . AreEqual ( "noreply1@example.org (John Doe 1)" , ( ( ExtendedFeedItem ) items [ 0 ] ) . Authors [ 0 ] ) ;
129+ Assert . AreEqual ( 1 , ( ( ExtendedFeedItem ) items [ 0 ] ) . Authors ? . Length ) ;
130+ Assert . AreEqual ( "noreply1@example.org (John Doe 1)" , ( ( ExtendedFeedItem ) items [ 0 ] ) . Authors ? [ 0 ] ) ;
131131 }
132132
133133 [ TestMethod ]
@@ -152,7 +152,7 @@ public void BasicAtomFeedTest()
152152
153153 Assert . AreEqual ( 2 , items . Length ) ;
154154
155- Assert . AreEqual ( "http://example.org/foo/bar/1" , items [ 0 ] . Uri . ToString ( ) ) ;
155+ Assert . AreEqual ( "http://example.org/foo/bar/1" , items [ 0 ] . Uri ? . ToString ( ) ) ;
156156 Assert . AreEqual ( "Summary1" , items [ 0 ] . Summary ) ;
157157 Assert . AreEqual ( "Test1" , items [ 0 ] . Title ) ;
158158 Assert . AreEqual ( "HTML content" , items [ 0 ] . Content ) ;
@@ -161,7 +161,7 @@ public void BasicAtomFeedTest()
161161 Assert . AreEqual ( DateTimeOffset . Parse ( "2013-03-13T13:37:31.0000000+00:00" , CultureInfo . InvariantCulture , DateTimeStyles . None ) , items [ 0 ] . PublishDate ) ;
162162 Assert . AreEqual ( DateTimeOffset . Parse ( "2014-04-16T13:57:35.0000000+00:00" , CultureInfo . InvariantCulture , DateTimeStyles . None ) , items [ 0 ] . LastUpdatedDate ) ;
163163
164- Assert . AreEqual ( "http://example.org/foo/bar/2" , items [ 1 ] . Uri . ToString ( ) ) ;
164+ Assert . AreEqual ( "http://example.org/foo/bar/2" , items [ 1 ] . Uri ? . ToString ( ) ) ;
165165 Assert . AreEqual ( "Summary2" , items [ 1 ] . Summary ) ;
166166 Assert . AreEqual ( "Test2" , items [ 1 ] . Title ) ;
167167 Assert . AreEqual ( "Text content" , items [ 1 ] . Content ) ;
@@ -182,11 +182,11 @@ public void BasicActualRSSFeedTest()
182182 var items = target . RetrieveFeed ( @"TestFeeds\google_snapshot.rss" ) . ToArray ( ) ;
183183
184184 Assert . AreEqual ( 10 , items . Length ) ;
185- Assert . IsTrue ( items [ 0 ] . GetContent ( ) . StartsWith ( "(CNN) -- Rescue boats" ) ) ;
186- Assert . IsTrue ( items [ 1 ] . GetContent ( ) . StartsWith ( "Pro-Russian troops guard" ) ) ;
187- Assert . IsTrue ( items [ 2 ] . GetContent ( ) . StartsWith ( "(CNN) -- Former New York" ) ) ;
188- Assert . IsTrue ( items [ 3 ] . GetContent ( ) . StartsWith ( "Two blasts near the" ) ) ;
189- Assert . IsTrue ( items [ 4 ] . GetContent ( ) . StartsWith ( "A three-year-old boy" ) ) ;
185+ Assert . IsTrue ( items [ 0 ] . GetContent ( ) ? . StartsWith ( "(CNN) -- Rescue boats" ) ) ;
186+ Assert . IsTrue ( items [ 1 ] . GetContent ( ) ? . StartsWith ( "Pro-Russian troops guard" ) ) ;
187+ Assert . IsTrue ( items [ 2 ] . GetContent ( ) ? . StartsWith ( "(CNN) -- Former New York" ) ) ;
188+ Assert . IsTrue ( items [ 3 ] . GetContent ( ) ? . StartsWith ( "Two blasts near the" ) ) ;
189+ Assert . IsTrue ( items [ 4 ] . GetContent ( ) ? . StartsWith ( "A three-year-old boy" ) ) ;
190190 }
191191
192192 [ TestMethod ]
@@ -196,36 +196,36 @@ public void BasicActualAtomFeedTest()
196196 var items = target . RetrieveFeed ( @"TestFeeds\google_snapshot.atom" ) . ToArray ( ) ;
197197
198198 Assert . AreEqual ( 10 , items . Length ) ;
199- Assert . IsTrue ( items [ 0 ] . GetContent ( ) . StartsWith ( "(CNN) -- Rescue boats" ) ) ;
200- Assert . IsTrue ( items [ 1 ] . GetContent ( ) . StartsWith ( "Pro-Russian troops guard" ) ) ;
201- Assert . IsTrue ( items [ 2 ] . GetContent ( ) . StartsWith ( "(CNN) -- Former New York" ) ) ;
202- Assert . IsTrue ( items [ 3 ] . GetContent ( ) . StartsWith ( "Two blasts near the" ) ) ;
203- Assert . IsTrue ( items [ 4 ] . GetContent ( ) . StartsWith ( "A three-year-old boy" ) ) ;
199+ Assert . IsTrue ( items [ 0 ] . GetContent ( ) ? . StartsWith ( "(CNN) -- Rescue boats" ) ) ;
200+ Assert . IsTrue ( items [ 1 ] . GetContent ( ) ? . StartsWith ( "Pro-Russian troops guard" ) ) ;
201+ Assert . IsTrue ( items [ 2 ] . GetContent ( ) ? . StartsWith ( "(CNN) -- Former New York" ) ) ;
202+ Assert . IsTrue ( items [ 3 ] . GetContent ( ) ? . StartsWith ( "Two blasts near the" ) ) ;
203+ Assert . IsTrue ( items [ 4 ] . GetContent ( ) ? . StartsWith ( "A three-year-old boy" ) ) ;
204204 }
205205
206206 [ TestMethod ]
207207 public void BasicRSSCategoriesTest ( )
208208 {
209209 var target = new FeedReader ( ) ;
210210 var items = target . RetrieveFeed ( @"TestFeeds\categories.rss" ) . ToArray ( ) ;
211- Assert . AreEqual ( "NEWS" , items [ 0 ] . Categories . ElementAt ( 0 ) ) ;
212- Assert . AreEqual ( "TEST" , items [ 0 ] . Categories . ElementAt ( 1 ) ) ;
211+ Assert . AreEqual ( "NEWS" , items [ 0 ] . Categories ? . ElementAt ( 0 ) ) ;
212+ Assert . AreEqual ( "TEST" , items [ 0 ] . Categories ? . ElementAt ( 1 ) ) ;
213213 }
214214
215215 [ TestMethod ]
216216 public void BasicAtomCategoriesTest ( )
217217 {
218218 var target = new FeedReader ( ) ;
219219 var items = target . RetrieveFeed ( @"TestFeeds\categories.atom" ) . ToArray ( ) ;
220- Assert . AreEqual ( "a" , items [ 0 ] . Categories . ElementAt ( 0 ) ) ;
221- Assert . AreEqual ( "b" , items [ 1 ] . Categories . ElementAt ( 0 ) ) ;
222- Assert . AreEqual ( "c" , items [ 1 ] . Categories . ElementAt ( 1 ) ) ;
220+ Assert . AreEqual ( "a" , items [ 0 ] . Categories ? . ElementAt ( 0 ) ) ;
221+ Assert . AreEqual ( "b" , items [ 1 ] . Categories ? . ElementAt ( 0 ) ) ;
222+ Assert . AreEqual ( "c" , items [ 1 ] . Categories ? . ElementAt ( 1 ) ) ;
223223 }
224224
225225 #region TestClasses
226226 private class ExtendedFeedItem : FeedItem
227227 {
228- public string [ ] Authors { get ; set ; }
228+ public string [ ] ? Authors { get ; set ; }
229229
230230 public ExtendedFeedItem ( ) { }
231231 public ExtendedFeedItem ( FeedItem item )
0 commit comments