package org.codehaus.httpcache4j;
import org.codehaus.httpcache4j.util.DirectivesParser;
import org.junit.Assert;
import org.junit.Test;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
/**
* Test cases from examples: http://www.w3.org/Protocols/9707-link-header.html
*
* @author <a href="mailto:erlend@escenic.com">Erlend Hamnaberg</a>
* @version $Revision: $
*/
public class LinkDirectiveTest {
@Test
public void testFirstExample() {
String expected = "<http://www.cern.ch/TheBook/chapter2>; rel=\"Previous\"";
LinkDirective linkDirective = new LinkDirective(DirectivesParser.parse(expected).iterator().next());
Assert.assertEquals("Previous", linkDirective.getRel());
Assert.assertEquals(URI.create("http://www.cern.ch/TheBook/chapter2"), linkDirective.getURI());
Assert.assertEquals(expected, linkDirective.toString());
Assert.assertNull(linkDirective.getRev());
Assert.assertNull(linkDirective.getTitle());
Assert.assertNull(linkDirective.getAnchor());
}
@Test
public void testTestSecondExample() {
final String expected = "<mailto:timbl@w3.org>; rev=\"Made\"; title=\"Tim Berners-Lee\"";
LinkDirective linkDirective = new LinkDirective(DirectivesParser.parse(expected).iterator().next());
Assert.assertNull(linkDirective.getRel());
Assert.assertNull(linkDirective.getAnchor());
Assert.assertEquals("Tim Berners-Lee", linkDirective.getTitle());
Assert.assertEquals("Made", linkDirective.getRev());
Assert.assertEquals(URI.create("mailto:timbl@w3.org"), linkDirective.getURI());
Assert.assertEquals(expected, linkDirective.toString());
}
@Test
public void testTestThirdExample() {
String expected = "<../media/contrast.css>; rel=\"stylesheet alternate\"; title=\"High Contrast Styles\"; type=\"text/css\"; media=\"screen\", <../media/print.css>; rel=\"stylesheet\"; type=\"text/css\"; media=\"print\"";
Directives directives = DirectivesParser.parse(expected);
Assert.assertEquals(2, directives.size());
List<LinkDirective> linkDirectives = new ArrayList<LinkDirective>();
for (Directive directive : directives) {
linkDirectives.add(new LinkDirective(directive));
}
Assert.assertEquals(2, linkDirectives.size());
LinkDirective linkDirective = linkDirectives.get(0);
Assert.assertEquals("stylesheet alternate", linkDirective.getRel());
Assert.assertNull(linkDirective.getAnchor());
Assert.assertEquals("High Contrast Styles", linkDirective.getTitle());
Assert.assertEquals("screen", linkDirective.getParameterValue("media"));
Assert.assertEquals("text/css", linkDirective.getParameterValue("type"));
Assert.assertEquals(URI.create("../media/contrast.css"), linkDirective.getURI());
linkDirective = linkDirectives.get(1);
Assert.assertEquals("stylesheet", linkDirective.getRel());
Assert.assertNull(linkDirective.getAnchor());
Assert.assertNull(linkDirective.getTitle());
Assert.assertEquals("print", linkDirective.getParameterValue("media"));
Assert.assertEquals("text/css", linkDirective.getParameterValue("type"));
Assert.assertEquals(URI.create("../media/print.css"), linkDirective.getURI());
Header header = HeaderUtils.toLinkHeader(linkDirectives);
Assert.assertEquals(new Header("Link", expected), header);
}
}