/*
* Copyright 2001-2008 Geert Bevin <gbevin[remove] at uwyn dot com>
* Licensed under the Apache License, Version 2.0 (the "License")
* $Id: TestSupportedImage.java 3918 2008-04-14 17:35:35Z gbevin $
*/
package com.uwyn.rife.cmf.validation;
import com.uwyn.rife.cmf.MimeType;
import com.uwyn.rife.resources.ResourceFinderClasspath;
import com.uwyn.rife.site.ConstrainedProperty;
import com.uwyn.rife.site.Validation;
import com.uwyn.rife.tools.FileUtils;
import java.net.URL;
import junit.framework.TestCase;
public class TestSupportedImage extends TestCase
{
public TestSupportedImage(String name)
{
super(name);
}
public void testValidateNull()
throws Exception
{
SupportedImage rule = new SupportedImage("image");
ImageBean bean = new ImageBean();
ConstrainedProperty property = new ConstrainedProperty("image").mimeType(MimeType.IMAGE_PNG);
bean.addConstraint(property);
rule.setBean(bean);
assertTrue(rule.validate());
assertNull(rule.getLoadingErrors());
assertNull(property.getCachedLoadedData());
}
public void testValidateSupported()
throws Exception
{
SupportedImage rule = new SupportedImage("image");
ImageBean bean = new ImageBean();
ConstrainedProperty property = new ConstrainedProperty("image").mimeType(MimeType.IMAGE_PNG);
bean.addConstraint(property);
URL image_resource = ResourceFinderClasspath.getInstance().getResource("uwyn.png");
byte[] image_bytes = FileUtils.readBytes(image_resource);
bean.setImage(image_bytes);
rule.setBean(bean);
assertTrue(rule.validate());
assertNull(rule.getLoadingErrors());
assertNotNull(property.getCachedLoadedData());
}
public void testValidateUnsupported()
throws Exception
{
SupportedImage rule = new SupportedImage("image");
ImageBean bean = new ImageBean();
ConstrainedProperty property = new ConstrainedProperty("image").mimeType(MimeType.IMAGE_PNG);
bean.addConstraint(property);
byte[] image_bytes = new byte[] {2, 9, 7, 12, 45}; // just random values
bean.setImage(image_bytes);
rule.setBean(bean);
assertFalse(rule.validate());
assertTrue(rule.getLoadingErrors().size() > 0);
assertNull(property.getCachedLoadedData());
}
public void testValidateNotConstrained()
throws Exception
{
SupportedImage rule = new SupportedImage("image");
ImageBeanNotConstrained bean = new ImageBeanNotConstrained();
URL image_resource = ResourceFinderClasspath.getInstance().getResource("uwyn.png");
byte[] image_bytes = FileUtils.readBytes(image_resource);
bean.setImage(image_bytes);
rule.setBean(bean);
assertTrue(rule.validate());
assertNull(rule.getLoadingErrors());
}
public void testValidateNotCmfProperty()
throws Exception
{
SupportedImage rule = new SupportedImage("image");
ImageBeanValidation bean = new ImageBeanValidation();
ConstrainedProperty property = new ConstrainedProperty("image");
bean.addConstraint(property);
URL image_resource = ResourceFinderClasspath.getInstance().getResource("uwyn.png");
byte[] image_bytes = FileUtils.readBytes(image_resource);
bean.setImage(image_bytes);
rule.setBean(bean);
assertTrue(rule.validate());
assertNull(rule.getLoadingErrors());
}
public void testValidateUnknownProperty()
throws Exception
{
SupportedImage rule = new SupportedImage("image_unknown");
ImageBean bean = new ImageBean();
rule.setBean(bean);
assertTrue(rule.validate());
assertNull(rule.getLoadingErrors());
}
public void testGetError()
throws Exception
{
SupportedImage rule = new SupportedImage("image");
assertEquals("image", rule.getError().getSubject());
assertEquals("INVALID", rule.getError().getIdentifier());
}
public static class ImageBean extends Validation
{
private byte[] mImage = null;
public ImageBean()
{
}
public byte[] getImage()
{
return mImage;
}
public void setImage(byte[] image)
{
mImage = image;
}
}
public static class ImageBeanNotConstrained
{
private byte[] mImage = null;
public ImageBeanNotConstrained()
{
}
public byte[] getImage()
{
return mImage;
}
public void setImage(byte[] image)
{
mImage = image;
}
}
public static class ImageBeanValidation extends Validation
{
private byte[] mImage = null;
public ImageBeanValidation()
{
}
public byte[] getImage()
{
return mImage;
}
public void setImage(byte[] image)
{
mImage = image;
}
}
}