// Copyright (c) 2002-2005 Canoo Engineering AG, Switzerland. All Rights Reserved.
package com.canoo.webtest.extension;
import com.canoo.webtest.self.TestBlock;
import com.canoo.webtest.self.ThrowAssert;
import junit.framework.TestCase;
/**
* @author Denis N. Antonioli
*/
public class MimeTypeTest extends TestCase {
public void testMediaRangeCreate() {
final MimeType.MediaRange mediaRange = MimeType.MediaRange.create("img/png");
assertEquals("img/", mediaRange.getType());
assertEquals("/png", mediaRange.getSubtype());
ThrowAssert.assertThrows(IllegalArgumentException.class, "'*/png' is not a valid syntax.",
new TestBlock() {
public void call() throws Exception {
MimeType.MediaRange.create("*/png");
}
});
ThrowAssert.assertThrows(IllegalArgumentException.class, "'' is not a valid syntax.",
new TestBlock() {
public void call() throws Exception {
MimeType.MediaRange.create("");
}
});
}
public void testMediaRangeMatch() {
assertTrue(MimeType.MediaRange.create("img/png").match("img/png"));
assertTrue(MimeType.MediaRange.create("img/*").match("img/png"));
assertTrue(MimeType.MediaRange.create("*/*").match("img/png"));
assertFalse(MimeType.MediaRange.create("img/png").match("img/gif"));
assertTrue(MimeType.MediaRange.create("img/*").match("img/gif"));
assertTrue(MimeType.MediaRange.create("*/*").match("img/gif"));
assertFalse(MimeType.MediaRange.create("img/png").match("text/xml"));
assertFalse(MimeType.MediaRange.create("img/*").match("text/xml"));
assertTrue(MimeType.MediaRange.create("*/*").match("text/xml"));
}
public void testMimeType() {
assertTrue("Default MimeType accepts everything", MimeType.ALL_MEDIA.match("img/gif"));
MimeType mimeType = new MimeType("img/png");
assertTrue(mimeType.match("img/png"));
assertFalse(mimeType.match("text/xml"));
assertFalse(mimeType.match("application/pdf"));
mimeType = new MimeType("img/png;text/xml");
assertTrue(mimeType.match("img/png"));
assertTrue(mimeType.match("text/xml"));
assertFalse(mimeType.match("application/pdf"));
mimeType = new MimeType("img/png;text/xml;*/*");
assertTrue(mimeType.match("img/png"));
assertTrue(mimeType.match("text/xml"));
assertTrue(mimeType.match("application/pdf"));
}
public void testToString() {
assertEquals("*/*", MimeType.ALL_MEDIA.toString());
assertEquals("text/html", new MimeType("text/html").toString());
assertEquals("text/*", new MimeType("text/*").toString());
assertEquals("*/*", new MimeType("*/*").toString());
assertEquals("text/html;text/plain", new MimeType("text/html;text/plain").toString());
}
public void testSimplify() {
assertEquals("text/plain;text/xml", new MimeType("text/xml;text/plain").toString());
assertEquals("*/*", new MimeType("text/html;text/*;*/*").toString());
assertEquals("text/*", new MimeType("text/html;text/*").toString());
assertEquals("*/*", new MimeType("text/html;*/*").toString());
}
public void testCompareMediaRange(){
final MimeType.MediaRange imageAny = MimeType.MediaRange.create("img/*");
final MimeType.MediaRange textAny = MimeType.MediaRange.create("text/*");
final MimeType.MediaRange textHtml = MimeType.MediaRange.create("text/html");
final MimeType.MediaRange textXml = MimeType.MediaRange.create("text/xml");
assertTrue(0 > MimeType.MediaRange.ALL_MEDIA_RANGES.compareTo(textAny));
assertTrue(0 > MimeType.MediaRange.ALL_MEDIA_RANGES.compareTo(textHtml));
assertEquals(0, MimeType.MediaRange.ALL_MEDIA_RANGES.compareTo(MimeType.MediaRange.ALL_MEDIA_RANGES));
assertTrue(0 > imageAny.compareTo(textAny));
assertTrue(0 > textAny.compareTo(textXml));
assertEquals(0, imageAny.compareTo(MimeType.MediaRange.create("img/*")));
assertTrue(0 < textAny.compareTo(imageAny));
assertTrue(0 < textHtml.compareTo(MimeType.MediaRange.ALL_MEDIA_RANGES));
assertTrue(0 < textHtml.compareTo(textAny));
assertEquals(0, textHtml.compareTo(MimeType.MediaRange.create("text/html")));
assertTrue(0 > textHtml.compareTo(textXml));
assertTrue(0 > textHtml.compareTo(textXml));
}
}