📄 beanwrappertestsuite.java
字号:
assertTrue("stringArray length = 4", pt.stringArray.length == 4);
assertTrue("correct values", pt.stringArray[0].equals("foo") && pt.stringArray[1].equals("fi") &&
pt.stringArray[2].equals("fi") && pt.stringArray[3].equals("fum"));
List list = new ArrayList();
list.add("4foo");
list.add("7fi");
list.add("6fi");
list.add("5fum");
bw.setPropertyValue("stringArray", list);
assertTrue("stringArray length = 4", pt.stringArray.length == 4);
assertTrue("correct values", pt.stringArray[0].equals("foo") && pt.stringArray[1].equals("fi") &&
pt.stringArray[2].equals("fi") && pt.stringArray[3].equals("fum"));
Set set = new HashSet();
set.add("4foo");
set.add("7fi");
set.add("6fum");
bw.setPropertyValue("stringArray", set);
assertTrue("stringArray length = 3", pt.stringArray.length == 3);
List result = Arrays.asList(pt.stringArray);
assertTrue("correct values", result.contains("foo") && result.contains("fi") && result.contains("fum"));
bw.setPropertyValue("stringArray", "8one");
assertTrue("stringArray length = 1", pt.stringArray.length == 1);
assertTrue("correct values", pt.stringArray[0].equals("one"));
bw.setPropertyValue("stringArray", "1foo,3fi,2fi,1fum");
assertTrue("stringArray length = 4", pt.stringArray.length == 4);
assertTrue("correct values", pt.stringArray[0].equals("foo") && pt.stringArray[1].equals("fi") &&
pt.stringArray[2].equals("fi") && pt.stringArray[3].equals("fum"));
}
public void testIntArrayProperty() {
PropsTest pt = new PropsTest();
BeanWrapper bw = new BeanWrapperImpl(pt);
bw.setPropertyValue("intArray", new int[] {4, 5, 2, 3});
assertTrue("intArray length = 4", pt.intArray.length == 4);
assertTrue("correct values", pt.intArray[0] == 4 && pt.intArray[1] == 5 &&
pt.intArray[2] == 2 && pt.intArray[3] == 3);
bw.setPropertyValue("intArray", new String[] {"4", "5", "2", "3"});
assertTrue("intArray length = 4", pt.intArray.length == 4);
assertTrue("correct values", pt.intArray[0] == 4 && pt.intArray[1] == 5 &&
pt.intArray[2] == 2 && pt.intArray[3] == 3);
List list = new ArrayList();
list.add(new Integer(4));
list.add("5");
list.add(new Integer(2));
list.add("3");
bw.setPropertyValue("intArray", list);
assertTrue("intArray length = 4", pt.intArray.length == 4);
assertTrue("correct values", pt.intArray[0] == 4 && pt.intArray[1] == 5 &&
pt.intArray[2] == 2 && pt.intArray[3] == 3);
Set set = new HashSet();
set.add("4");
set.add(new Integer(5));
set.add("3");
bw.setPropertyValue("intArray", set);
assertTrue("intArray length = 3", pt.intArray.length == 3);
List result = new ArrayList();
result.add(new Integer(pt.intArray[0]));
result.add(new Integer(pt.intArray[1]));
result.add(new Integer(pt.intArray[2]));
assertTrue("correct values", result.contains(new Integer(4)) && result.contains(new Integer(5)) &&
result.contains(new Integer(3)));
bw.setPropertyValue("intArray", new Integer[] {new Integer(1)});
assertTrue("intArray length = 4", pt.intArray.length == 1);
assertTrue("correct values", pt.intArray[0] == 1);
bw.setPropertyValue("intArray", new Integer(1));
assertTrue("intArray length = 4", pt.intArray.length == 1);
assertTrue("correct values", pt.intArray[0] == 1);
bw.setPropertyValue("intArray", new String[] {"1"});
assertTrue("intArray length = 4", pt.intArray.length == 1);
assertTrue("correct values", pt.intArray[0] == 1);
bw.setPropertyValue("intArray", "1");
assertTrue("intArray length = 4", pt.intArray.length == 1);
assertTrue("correct values", pt.intArray[0] == 1);
}
public void testIntArrayPropertyWithCustomEditor() {
PropsTest pt = new PropsTest();
BeanWrapper bw = new BeanWrapperImpl(pt);
bw.registerCustomEditor(int.class, new PropertyEditorSupport() {
public void setAsText(String text) {
setValue(new Integer(Integer.parseInt(text) + 1));
}
});
bw.setPropertyValue("intArray", new int[] {4, 5, 2, 3});
assertTrue("intArray length = 4", pt.intArray.length == 4);
assertTrue("correct values", pt.intArray[0] == 4 && pt.intArray[1] == 5 &&
pt.intArray[2] == 2 && pt.intArray[3] == 3);
bw.setPropertyValue("intArray", new String[] {"3", "4", "1", "2"});
assertTrue("intArray length = 4", pt.intArray.length == 4);
assertTrue("correct values", pt.intArray[0] == 4 && pt.intArray[1] == 5 &&
pt.intArray[2] == 2 && pt.intArray[3] == 3);
bw.setPropertyValue("intArray", new Integer(1));
assertTrue("intArray length = 4", pt.intArray.length == 1);
assertTrue("correct values", pt.intArray[0] == 1);
bw.setPropertyValue("intArray", new String[] {"0"});
assertTrue("intArray length = 4", pt.intArray.length == 1);
assertTrue("correct values", pt.intArray[0] == 1);
bw.setPropertyValue("intArray", "0");
assertTrue("intArray length = 4", pt.intArray.length == 1);
assertTrue("correct values", pt.intArray[0] == 1);
}
public void testIndividualAllValid() {
TestBean t = new TestBean();
String newName = "tony";
int newAge = 65;
String newTouchy = "valid";
try {
BeanWrapper bw = new BeanWrapperImpl(t);
bw.setPropertyValue("age", new Integer(newAge));
bw.setPropertyValue(new PropertyValue("name", newName));
bw.setPropertyValue(new PropertyValue("touchy", newTouchy));
assertTrue("Validly set property must stick", t.getName().equals(newName));
assertTrue("Validly set property must stick", t.getTouchy().equals(newTouchy));
assertTrue("Validly set property must stick", t.getAge() == newAge);
}
catch (BeansException ex) {
fail("Shouldn't throw exception when everything is valid");
}
}
public void test2Invalid() {
TestBean t = new TestBean();
String newName = "tony";
String invalidTouchy = ".valid";
try {
BeanWrapper bw = new BeanWrapperImpl(t);
//System.out.println(bw);
MutablePropertyValues pvs = new MutablePropertyValues();
pvs.addPropertyValue(new PropertyValue("age", "foobar"));
pvs.addPropertyValue(new PropertyValue("name", newName));
pvs.addPropertyValue(new PropertyValue("touchy", invalidTouchy));
bw.setPropertyValues(pvs);
fail("Should throw exception when everything is valid");
}
catch (PropertyAccessExceptionsException ex) {
assertTrue("Must contain 2 exceptions", ex.getExceptionCount() == 2);
// Test validly set property matches
assertTrue("Validly set property must stick", t.getName().equals(newName));
assertTrue("Invalidly set property must retain old value", t.getAge() == 0);
assertTrue("New value of dodgy setter must be available through exception",
ex.getPropertyAccessException("touchy").getPropertyChangeEvent().getNewValue().equals(invalidTouchy));
}
catch (Exception ex) {
fail("Shouldn't throw exception other than pvee");
}
}
public void testTypeMismatch() {
TestBean t = new TestBean();
try {
BeanWrapper bw = new BeanWrapperImpl(t);
bw.setPropertyValue("age", "foobar");
fail("Should throw exception on type mismatch");
}
catch (TypeMismatchException ex) {
// expected
}
catch (Exception ex) {
fail("Shouldn't throw exception other than Type mismatch");
}
}
public void testEmptyValueForPrimitiveProperty() {
TestBean t = new TestBean();
try {
BeanWrapper bw = new BeanWrapperImpl(t);
bw.setPropertyValue("age", "");
fail("Should throw exception on type mismatch");
}
catch (TypeMismatchException ex) {
// expected
}
catch (Exception ex) {
fail("Shouldn't throw exception other than Type mismatch");
}
}
public void testSetPropertyValuesIgnoresInvalidNestedOnRequest() {
ITestBean rod = new TestBean();
MutablePropertyValues pvs = new MutablePropertyValues();
pvs.addPropertyValue(new PropertyValue("name", "rod"));
pvs.addPropertyValue(new PropertyValue("graceful.rubbish", "tony"));
pvs.addPropertyValue(new PropertyValue("more.garbage", new Object()));
BeanWrapper bw = new BeanWrapperImpl(rod);
bw.setPropertyValues(pvs, true);
assertTrue("Set valid and ignored invalid", rod.getName().equals("rod"));
try {
// Don't ignore: should fail
bw.setPropertyValues(pvs, false);
fail("Shouldn't have ignored invalid updates");
}
catch (NotWritablePropertyException ex) {
// OK: but which exception??
}
}
public void testGetNestedProperty() {
ITestBean rod = new TestBean("rod", 31);
ITestBean kerry = new TestBean("kerry", 35);
rod.setSpouse(kerry);
kerry.setSpouse(rod);
BeanWrapper bw = new BeanWrapperImpl(rod);
Integer KA = (Integer) bw.getPropertyValue("spouse.age");
assertTrue("kerry is 35", KA.intValue() == 35);
Integer RA = (Integer) bw.getPropertyValue("spouse.spouse.age");
assertTrue("rod is 31, not" + RA, RA.intValue() == 31);
ITestBean spousesSpouse = (ITestBean) bw.getPropertyValue("spouse.spouse");
assertTrue("spousesSpouse = initial point", rod == spousesSpouse);
}
public void testGetNestedPropertyNullValue() throws Exception {
ITestBean rod = new TestBean("rod", 31);
ITestBean kerry = new TestBean("kerry", 35);
rod.setSpouse(kerry);
BeanWrapper bw = new BeanWrapperImpl(rod);
try {
bw.getPropertyValue("spouse.spouse.age");
fail("Shouldn't have succeded with null path");
}
catch (NullValueInNestedPathException ex) {
// ok
assertTrue("it was the spouse.spouse property that was null, not " + ex.getPropertyName(),
ex.getPropertyName().equals("spouse.spouse"));
}
}
public void testSetNestedProperty() throws Exception {
ITestBean rod = new TestBean("rod", 31);
ITestBean kerry = new TestBean("kerry", 0);
BeanWrapper bw = new BeanWrapperImpl(rod);
bw.setPropertyValue("spouse", kerry);
assertTrue("nested set worked", rod.getSpouse() == kerry);
assertTrue("no back relation", kerry.getSpouse() == null);
bw.setPropertyValue(new PropertyValue("spouse.spouse", rod));
assertTrue("nested set worked", kerry.getSpouse() == rod);
assertTrue("kerry age not set", kerry.getAge()==0);
bw.setPropertyValue(new PropertyValue("spouse.age", new Integer(35)));
assertTrue("Set primitive on spouse", kerry.getAge()==35);
}
public void testSetNestedPropertyNullValue() throws Exception {
ITestBean rod = new TestBean("rod", 31);
BeanWrapper bw = new BeanWrapperImpl(rod);
try {
bw.setPropertyValue("spouse.age", new Integer(31));
fail("Shouldn't have succeeded with null path");
}
catch (NullValueInNestedPathException ex) {
// expected
assertTrue("it was the spouse property that was null, not " + ex.getPropertyName(),
ex.getPropertyName().equals("spouse"));
}
}
public void testSetNestedPropertyPolymorphic() throws Exception {
ITestBean rod = new TestBean("rod", 31);
ITestBean kerry = new Employee();
BeanWrapper bw = new BeanWrapperImpl(rod);
bw.setPropertyValue("spouse", kerry);
bw.setPropertyValue("spouse.age", new Integer(35));
bw.setPropertyValue("spouse.name", "Kerry");
bw.setPropertyValue("spouse.company", "Lewisham");
assertTrue("kerry name is Kerry", kerry.getName().equals("Kerry"));
assertTrue("nested set worked", rod.getSpouse() == kerry);
assertTrue("no back relation", kerry.getSpouse() == null);
bw.setPropertyValue(new PropertyValue("spouse.spouse", rod));
assertTrue("nested set worked", kerry.getSpouse() == rod);
BeanWrapper kbw = new BeanWrapperImpl(kerry);
assertTrue("spouse.spouse.spouse.spouse.company=Lewisham",
"Lewisham".equals(kbw.getPropertyValue("spouse.spouse.spouse.spouse.company")));
}
public void testNewWrappedInstancePropertyValuesGet() {
BeanWrapper bw = new BeanWrapperImpl();
TestBean t = new TestBean("Tony", 50);
bw.setWrappedInstance(t);
assertEquals("Bean wrapper returns wrong property value", new Integer(t.getAge()), bw.getPropertyValue("age"));
TestBean u = new TestBean("Udo", 30);
bw.setWrappedInstance(u);
assertEquals("Bean wrapper returns cached property value", new Integer(u.getAge()), bw.getPropertyValue("age"));
}
public void testNewWrappedInstanceNestedPropertyValuesGet() {
BeanWrapper bw = new BeanWrapperImpl();
TestBean t = new TestBean("Tony", 50);
t.setSpouse(new TestBean("Sue", 40));
bw.setWrappedInstance(t);
assertEquals("Bean wrapper returns wrong nested property value", new Integer(t.getSpouse().getAge()), bw.getPropertyValue("spouse.age"));
TestBean u = new TestBean("Udo", 30);
u.setSpouse(new TestBean("Vera", 20));
bw.setWrappedInstance(u);
assertEquals("Bean wrapper returns cached nested property value", new Integer(u.getSpouse().getAge()), bw.getPropertyValue("spouse.age"));
}
public void testNullObject() {
try {
BeanWrapper bw = new BeanWrapperImpl((Object) null);
fail ("Must throw an exception when constructed with null object");
}
catch (IllegalArgumentException ex) {
// expected
}
}
public void testNestedProperties() {
String doctorCompany = "";
String lawyerCompany = "Dr. Sueem";
TestBean tb = new TestBean();
BeanWrapper bw = new BeanWrapperImpl(tb);
bw.setPropertyValue("doctor.company", doctorCompany);
bw.setPropertyValue("lawyer.company", lawyerCompany);
assertEquals(doctorCompany, tb.getDoctor().getCompany());
assertEquals(lawyerCompany, tb.getLawyer().getCompany());
}
public void testIndexedProperties() {
IndexedTestBean bean = new IndexedTestBean();
BeanWrapper bw = new BeanWrapperImpl(bean);
TestBean tb0 = bean.getArray()[0];
TestBean tb1 = bean.getArray()[1];
TestBean tb2 = ((TestBean) bean.getList().get(0));
TestBean tb3 = ((TestBean) bean.getList().get(1));
TestBean tb6 = ((TestBean) bean.getSet().toArray()[0]);
TestBean tb7 = ((TestBean) bean.getSet().toArray()[1]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -