/*
* Copyright 2001-2008 Geert Bevin (gbevin[remove] at uwyn dot com)
* Licensed under the Apache License, Version 2.0 (the "License")
* $Id: TestContentInfo.java 3918 2008-04-14 17:35:35Z gbevin $
*/
package com.uwyn.rife.cmf;
import java.sql.Timestamp;
import java.util.HashMap;
import junit.framework.TestCase;
public class TestContentInfo extends TestCase
{
public TestContentInfo(String name)
{
super(name);
}
public void testInstantiation()
{
ContentInfo contentinfo = new ContentInfo();
assertNotNull(contentinfo);
assertNull(contentinfo.getPath());
assertEquals(-1, contentinfo.getVersion());
assertNull(contentinfo.getCreated());
assertNull(contentinfo.getMimeType());
assertFalse(contentinfo.isFragment());
assertFalse(contentinfo.hasName());
assertNull(contentinfo.getName());
assertNull(contentinfo.getAttributes());
assertFalse(contentinfo.hasAttributes());
assertFalse(contentinfo.hasAttribute("attr1"));
assertNull(contentinfo.getAttribute("attr1"));
assertEquals(-1, contentinfo.getSize());
assertFalse(contentinfo.hasProperties());
assertNull(contentinfo.getProperties());
assertFalse(contentinfo.hasProperty("some prop"));
assertNull(contentinfo.getProperty("some prop"));
}
public void testPath()
{
ContentInfo contentinfo = new ContentInfo();
contentinfo.setPath("/my/path");
assertEquals("/my/path", contentinfo.getPath());
}
public void testVersion()
{
ContentInfo contentinfo = new ContentInfo();
contentinfo.setVersion(5);
assertEquals(5, contentinfo.getVersion());
}
public void testMimeType()
{
ContentInfo contentinfo = new ContentInfo();
contentinfo.setMimeType(MimeType.IMAGE_GIF.toString());
assertEquals(MimeType.IMAGE_GIF.toString(), contentinfo.getMimeType());
}
public void testFragment()
{
ContentInfo contentinfo = new ContentInfo();
contentinfo.setFragment(true);
assertTrue(contentinfo.isFragment());
contentinfo.setFragment(false);
assertFalse(contentinfo.isFragment());
}
public void testCreated()
{
ContentInfo contentinfo = new ContentInfo();
Timestamp ts = new Timestamp(System.currentTimeMillis());
contentinfo.setCreated(ts);
assertEquals(ts, contentinfo.getCreated());
}
public void testName()
{
ContentInfo contentinfo = new ContentInfo();
contentinfo.setName("myname.gif");
assertTrue(contentinfo.hasName());
assertEquals("myname.gif", contentinfo.getName());
contentinfo.setName(null);
assertFalse(contentinfo.hasName());
assertNull(contentinfo.getName());
}
public void testOptimalPath()
{
ContentInfo contentinfo = new ContentInfo();
contentinfo.setPath("/some/path");
assertEquals("/some/path", contentinfo.getOptimalPath());
contentinfo.setName("myname.gif");
assertEquals("/some/path/myname.gif", contentinfo.getOptimalPath());
contentinfo.setPath(null);
assertNull(contentinfo.getOptimalPath());
}
public void testSetAttributes()
{
ContentInfo contentinfo = new ContentInfo();
HashMap<String, String> attrs = new HashMap<String, String>();
attrs.put("attr1", "val1");
attrs.put("attr2", "val2");
attrs.put("attr3", "val3");
contentinfo.setAttributes(attrs);
assertTrue(contentinfo.hasAttributes());
assertSame(contentinfo.getAttributes(), attrs);
assertEquals(contentinfo.getAttributes().size(), attrs.size());
assertTrue(contentinfo.getAttributes().containsKey("attr1"));
assertTrue(contentinfo.getAttributes().containsKey("attr2"));
assertTrue(contentinfo.getAttributes().containsKey("attr3"));
assertTrue(contentinfo.hasAttribute("attr1"));
assertTrue(contentinfo.hasAttribute("attr2"));
assertTrue(contentinfo.hasAttribute("attr3"));
assertEquals("val1", contentinfo.getAttribute("attr1"));
assertEquals("val2", contentinfo.getAttribute("attr2"));
assertEquals("val3", contentinfo.getAttribute("attr3"));
attrs.remove("attr2");
contentinfo.setAttributes(attrs);
assertTrue(contentinfo.hasAttributes());
assertSame(contentinfo.getAttributes(), attrs);
assertEquals(contentinfo.getAttributes().size(), 2);
assertTrue(contentinfo.getAttributes().containsKey("attr1"));
assertFalse(contentinfo.getAttributes().containsKey("attr2"));
assertTrue(contentinfo.getAttributes().containsKey("attr3"));
assertTrue(contentinfo.hasAttribute("attr1"));
assertFalse(contentinfo.hasAttribute("attr2"));
assertTrue(contentinfo.hasAttribute("attr3"));
assertEquals("val1", contentinfo.getAttribute("attr1"));
assertNull(contentinfo.getAttribute("attr2"));
assertEquals("val3", contentinfo.getAttribute("attr3"));
contentinfo.setAttributes(null);
assertFalse(contentinfo.hasAttributes());
assertNull(contentinfo.getAttributes());
}
public void testSize()
{
ContentInfo contentinfo = new ContentInfo();
contentinfo.setSize(2434);
assertEquals(2434, contentinfo.getSize());
}
public void testFormattedSize()
{
ContentInfo contentinfo = new ContentInfo();
contentinfo.setSize(90);
assertEquals("0.09KB", contentinfo.getFormattedSize());
contentinfo.setSize((int)(12.78 * 1024));
assertEquals("12.78KB", contentinfo.getFormattedSize());
contentinfo.setSize((int)(101.23 * 1024));
assertEquals("101KB", contentinfo.getFormattedSize());
contentinfo.setSize((int)(278.15 * 1024 * 1024));
assertEquals("278.15MB", contentinfo.getFormattedSize());
contentinfo.setSize((int)(1.76 * 1024 * 1024 * 1024));
assertEquals("1.76GB", contentinfo.getFormattedSize());
}
public void testProperties()
{
ContentInfo contentinfo = new ContentInfo();
HashMap<String, String> props = new HashMap<String, String>();
props.put("prop1", "val1");
props.put("prop2", "val2");
props.put("prop3", "val3");
contentinfo.setProperties(props);
assertTrue(contentinfo.hasProperties());
assertSame(contentinfo.getProperties(), props);
assertEquals(contentinfo.getProperties().size(), props.size());
assertTrue(contentinfo.getProperties().containsKey("prop1"));
assertTrue(contentinfo.getProperties().containsKey("prop2"));
assertTrue(contentinfo.getProperties().containsKey("prop3"));
assertTrue(contentinfo.hasProperty("prop1"));
assertTrue(contentinfo.hasProperty("prop2"));
assertTrue(contentinfo.hasProperty("prop3"));
assertEquals("val1", contentinfo.getProperty("prop1"));
assertEquals("val2", contentinfo.getProperty("prop2"));
assertEquals("val3", contentinfo.getProperty("prop3"));
props.remove("prop2");
contentinfo.setProperties(props);
assertTrue(contentinfo.hasProperties());
assertSame(contentinfo.getProperties(), props);
assertEquals(contentinfo.getProperties().size(), 2);
assertTrue(contentinfo.getProperties().containsKey("prop1"));
assertFalse(contentinfo.getProperties().containsKey("prop2"));
assertTrue(contentinfo.getProperties().containsKey("prop3"));
assertTrue(contentinfo.hasProperty("prop1"));
assertFalse(contentinfo.hasProperty("prop2"));
assertTrue(contentinfo.hasProperty("prop3"));
assertEquals("val1", contentinfo.getProperty("prop1"));
assertNull(contentinfo.getProperty("prop2"));
assertEquals("val3", contentinfo.getProperty("prop3"));
contentinfo.setProperties(null);
assertFalse(contentinfo.hasProperties());
assertNull(contentinfo.getProperties());
}
public void testValidation()
{
ContentInfo contentinfo = new ContentInfo();
contentinfo.resetValidation();
assertFalse(contentinfo.validate());
assertFalse(contentinfo.isSubjectValid("path"));
assertFalse(contentinfo.isSubjectValid("mimeType"));
assertFalse(contentinfo.isSubjectValid("version"));
assertFalse(contentinfo.isSubjectValid("created"));
contentinfo.resetValidation();
contentinfo.setPath("/some/other/path");
assertFalse(contentinfo.validate());
assertTrue(contentinfo.isSubjectValid("path"));
contentinfo.resetValidation();
contentinfo.setMimeType("");
assertFalse(contentinfo.validate());
assertFalse(contentinfo.isSubjectValid("mimeType"));
contentinfo.resetValidation();
contentinfo.setMimeType("01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890");
assertFalse(contentinfo.validate());
assertFalse(contentinfo.isSubjectValid("mimeType"));
contentinfo.resetValidation();
contentinfo.setMimeType(MimeType.APPLICATION_XHTML.toString());
assertFalse(contentinfo.validate());
assertTrue(contentinfo.isSubjectValid("mimeType"));
contentinfo.resetValidation();
contentinfo.setVersion(5);
assertFalse(contentinfo.validate());
assertTrue(contentinfo.isSubjectValid("version"));
contentinfo.resetValidation();
contentinfo.setCreated(new Timestamp(System.currentTimeMillis()));
assertTrue(contentinfo.validate());
assertTrue(contentinfo.isSubjectValid("created"));
contentinfo.resetValidation();
assertTrue(contentinfo.validate());
assertTrue(contentinfo.isSubjectValid("path"));
assertTrue(contentinfo.isSubjectValid("mimeType"));
assertTrue(contentinfo.isSubjectValid("version"));
assertTrue(contentinfo.isSubjectValid("created"));
}
}