Moved tests over from testsuite to beans

This commit is contained in:
Arjen Poutsma
2008-10-29 12:43:13 +00:00
parent c9940742fd
commit 7a49f023d1
25 changed files with 1325 additions and 3 deletions

View File

@@ -1,309 +0,0 @@
/*
* Copyright 2002-2008 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.beans;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import junit.framework.TestCase;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceEditor;
/**
* @author Juergen Hoeller
* @author Rob Harrop
* @since 19.05.2003
*/
public class BeanUtilsTests extends TestCase {
public void testInstantiateClass() {
// give proper class
BeanUtils.instantiateClass(ArrayList.class);
try {
// give interface
BeanUtils.instantiateClass(List.class);
fail("Should have thrown FatalBeanException");
}
catch (FatalBeanException ex) {
// expected
}
try {
// give class without default constructor
BeanUtils.instantiateClass(CustomDateEditor.class);
fail("Should have thrown FatalBeanException");
}
catch (FatalBeanException ex) {
// expected
}
}
public void testGetPropertyDescriptors() throws Exception {
PropertyDescriptor[] actual = Introspector.getBeanInfo(TestBean.class).getPropertyDescriptors();
PropertyDescriptor[] descriptors = BeanUtils.getPropertyDescriptors(TestBean.class);
assertNotNull("Descriptors should not be null", descriptors);
assertEquals("Invalid number of descriptors returned", actual.length, descriptors.length);
}
public void testBeanPropertyIsArray() {
PropertyDescriptor[] descriptors = BeanUtils.getPropertyDescriptors(ContainerBean.class);
for (int i = 0; i < descriptors.length; i++) {
PropertyDescriptor descriptor = descriptors[i];
if ("containedBeans".equals(descriptor.getName())) {
assertTrue("Property should be an array", descriptor.getPropertyType().isArray());
assertEquals(descriptor.getPropertyType().getComponentType(), ContainedBean.class);
}
}
}
public void testFindEditorByConvention() {
assertEquals(ResourceEditor.class, BeanUtils.findEditorByConvention(Resource.class).getClass());
}
public void testCopyProperties() throws Exception {
TestBean tb = new TestBean();
tb.setName("rod");
tb.setAge(32);
tb.setTouchy("touchy");
TestBean tb2 = new TestBean();
assertTrue("Name empty", tb2.getName() == null);
assertTrue("Age empty", tb2.getAge() == 0);
assertTrue("Touchy empty", tb2.getTouchy() == null);
BeanUtils.copyProperties(tb, tb2);
assertTrue("Name copied", tb2.getName().equals(tb.getName()));
assertTrue("Age copied", tb2.getAge() == tb.getAge());
assertTrue("Touchy copied", tb2.getTouchy().equals(tb.getTouchy()));
}
public void testCopyPropertiesWithDifferentTypes1() throws Exception {
DerivedTestBean tb = new DerivedTestBean();
tb.setName("rod");
tb.setAge(32);
tb.setTouchy("touchy");
TestBean tb2 = new TestBean();
assertTrue("Name empty", tb2.getName() == null);
assertTrue("Age empty", tb2.getAge() == 0);
assertTrue("Touchy empty", tb2.getTouchy() == null);
BeanUtils.copyProperties(tb, tb2);
assertTrue("Name copied", tb2.getName().equals(tb.getName()));
assertTrue("Age copied", tb2.getAge() == tb.getAge());
assertTrue("Touchy copied", tb2.getTouchy().equals(tb.getTouchy()));
}
public void testCopyPropertiesWithDifferentTypes2() throws Exception {
TestBean tb = new TestBean();
tb.setName("rod");
tb.setAge(32);
tb.setTouchy("touchy");
DerivedTestBean tb2 = new DerivedTestBean();
assertTrue("Name empty", tb2.getName() == null);
assertTrue("Age empty", tb2.getAge() == 0);
assertTrue("Touchy empty", tb2.getTouchy() == null);
BeanUtils.copyProperties(tb, tb2);
assertTrue("Name copied", tb2.getName().equals(tb.getName()));
assertTrue("Age copied", tb2.getAge() == tb.getAge());
assertTrue("Touchy copied", tb2.getTouchy().equals(tb.getTouchy()));
}
public void testCopyPropertiesWithEditable() throws Exception {
TestBean tb = new TestBean();
assertTrue("Name empty", tb.getName() == null);
tb.setAge(32);
tb.setTouchy("bla");
TestBean tb2 = new TestBean();
tb2.setName("rod");
assertTrue("Age empty", tb2.getAge() == 0);
assertTrue("Touchy empty", tb2.getTouchy() == null);
// "touchy" should not be copied: it's not defined in ITestBean
BeanUtils.copyProperties(tb, tb2, ITestBean.class);
assertTrue("Name copied", tb2.getName() == null);
assertTrue("Age copied", tb2.getAge() == 32);
assertTrue("Touchy still empty", tb2.getTouchy() == null);
}
public void testCopyPropertiesWithIgnore() throws Exception {
TestBean tb = new TestBean();
assertTrue("Name empty", tb.getName() == null);
tb.setAge(32);
tb.setTouchy("bla");
TestBean tb2 = new TestBean();
tb2.setName("rod");
assertTrue("Age empty", tb2.getAge() == 0);
assertTrue("Touchy empty", tb2.getTouchy() == null);
// "spouse", "touchy", "age" should not be copied
BeanUtils.copyProperties(tb, tb2, new String[]{"spouse", "touchy", "age"});
assertTrue("Name copied", tb2.getName() == null);
assertTrue("Age still empty", tb2.getAge() == 0);
assertTrue("Touchy still empty", tb2.getTouchy() == null);
}
public void testCopyPropertiesWithIgnoredNonExistingProperty() {
NameAndSpecialProperty source = new NameAndSpecialProperty();
source.setName("name");
TestBean target = new TestBean();
BeanUtils.copyProperties(source, target, new String[]{"specialProperty"});
assertEquals(target.getName(), "name");
}
public void testResolveSimpleSignature() throws Exception {
Method desiredMethod = MethodSignatureBean.class.getMethod("doSomething", null);
assertSignatureEquals(desiredMethod, "doSomething");
assertSignatureEquals(desiredMethod, "doSomething()");
}
public void testResolveInvalidSignature() throws Exception {
try {
BeanUtils.resolveSignature("doSomething(", MethodSignatureBean.class);
fail("Should not be able to parse with opening but no closing paren.");
}
catch (IllegalArgumentException ex) {
// success
}
try {
BeanUtils.resolveSignature("doSomething)", MethodSignatureBean.class);
fail("Should not be able to parse with closing but no opening paren.");
}
catch (IllegalArgumentException ex) {
// success
}
}
public void testResolveWithAndWithoutArgList() throws Exception {
Method desiredMethod = MethodSignatureBean.class.getMethod("doSomethingElse", new Class[]{String.class, int.class});
assertSignatureEquals(desiredMethod, "doSomethingElse");
assertNull(BeanUtils.resolveSignature("doSomethingElse()", MethodSignatureBean.class));
}
public void testResolveTypedSignature() throws Exception {
Method desiredMethod = MethodSignatureBean.class.getMethod("doSomethingElse", new Class[]{String.class, int.class});
assertSignatureEquals(desiredMethod, "doSomethingElse(java.lang.String, int)");
}
public void testResolveOverloadedSignature() throws Exception {
// test resolve with no args
Method desiredMethod = MethodSignatureBean.class.getMethod("overloaded", null);
assertSignatureEquals(desiredMethod, "overloaded()");
// resolve with single arg
desiredMethod = MethodSignatureBean.class.getMethod("overloaded", new Class[]{String.class});
assertSignatureEquals(desiredMethod, "overloaded(java.lang.String)");
// resolve with two args
desiredMethod = MethodSignatureBean.class.getMethod("overloaded", new Class[]{String.class, BeanFactory.class});
assertSignatureEquals(desiredMethod, "overloaded(java.lang.String, org.springframework.beans.factory.BeanFactory)");
}
public void testResolveSignatureWithArray() throws Exception {
Method desiredMethod = MethodSignatureBean.class.getMethod("doSomethingWithAnArray", new Class[]{String[].class});
assertSignatureEquals(desiredMethod, "doSomethingWithAnArray(java.lang.String[])");
desiredMethod = MethodSignatureBean.class.getMethod("doSomethingWithAMultiDimensionalArray", new Class[]{String[][].class});
assertSignatureEquals(desiredMethod, "doSomethingWithAMultiDimensionalArray(java.lang.String[][])");
}
private void assertSignatureEquals(Method desiredMethod, String signature) {
assertEquals(desiredMethod, BeanUtils.resolveSignature(signature, MethodSignatureBean.class));
}
private static class NameAndSpecialProperty {
private String name;
private int specialProperty;
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setSpecialProperty(int specialProperty) {
this.specialProperty = specialProperty;
}
public int getSpecialProperty() {
return specialProperty;
}
}
private static class ContainerBean {
private ContainedBean[] containedBeans;
public ContainedBean[] getContainedBeans() {
return containedBeans;
}
public void setContainedBeans(ContainedBean[] containedBeans) {
this.containedBeans = containedBeans;
}
}
private static class ContainedBean {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
private static class MethodSignatureBean {
public void doSomething() {
}
public void doSomethingElse(String s, int x) {
}
public void overloaded() {
}
public void overloaded(String s) {
}
public void overloaded(String s, BeanFactory beanFactory) {
}
public void doSomethingWithAnArray(String[] strings) {
}
public void doSomethingWithAMultiDimensionalArray(String[][] strings) {
}
}
}

View File

@@ -1,48 +0,0 @@
/*
* Copyright 2002-2007 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.beans;
import junit.framework.TestCase;
import org.springframework.core.OverridingClassLoader;
/**
* @author Juergen Hoeller
*/
public class CachedIntrospectionResultsTests extends TestCase {
public void testAcceptClassLoader() throws Exception {
BeanWrapper bw = new BeanWrapperImpl(TestBean.class);
assertTrue(bw.isWritableProperty("name"));
assertTrue(bw.isWritableProperty("age"));
assertTrue(CachedIntrospectionResults.classCache.containsKey(TestBean.class));
ClassLoader child = new OverridingClassLoader(getClass().getClassLoader());
Class tbClass = child.loadClass("org.springframework.beans.TestBean");
assertFalse(CachedIntrospectionResults.classCache.containsKey(tbClass));
CachedIntrospectionResults.acceptClassLoader(child);
bw = new BeanWrapperImpl(tbClass);
assertTrue(bw.isWritableProperty("name"));
assertTrue(bw.isWritableProperty("age"));
assertTrue(CachedIntrospectionResults.classCache.containsKey(tbClass));
CachedIntrospectionResults.clearClassLoader(child);
assertFalse(CachedIntrospectionResults.classCache.containsKey(tbClass));
assertTrue(CachedIntrospectionResults.classCache.containsKey(TestBean.class));
}
}

View File

@@ -1,145 +0,0 @@
/*
* Copyright 2002-2005 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.beans;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Properties;
import java.util.Set;
import junit.framework.TestCase;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* @author Guillaume Poirier
* @author Juergen Hoeller
* @since 08.03.2004
*/
public class ConcurrentBeanWrapperTests extends TestCase {
private final Log logger = LogFactory.getLog(getClass());
private Set set = Collections.synchronizedSet(new HashSet());
private Throwable ex = null;
public void testSingleThread() {
for (int i = 0; i < 100; i++) {
performSet();
}
}
public void testConcurrent() {
for (int i = 0; i < 10; i++) {
TestRun run = new TestRun(this);
set.add(run);
Thread t = new Thread(run);
t.setDaemon(true);
t.start();
}
logger.info("Thread creation over, " + set.size() + " still active.");
synchronized (this) {
while (!set.isEmpty() && ex == null) {
try {
wait();
}
catch (InterruptedException e) {
logger.info(e.toString());
}
logger.info(set.size() + " threads still active.");
}
}
if (ex != null) {
fail(ex.getMessage());
}
}
private static void performSet() {
TestBean bean = new TestBean();
Properties p = (Properties) System.getProperties().clone();
assertTrue("The System properties must not be empty", p.size() != 0);
for (Iterator i = p.entrySet().iterator(); i.hasNext();) {
i.next();
if (Math.random() > 0.9) {
i.remove();
}
}
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
try {
p.store(buffer, null);
}
catch (IOException e) {
// ByteArrayOutputStream does not throw
// any IOException
}
String value = new String(buffer.toByteArray());
BeanWrapperImpl wrapper = new BeanWrapperImpl(bean);
wrapper.setPropertyValue("properties", value);
assertEquals(p, bean.getProperties());
}
private static class TestRun implements Runnable {
private ConcurrentBeanWrapperTests test;
public TestRun(ConcurrentBeanWrapperTests test) {
this.test = test;
}
public void run() {
try {
for (int i = 0; i < 100; i++) {
performSet();
}
}
catch (Throwable e) {
test.ex = e;
}
finally {
synchronized (test) {
test.set.remove(this);
test.notifyAll();
}
}
}
}
private static class TestBean {
private Properties properties;
public Properties getProperties() {
return properties;
}
public void setProperties(Properties properties) {
this.properties = properties;
}
}
}

View File

@@ -1,51 +0,0 @@
/*
* Copyright 2002-2006 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.beans;
import java.util.Arrays;
import junit.framework.TestCase;
/**
* @author Juergen Hoeller
*/
public class PropertyAccessorUtilsTests extends TestCase {
public void testCanonicalPropertyName() {
assertEquals("map", PropertyAccessorUtils.canonicalPropertyName("map"));
assertEquals("map[key1]", PropertyAccessorUtils.canonicalPropertyName("map[key1]"));
assertEquals("map[key1]", PropertyAccessorUtils.canonicalPropertyName("map['key1']"));
assertEquals("map[key1]", PropertyAccessorUtils.canonicalPropertyName("map[\"key1\"]"));
assertEquals("map[key1][key2]", PropertyAccessorUtils.canonicalPropertyName("map[key1][key2]"));
assertEquals("map[key1][key2]", PropertyAccessorUtils.canonicalPropertyName("map['key1'][\"key2\"]"));
assertEquals("map[key1].name", PropertyAccessorUtils.canonicalPropertyName("map[key1].name"));
assertEquals("map[key1].name", PropertyAccessorUtils.canonicalPropertyName("map['key1'].name"));
assertEquals("map[key1].name", PropertyAccessorUtils.canonicalPropertyName("map[\"key1\"].name"));
}
public void testCanonicalPropertyNames() {
String[] original =
new String[] {"map", "map[key1]", "map['key1']", "map[\"key1\"]", "map[key1][key2]",
"map['key1'][\"key2\"]", "map[key1].name", "map['key1'].name", "map[\"key1\"].name"};
String[] canonical =
new String[] {"map", "map[key1]", "map[key1]", "map[key1]", "map[key1][key2]",
"map[key1][key2]", "map[key1].name", "map[key1].name", "map[key1].name"};
assertTrue(Arrays.equals(canonical, PropertyAccessorUtils.canonicalPropertyNames(original)));
}
}

View File

@@ -1,159 +0,0 @@
/*
* Copyright 2002-2006 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.beans.propertyeditors;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import junit.framework.TestCase;
/**
* Test the conversion of Strings to {@link java.util.Properties} objects,
* and other property editors.
*
* @author Rod Johnson
* @author Juergen Hoeller
* @author Rick Evans
*/
public class PropertiesEditorTests extends TestCase {
public void testOneProperty() {
String s = "foo=bar";
PropertiesEditor pe= new PropertiesEditor();
pe.setAsText(s);
Properties p = (Properties) pe.getValue();
assertTrue("contains one entry", p.entrySet().size() == 1);
assertTrue("foo=bar", p.get("foo").equals("bar"));
}
public void testTwoProperties() {
String s = "foo=bar with whitespace\n" +
"me=mi";
PropertiesEditor pe= new PropertiesEditor();
pe.setAsText(s);
Properties p = (Properties) pe.getValue();
assertTrue("contains two entries", p.entrySet().size() == 2);
assertTrue("foo=bar with whitespace", p.get("foo").equals("bar with whitespace"));
assertTrue("me=mi", p.get("me").equals("mi"));
}
public void testHandlesEqualsInValue() {
String s = "foo=bar\n" +
"me=mi\n" +
"x=y=z";
PropertiesEditor pe= new PropertiesEditor();
pe.setAsText(s);
Properties p = (Properties) pe.getValue();
assertTrue("contains two entries", p.entrySet().size() == 3);
assertTrue("foo=bar", p.get("foo").equals("bar"));
assertTrue("me=mi", p.get("me").equals("mi"));
assertTrue("x='y=z'", p.get("x").equals("y=z"));
}
public void testHandlesEmptyProperty() {
String s = "foo=bar\nme=mi\nx=";
PropertiesEditor pe= new PropertiesEditor();
pe.setAsText(s);
Properties p = (Properties) pe.getValue();
assertTrue("contains two entries", p.entrySet().size() == 3);
assertTrue("foo=bar", p.get("foo").equals("bar"));
assertTrue("me=mi", p.get("me").equals("mi"));
assertTrue("x='y=z'", p.get("x").equals(""));
}
public void testHandlesEmptyPropertyWithoutEquals() {
String s = "foo\nme=mi\nx=x";
PropertiesEditor pe= new PropertiesEditor();
pe.setAsText(s);
Properties p = (Properties) pe.getValue();
assertTrue("contains three entries", p.entrySet().size() == 3);
assertTrue("foo is empty", p.get("foo").equals(""));
assertTrue("me=mi", p.get("me").equals("mi"));
}
/**
* Comments begin with #
*/
public void testIgnoresCommentLinesAndEmptyLines() {
String s = "#Ignore this comment\n" +
"foo=bar\n" +
"#Another=comment more junk /\n" +
"me=mi\n" +
"x=x\n" +
"\n";
PropertiesEditor pe= new PropertiesEditor();
pe.setAsText(s);
Properties p = (Properties) pe.getValue();
assertTrue("contains three entries", p.entrySet().size() == 3);
assertTrue("foo is bar", p.get("foo").equals("bar"));
assertTrue("me=mi", p.get("me").equals("mi"));
}
/**
* We'll typically align by indenting with tabs or spaces.
* These should be ignored if at the beginning of a line.
* We must ensure that comment lines beginning with whitespace are
* still ignored: The standard syntax doesn't allow this on JDK 1.3.
*/
public void testIgnoresLeadingSpacesAndTabs() {
String s = " #Ignore this comment\n" +
"\t\tfoo=bar\n" +
"\t#Another comment more junk \n" +
" me=mi\n" +
"x=x\n" +
"\n";
PropertiesEditor pe= new PropertiesEditor();
pe.setAsText(s);
Properties p = (Properties) pe.getValue();
assertTrue("contains 3 entries, not " + p.size(), p.size() == 3);
assertTrue("foo is bar", p.get("foo").equals("bar"));
assertTrue("me=mi", p.get("me").equals("mi"));
}
public void testNull() {
PropertiesEditor pe= new PropertiesEditor();
pe.setAsText(null);
Properties p = (Properties) pe.getValue();
assertEquals(0, p.size());
}
public void testEmptyString() {
PropertiesEditor pe = new PropertiesEditor();
pe.setAsText("");
Properties p = (Properties) pe.getValue();
assertTrue("empty string means empty properties", p.isEmpty());
}
public void testUsingMapAsValueSource() throws Exception {
Map map = new HashMap();
map.put("one", "1");
map.put("two", "2");
map.put("three", "3");
PropertiesEditor pe = new PropertiesEditor();
pe.setValue(map);
Object value = pe.getValue();
assertNotNull(value);
assertTrue(value instanceof Properties);
Properties props = (Properties) value;
assertEquals(3, props.size());
assertEquals("1", props.getProperty("one"));
assertEquals("2", props.getProperty("two"));
assertEquals("3", props.getProperty("three"));
}
}

View File

@@ -1,78 +0,0 @@
/*
* Copyright 2002-2007 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.beans.propertyeditors;
import junit.framework.TestCase;
/**
* @author Rick Evans
* @author Juergen Hoeller
*/
public class StringArrayPropertyEditorTests extends TestCase {
public void testWithDefaultSeparator() throws Exception {
StringArrayPropertyEditor editor = new StringArrayPropertyEditor();
editor.setAsText("0,1,2");
Object value = editor.getValue();
assertNotNull(value);
assertTrue(value instanceof String[]);
String[] array = (String[]) value;
for (int i = 0; i < array.length; ++i) {
assertEquals("" + i, array[i]);
}
assertEquals("0,1,2", editor.getAsText());
}
public void testWithCustomSeparator() throws Exception {
StringArrayPropertyEditor editor = new StringArrayPropertyEditor(":");
editor.setAsText("0:1:2");
Object value = editor.getValue();
assertTrue(value instanceof String[]);
String[] array = (String[]) value;
for (int i = 0; i < array.length; ++i) {
assertEquals("" + i, array[i]);
}
assertEquals("0:1:2", editor.getAsText());
}
public void testWithCharsToDelete() throws Exception {
StringArrayPropertyEditor editor = new StringArrayPropertyEditor(",", "\r\n", false);
editor.setAsText("0\r,1,\n2");
Object value = editor.getValue();
assertTrue(value instanceof String[]);
String[] array = (String[]) value;
for (int i = 0; i < array.length; ++i) {
assertEquals("" + i, array[i]);
}
assertEquals("0,1,2", editor.getAsText());
}
public void testWithEmptyArray() throws Exception {
StringArrayPropertyEditor editor = new StringArrayPropertyEditor();
editor.setAsText("");
Object value = editor.getValue();
assertTrue(value instanceof String[]);
assertEquals(0, ((String[]) value).length);
}
public void testWithEmptyArrayAsNull() throws Exception {
StringArrayPropertyEditor editor = new StringArrayPropertyEditor(",", true);
editor.setAsText("");
assertNull(editor.getValue());
}
}

View File

@@ -1,111 +0,0 @@
/*
* Copyright 2002-2007 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.beans.propertyeditors;
import java.beans.PropertyEditor;
import java.net.URI;
import junit.framework.TestCase;
import org.springframework.util.ClassUtils;
/**
* @author Juergen Hoeller
*/
public class URIEditorTests extends TestCase {
public void testStandardURI() throws Exception {
PropertyEditor uriEditor = new URIEditor();
uriEditor.setAsText("mailto:juergen.hoeller@interface21.com");
Object value = uriEditor.getValue();
assertTrue(value instanceof URI);
URI uri = (URI) value;
assertEquals(uri.toString(), uriEditor.getAsText());
}
public void testStandardURL() throws Exception {
PropertyEditor uriEditor = new URIEditor();
uriEditor.setAsText("http://www.springframework.org");
Object value = uriEditor.getValue();
assertTrue(value instanceof URI);
URI uri = (URI) value;
assertEquals(uri.toString(), uriEditor.getAsText());
}
public void testStandardURLWithWhitespace() throws Exception {
PropertyEditor uriEditor = new URIEditor();
uriEditor.setAsText(" http://www.springframework.org ");
Object value = uriEditor.getValue();
assertTrue(value instanceof URI);
URI uri = (URI) value;
assertEquals(uri.toString(), uriEditor.getAsText());
}
public void testClasspathURL() throws Exception {
PropertyEditor uriEditor = new URIEditor(getClass().getClassLoader());
uriEditor.setAsText("classpath:" + ClassUtils.classPackageAsResourcePath(getClass()) +
"/" + ClassUtils.getShortName(getClass()) + ".class");
Object value = uriEditor.getValue();
assertTrue(value instanceof URI);
URI uri = (URI) value;
assertEquals(uri.toString(), uriEditor.getAsText());
assertTrue(!uri.getScheme().startsWith("classpath"));
}
public void testClasspathURLWithWhitespace() throws Exception {
PropertyEditor uriEditor = new URIEditor(getClass().getClassLoader());
uriEditor.setAsText(" classpath:" + ClassUtils.classPackageAsResourcePath(getClass()) +
"/" + ClassUtils.getShortName(getClass()) + ".class ");
Object value = uriEditor.getValue();
assertTrue(value instanceof URI);
URI uri = (URI) value;
assertEquals(uri.toString(), uriEditor.getAsText());
assertTrue(!uri.getScheme().startsWith("classpath"));
}
public void testClasspathURLAsIs() throws Exception {
PropertyEditor uriEditor = new URIEditor();
uriEditor.setAsText("classpath:test.txt");
Object value = uriEditor.getValue();
assertTrue(value instanceof URI);
URI uri = (URI) value;
assertEquals(uri.toString(), uriEditor.getAsText());
assertTrue(uri.getScheme().startsWith("classpath"));
}
public void testWithNonExistentResource() throws Exception {
PropertyEditor uriEditor = new URIEditor();
uriEditor.setAsText("gonna:/freak/in/the/morning/freak/in/the.evening");
Object value = uriEditor.getValue();
assertTrue(value instanceof URI);
URI uri = (URI) value;
assertEquals(uri.toString(), uriEditor.getAsText());
}
public void testSetAsTextWithNull() throws Exception {
PropertyEditor uriEditor = new URIEditor();
uriEditor.setAsText(null);
assertNull(uriEditor.getValue());
assertEquals("", uriEditor.getAsText());
}
public void testGetAsTextReturnsEmptyStringIfValueNotSet() throws Exception {
PropertyEditor uriEditor = new URIEditor();
assertEquals("", uriEditor.getAsText());
}
}

View File

@@ -1,219 +0,0 @@
/*
* Copyright 2002-2005 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.beans.support;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import junit.framework.TestCase;
import org.springframework.beans.BeanWrapper;
import org.springframework.beans.BeanWrapperImpl;
import org.springframework.beans.TestBean;
/**
* @author Juergen Hoeller
* @author Jean-Pierre PAWLAK
* @since 20.05.2003
*/
public class PagedListHolderTests extends TestCase {
public void testPagedListHolder() {
TestBean tb1 = new TestBean();
tb1.setName("eva");
tb1.setAge(25);
TestBean tb2 = new TestBean();
tb2.setName("juergen");
tb2.setAge(99);
TestBean tb3 = new TestBean();
tb3.setName("Rod");
tb3.setAge(32);
List tbs = new ArrayList();
tbs.add(tb1);
tbs.add(tb2);
tbs.add(tb3);
PagedListHolder holder = new PagedListHolder(tbs);
assertTrue("Correct source", holder.getSource() == tbs);
assertTrue("Correct number of elements", holder.getNrOfElements() == 3);
assertTrue("Correct number of pages", holder.getPageCount() == 1);
assertTrue("Correct page size", holder.getPageSize() == PagedListHolder.DEFAULT_PAGE_SIZE);
assertTrue("Correct page number", holder.getPage() == 0);
assertTrue("First page", holder.isFirstPage());
assertTrue("Last page", holder.isLastPage());
assertTrue("Correct first element", holder.getFirstElementOnPage() == 0);
assertTrue("Correct first element", holder.getLastElementOnPage() == 2);
assertTrue("Correct page list size", holder.getPageList().size() == 3);
assertTrue("Correct page list contents", holder.getPageList().get(0) == tb1);
assertTrue("Correct page list contents", holder.getPageList().get(1) == tb2);
assertTrue("Correct page list contents", holder.getPageList().get(2) == tb3);
holder.setPageSize(2);
assertTrue("Correct number of pages", holder.getPageCount() == 2);
assertTrue("Correct page size", holder.getPageSize() == 2);
assertTrue("Correct page number", holder.getPage() == 0);
assertTrue("First page", holder.isFirstPage());
assertFalse("Last page", holder.isLastPage());
assertTrue("Correct first element", holder.getFirstElementOnPage() == 0);
assertTrue("Correct last element", holder.getLastElementOnPage() == 1);
assertTrue("Correct page list size", holder.getPageList().size() == 2);
assertTrue("Correct page list contents", holder.getPageList().get(0) == tb1);
assertTrue("Correct page list contents", holder.getPageList().get(1) == tb2);
holder.setPage(1);
assertTrue("Correct page number", holder.getPage() == 1);
assertFalse("First page", holder.isFirstPage());
assertTrue("Last page", holder.isLastPage());
assertTrue("Correct first element", holder.getFirstElementOnPage() == 2);
assertTrue("Correct last element", holder.getLastElementOnPage() == 2);
assertTrue("Correct page list size", holder.getPageList().size() == 1);
assertTrue("Correct page list contents", holder.getPageList().get(0) == tb3);
holder.setPageSize(3);
assertTrue("Correct number of pages", holder.getPageCount() == 1);
assertTrue("Correct page size", holder.getPageSize() == 3);
assertTrue("Correct page number", holder.getPage() == 0);
assertTrue("First page", holder.isFirstPage());
assertTrue("Last page", holder.isLastPage());
assertTrue("Correct first element", holder.getFirstElementOnPage() == 0);
assertTrue("Correct last element", holder.getLastElementOnPage() == 2);
holder.setPage(1);
holder.setPageSize(2);
assertTrue("Correct number of pages", holder.getPageCount() == 2);
assertTrue("Correct page size", holder.getPageSize() == 2);
assertTrue("Correct page number", holder.getPage() == 1);
assertFalse("First page", holder.isFirstPage());
assertTrue("Last page", holder.isLastPage());
assertTrue("Correct first element", holder.getFirstElementOnPage() == 2);
assertTrue("Correct last element", holder.getLastElementOnPage() == 2);
holder.setPageSize(2);
holder.setPage(1);
((MutableSortDefinition) holder.getSort()).setProperty("name");
((MutableSortDefinition) holder.getSort()).setIgnoreCase(false);
holder.resort();
assertTrue("Correct source", holder.getSource() == tbs);
assertTrue("Correct number of elements", holder.getNrOfElements() == 3);
assertTrue("Correct number of pages", holder.getPageCount() == 2);
assertTrue("Correct page size", holder.getPageSize() == 2);
assertTrue("Correct page number", holder.getPage() == 0);
assertTrue("First page", holder.isFirstPage());
assertFalse("Last page", holder.isLastPage());
assertTrue("Correct first element", holder.getFirstElementOnPage() == 0);
assertTrue("Correct last element", holder.getLastElementOnPage() == 1);
assertTrue("Correct page list size", holder.getPageList().size() == 2);
assertTrue("Correct page list contents", holder.getPageList().get(0) == tb3);
assertTrue("Correct page list contents", holder.getPageList().get(1) == tb1);
((MutableSortDefinition) holder.getSort()).setProperty("name");
holder.resort();
assertTrue("Correct page list contents", holder.getPageList().get(0) == tb2);
assertTrue("Correct page list contents", holder.getPageList().get(1) == tb1);
((MutableSortDefinition) holder.getSort()).setProperty("name");
holder.resort();
assertTrue("Correct page list contents", holder.getPageList().get(0) == tb3);
assertTrue("Correct page list contents", holder.getPageList().get(1) == tb1);
holder.setPage(1);
assertTrue("Correct page list size", holder.getPageList().size() == 1);
assertTrue("Correct page list contents", holder.getPageList().get(0) == tb2);
((MutableSortDefinition) holder.getSort()).setProperty("age");
holder.resort();
assertTrue("Correct page list contents", holder.getPageList().get(0) == tb1);
assertTrue("Correct page list contents", holder.getPageList().get(1) == tb3);
((MutableSortDefinition) holder.getSort()).setIgnoreCase(true);
holder.resort();
assertTrue("Correct page list contents", holder.getPageList().get(0) == tb1);
assertTrue("Correct page list contents", holder.getPageList().get(1) == tb3);
holder.nextPage();
assertEquals(1, holder.getPage());
holder.previousPage();
assertEquals(0, holder.getPage());
holder.nextPage();
assertEquals(1, holder.getPage());
holder.nextPage();
assertEquals(1, holder.getPage());
holder.previousPage();
assertEquals(0, holder.getPage());
holder.previousPage();
assertEquals(0, holder.getPage());
}
public static class MockFilter {
private String name = "";
private String age = "";
private String extendedInfo = "";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getExtendedInfo() {
return extendedInfo;
}
public void setExtendedInfo(String extendedInfo) {
this.extendedInfo = extendedInfo;
}
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof MockFilter)) return false;
final MockFilter mockFilter = (MockFilter) o;
if (!age.equals(mockFilter.age)) return false;
if (!extendedInfo.equals(mockFilter.extendedInfo)) return false;
if (!name.equals(mockFilter.name)) return false;
return true;
}
public int hashCode() {
int result;
result = name.hashCode();
result = 29 * result + age.hashCode();
result = 29 * result + extendedInfo.hashCode();
return result;
}
}
}