public void ItSkipsAttributesWithSyntaxErrors() { // Arrange string header1 = @"<http://example.com/TheBook/chapter6>; x rel=next-chap.ter; title=""Abc"", <http://example.com/TheBook/chapter1>; rel=""help""; title=""Xyz"""; // Act IList <WebLink> links1 = WebLinkParser.ParseLinks(new Uri("http://example.com"), header1); // Assert Assert.IsNotNull(links1); Assert.AreEqual(2, links1.Count); ILink l1 = links1[0]; Assert.AreEqual("http://example.com/TheBook/chapter6", l1.HRef.AbsoluteUri); Assert.AreEqual(0, l1.RelationTypes.Count()); Assert.AreEqual("Abc", l1.Title); ILink l2 = links1[1]; Assert.AreEqual("http://example.com/TheBook/chapter1", l2.HRef.AbsoluteUri); Assert.Contains("help", l2.RelationTypes.ToList()); Assert.AreEqual("Xyz", l2.Title); }
public void CanReadMultipleWebLinks() { // Arrange string header = @"<http://example.com/TheBook/chapter2>; rel=""previous""; title=""Previous chapter"", <http://example.com/TheBook/chapter4>; rel=""next""; title=""Next chapter"""; // Act IList <WebLink> links = WebLinkParser.ParseLinks(new Uri("http://example.com"), header); // Assert Assert.IsNotNull(links); Assert.AreEqual(2, links.Count); ILink l1 = links[0]; Assert.AreEqual("http://example.com/TheBook/chapter2", l1.HRef.AbsoluteUri); Assert.Contains("previous", l1.RelationTypes.ToList()); Assert.AreEqual("Previous chapter", l1.Title); ILink l2 = links[1]; Assert.AreEqual("http://example.com/TheBook/chapter4", l2.HRef.AbsoluteUri); Assert.Contains("next", l2.RelationTypes.ToList()); Assert.AreEqual("Next chapter", l2.Title); }
public static IEnumerable <WebLink> Links(this Response response) { Condition.Requires(response, "response").IsNotNull(); if (response.Headers["Link"] == null) { return(Enumerable.Empty <WebLink>()); } return(WebLinkParser.ParseLinks(response.BaseUri, response.Headers["Link"])); }
public void CanReadTokenRels() { // Arrange string header1 = @"<http://example.com/TheBook/chapter6>; rel=next-chap.ter; title=""Abc"""; // Act IList <WebLink> links1 = WebLinkParser.ParseLinks(new Uri("http://example.com"), header1); // Assert Assert.IsNotNull(links1); Assert.AreEqual(1, links1.Count); ILink l1 = links1[0]; Assert.Contains("next-chap.ter", l1.RelationTypes.ToList()); }
public void ItSelectsFirstRelOnly() { // Arrange string header1 = @"<http://example.com/TheBook/chapter6>; rel=""previous""; rel=""next""; title=""Abc"""; // Act IList <WebLink> links1 = WebLinkParser.ParseLinks(new Uri("http://example.com"), header1); // Assert Assert.IsNotNull(links1); Assert.AreEqual(1, links1.Count); ILink l1 = links1[0]; Assert.Contains("previous", l1.RelationTypes.ToList()); }
public void ItSelectsFirstTitleOnly() { // Arrange string header1 = @"<http://example.com/TheBook/chapter6>; rel=""previous""; title=""abc""; title=""123"""; // Act IList <WebLink> links1 = WebLinkParser.ParseLinks(new Uri("http://example.com"), header1); // Assert Assert.IsNotNull(links1); Assert.AreEqual(1, links1.Count); ILink l1 = links1[0]; Assert.AreEqual("abc", l1.Title); }
public void CanReadInternationalTitles() { // Arrange string header = @"<http://example.com/TheBook/chapter6>; rel=""previous""; title*=""UTF-8'de'N%c3%a4chstes%20Kapitel"""; // Act IList <WebLink> links = WebLinkParser.ParseLinks(new Uri("http://example.com"), header); // Assert Assert.IsNotNull(links); Assert.AreEqual(1, links.Count); ILink l1 = links[0]; Assert.AreEqual("http://example.com/TheBook/chapter6", l1.HRef.AbsoluteUri); Assert.AreEqual("Nächstes Kapitel", l1.Title); }
public void CanReadSingleUrl() { // Arrange string header = @"<http://example.com/TheBook/chapter5>"; // Act IList <WebLink> links = WebLinkParser.ParseLinks(new Uri("http://example.com"), header); // Assert Assert.IsNotNull(links); Assert.AreEqual(1, links.Count); ILink l1 = links[0]; Assert.AreEqual("http://example.com/TheBook/chapter5", l1.HRef.AbsoluteUri); Assert.AreEqual(0, l1.RelationTypes.Count()); Assert.IsNull(l1.Title); }
public void WhenBothNormalAndIntlTitleExistsItSelectsInternational() { // Arrange string header1 = @"<http://example.com/TheBook/chapter6>; rel=""previous""; title=""abc""; title*=""UTF-8'de'N%c3%a4chstes%20Kapitel"""; string header2 = @"<http://example.com/TheBook/chapter6>; rel=""previous""; title*=""UTF-8'de'N%c3%a4chstes%20Kapitel""; title=""abc"""; // Act IList <WebLink> links1 = WebLinkParser.ParseLinks(new Uri("http://example.com"), header1); IList <WebLink> links2 = WebLinkParser.ParseLinks(new Uri("http://example.com"), header2); // Assert Assert.IsNotNull(links1); Assert.IsNotNull(links2); Assert.AreEqual(1, links1.Count); Assert.AreEqual(1, links2.Count); ILink l1 = links1[0]; Assert.AreEqual("Nächstes Kapitel", l1.Title); ILink l2 = links2[0]; Assert.AreEqual("Nächstes Kapitel", l2.Title); }