Polish PropertyAccessor tests
This commit is contained in:
parent
9bdc545a95
commit
6177f00a63
|
|
@ -68,25 +68,25 @@ import static org.assertj.core.api.Assertions.within;
|
||||||
* @author Dave Syer
|
* @author Dave Syer
|
||||||
* @author Stephane Nicoll
|
* @author Stephane Nicoll
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractPropertyAccessorTests {
|
abstract class AbstractPropertyAccessorTests {
|
||||||
|
|
||||||
protected abstract AbstractPropertyAccessor createAccessor(Object target);
|
protected abstract AbstractPropertyAccessor createAccessor(Object target);
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void createWithNullTarget() {
|
void createWithNullTarget() {
|
||||||
assertThatIllegalArgumentException().isThrownBy(() -> createAccessor(null));
|
assertThatIllegalArgumentException().isThrownBy(() -> createAccessor(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void isReadableProperty() {
|
void isReadableProperty() {
|
||||||
AbstractPropertyAccessor accessor = createAccessor(new Simple("John", 2));
|
AbstractPropertyAccessor accessor = createAccessor(new Simple("John", 2));
|
||||||
|
|
||||||
assertThat(accessor.isReadableProperty("name")).isTrue();
|
assertThat(accessor.isReadableProperty("name")).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void isReadablePropertyNotReadable() {
|
void isReadablePropertyNotReadable() {
|
||||||
AbstractPropertyAccessor accessor = createAccessor(new NoRead());
|
AbstractPropertyAccessor accessor = createAccessor(new NoRead());
|
||||||
|
|
||||||
assertThat(accessor.isReadableProperty("age")).isFalse();
|
assertThat(accessor.isReadableProperty("age")).isFalse();
|
||||||
|
|
@ -96,42 +96,42 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
* Shouldn't throw an exception: should just return false
|
* Shouldn't throw an exception: should just return false
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void isReadablePropertyNoSuchProperty() {
|
void isReadablePropertyNoSuchProperty() {
|
||||||
AbstractPropertyAccessor accessor = createAccessor(new NoRead());
|
AbstractPropertyAccessor accessor = createAccessor(new NoRead());
|
||||||
|
|
||||||
assertThat(accessor.isReadableProperty("xxxxx")).isFalse();
|
assertThat(accessor.isReadableProperty("xxxxx")).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void isReadablePropertyNull() {
|
void isReadablePropertyNull() {
|
||||||
AbstractPropertyAccessor accessor = createAccessor(new NoRead());
|
AbstractPropertyAccessor accessor = createAccessor(new NoRead());
|
||||||
|
|
||||||
assertThatIllegalArgumentException().isThrownBy(() -> accessor.isReadableProperty(null));
|
assertThatIllegalArgumentException().isThrownBy(() -> accessor.isReadableProperty(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void isWritableProperty() {
|
void isWritableProperty() {
|
||||||
AbstractPropertyAccessor accessor = createAccessor(new Simple("John", 2));
|
AbstractPropertyAccessor accessor = createAccessor(new Simple("John", 2));
|
||||||
|
|
||||||
assertThat(accessor.isWritableProperty("name")).isTrue();
|
assertThat(accessor.isWritableProperty("name")).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void isWritablePropertyNull() {
|
void isWritablePropertyNull() {
|
||||||
AbstractPropertyAccessor accessor = createAccessor(new NoRead());
|
AbstractPropertyAccessor accessor = createAccessor(new NoRead());
|
||||||
|
|
||||||
assertThatIllegalArgumentException().isThrownBy(() -> accessor.isWritableProperty(null));
|
assertThatIllegalArgumentException().isThrownBy(() -> accessor.isWritableProperty(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void isWritablePropertyNoSuchProperty() {
|
void isWritablePropertyNoSuchProperty() {
|
||||||
AbstractPropertyAccessor accessor = createAccessor(new NoRead());
|
AbstractPropertyAccessor accessor = createAccessor(new NoRead());
|
||||||
|
|
||||||
assertThat(accessor.isWritableProperty("xxxxx")).isFalse();
|
assertThat(accessor.isWritableProperty("xxxxx")).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void isReadableWritableForIndexedProperties() {
|
void isReadableWritableForIndexedProperties() {
|
||||||
IndexedTestBean target = new IndexedTestBean();
|
IndexedTestBean target = new IndexedTestBean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
|
|
||||||
|
|
@ -177,28 +177,28 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getSimpleProperty() {
|
void getSimpleProperty() {
|
||||||
Simple target = new Simple("John", 2);
|
Simple target = new Simple("John", 2);
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
assertThat(accessor.getPropertyValue("name")).isEqualTo("John");
|
assertThat(accessor.getPropertyValue("name")).isEqualTo("John");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getNestedProperty() {
|
void getNestedProperty() {
|
||||||
Person target = createPerson("John", "London", "UK");
|
Person target = createPerson("John", "London", "UK");
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
assertThat(accessor.getPropertyValue("address.city")).isEqualTo("London");
|
assertThat(accessor.getPropertyValue("address.city")).isEqualTo("London");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getNestedDeepProperty() {
|
void getNestedDeepProperty() {
|
||||||
Person target = createPerson("John", "London", "UK");
|
Person target = createPerson("John", "London", "UK");
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
assertThat(accessor.getPropertyValue("address.country.name")).isEqualTo("UK");
|
assertThat(accessor.getPropertyValue("address.country.name")).isEqualTo("UK");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getAnotherNestedDeepProperty() {
|
void getAnotherNestedDeepProperty() {
|
||||||
ITestBean target = new TestBean("rod", 31);
|
ITestBean target = new TestBean("rod", 31);
|
||||||
ITestBean kerry = new TestBean("kerry", 35);
|
ITestBean kerry = new TestBean("kerry", 35);
|
||||||
target.setSpouse(kerry);
|
target.setSpouse(kerry);
|
||||||
|
|
@ -213,7 +213,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getPropertyIntermediatePropertyIsNull() {
|
void getPropertyIntermediatePropertyIsNull() {
|
||||||
Person target = createPerson("John", "London", "UK");
|
Person target = createPerson("John", "London", "UK");
|
||||||
target.address = null;
|
target.address = null;
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
|
|
@ -226,7 +226,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getPropertyIntermediatePropertyIsNullWithAutoGrow() {
|
void getPropertyIntermediatePropertyIsNullWithAutoGrow() {
|
||||||
Person target = createPerson("John", "London", "UK");
|
Person target = createPerson("John", "London", "UK");
|
||||||
target.address = null;
|
target.address = null;
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
|
|
@ -236,7 +236,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getPropertyIntermediateMapEntryIsNullWithAutoGrow() {
|
void getPropertyIntermediateMapEntryIsNullWithAutoGrow() {
|
||||||
Foo target = new Foo();
|
Foo target = new Foo();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
accessor.setConversionService(new DefaultConversionService());
|
accessor.setConversionService(new DefaultConversionService());
|
||||||
|
|
@ -246,7 +246,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getUnknownProperty() {
|
void getUnknownProperty() {
|
||||||
Simple target = new Simple("John", 2);
|
Simple target = new Simple("John", 2);
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
assertThatExceptionOfType(NotReadablePropertyException.class).isThrownBy(() ->
|
assertThatExceptionOfType(NotReadablePropertyException.class).isThrownBy(() ->
|
||||||
|
|
@ -258,7 +258,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getUnknownNestedProperty() {
|
void getUnknownNestedProperty() {
|
||||||
Person target = createPerson("John", "London", "UK");
|
Person target = createPerson("John", "London", "UK");
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
|
|
||||||
|
|
@ -267,7 +267,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setSimpleProperty() {
|
void setSimpleProperty() {
|
||||||
Simple target = new Simple("John", 2);
|
Simple target = new Simple("John", 2);
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
|
|
||||||
|
|
@ -278,7 +278,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setNestedProperty() {
|
void setNestedProperty() {
|
||||||
Person target = createPerson("John", "Paris", "FR");
|
Person target = createPerson("John", "Paris", "FR");
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
|
|
||||||
|
|
@ -287,7 +287,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setNestedPropertyPolymorphic() throws Exception {
|
void setNestedPropertyPolymorphic() throws Exception {
|
||||||
ITestBean target = new TestBean("rod", 31);
|
ITestBean target = new TestBean("rod", 31);
|
||||||
ITestBean kerry = new Employee();
|
ITestBean kerry = new Employee();
|
||||||
|
|
||||||
|
|
@ -308,7 +308,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setAnotherNestedProperty() throws Exception {
|
void setAnotherNestedProperty() throws Exception {
|
||||||
ITestBean target = new TestBean("rod", 31);
|
ITestBean target = new TestBean("rod", 31);
|
||||||
ITestBean kerry = new TestBean("kerry", 0);
|
ITestBean kerry = new TestBean("kerry", 0);
|
||||||
|
|
||||||
|
|
@ -328,7 +328,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setYetAnotherNestedProperties() {
|
void setYetAnotherNestedProperties() {
|
||||||
String doctorCompany = "";
|
String doctorCompany = "";
|
||||||
String lawyerCompany = "Dr. Sueem";
|
String lawyerCompany = "Dr. Sueem";
|
||||||
TestBean target = new TestBean();
|
TestBean target = new TestBean();
|
||||||
|
|
@ -340,7 +340,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setNestedDeepProperty() {
|
void setNestedDeepProperty() {
|
||||||
Person target = createPerson("John", "Paris", "FR");
|
Person target = createPerson("John", "Paris", "FR");
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
|
|
||||||
|
|
@ -349,7 +349,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testErrorMessageOfNestedProperty() {
|
void testErrorMessageOfNestedProperty() {
|
||||||
ITestBean target = new TestBean();
|
ITestBean target = new TestBean();
|
||||||
ITestBean child = new DifferentTestBean();
|
ITestBean child = new DifferentTestBean();
|
||||||
child.setName("test");
|
child.setName("test");
|
||||||
|
|
@ -364,7 +364,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setPropertyIntermediatePropertyIsNull() {
|
void setPropertyIntermediatePropertyIsNull() {
|
||||||
Person target = createPerson("John", "Paris", "FR");
|
Person target = createPerson("John", "Paris", "FR");
|
||||||
target.address.country = null;
|
target.address.country = null;
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
|
|
@ -378,7 +378,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setAnotherPropertyIntermediatePropertyIsNull() throws Exception {
|
void setAnotherPropertyIntermediatePropertyIsNull() throws Exception {
|
||||||
ITestBean target = new TestBean("rod", 31);
|
ITestBean target = new TestBean("rod", 31);
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
assertThatExceptionOfType(NullValueInNestedPathException.class).isThrownBy(() ->
|
assertThatExceptionOfType(NullValueInNestedPathException.class).isThrownBy(() ->
|
||||||
|
|
@ -387,7 +387,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setPropertyIntermediatePropertyIsNullWithAutoGrow() {
|
void setPropertyIntermediatePropertyIsNullWithAutoGrow() {
|
||||||
Person target = createPerson("John", "Paris", "FR");
|
Person target = createPerson("John", "Paris", "FR");
|
||||||
target.address.country = null;
|
target.address.country = null;
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
|
|
@ -398,7 +398,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setPropertyIntermediateListIsNullWithAutoGrow() {
|
void setPropertyIntermediateListIsNullWithAutoGrow() {
|
||||||
Foo target = new Foo();
|
Foo target = new Foo();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
accessor.setConversionService(new DefaultConversionService());
|
accessor.setConversionService(new DefaultConversionService());
|
||||||
|
|
@ -410,7 +410,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setPropertyIntermediateListIsNullWithNoConversionService() {
|
void setPropertyIntermediateListIsNullWithNoConversionService() {
|
||||||
Foo target = new Foo();
|
Foo target = new Foo();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
accessor.setAutoGrowNestedPaths(true);
|
accessor.setAutoGrowNestedPaths(true);
|
||||||
|
|
@ -419,7 +419,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setPropertyIntermediateListIsNullWithBadConversionService() {
|
void setPropertyIntermediateListIsNullWithBadConversionService() {
|
||||||
Foo target = new Foo();
|
Foo target = new Foo();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
accessor.setConversionService(new GenericConversionService() {
|
accessor.setConversionService(new GenericConversionService() {
|
||||||
|
|
@ -435,7 +435,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setEmptyPropertyValues() {
|
void setEmptyPropertyValues() {
|
||||||
TestBean target = new TestBean();
|
TestBean target = new TestBean();
|
||||||
int age = 50;
|
int age = 50;
|
||||||
String name = "Tony";
|
String name = "Tony";
|
||||||
|
|
@ -452,7 +452,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setValidPropertyValues() {
|
void setValidPropertyValues() {
|
||||||
TestBean target = new TestBean();
|
TestBean target = new TestBean();
|
||||||
String newName = "tony";
|
String newName = "tony";
|
||||||
int newAge = 65;
|
int newAge = 65;
|
||||||
|
|
@ -469,7 +469,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setIndividualValidPropertyValues() {
|
void setIndividualValidPropertyValues() {
|
||||||
TestBean target = new TestBean();
|
TestBean target = new TestBean();
|
||||||
String newName = "tony";
|
String newName = "tony";
|
||||||
int newAge = 65;
|
int newAge = 65;
|
||||||
|
|
@ -484,7 +484,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setPropertyIsReflectedImmediately() {
|
void setPropertyIsReflectedImmediately() {
|
||||||
TestBean target = new TestBean();
|
TestBean target = new TestBean();
|
||||||
int newAge = 33;
|
int newAge = 33;
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
|
|
@ -495,7 +495,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setPropertyToNull() {
|
void setPropertyToNull() {
|
||||||
TestBean target = new TestBean();
|
TestBean target = new TestBean();
|
||||||
target.setName("Frank"); // we need to change it back
|
target.setName("Frank"); // we need to change it back
|
||||||
target.setSpouse(target);
|
target.setSpouse(target);
|
||||||
|
|
@ -510,7 +510,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setIndexedPropertyIgnored() {
|
void setIndexedPropertyIgnored() {
|
||||||
MutablePropertyValues values = new MutablePropertyValues();
|
MutablePropertyValues values = new MutablePropertyValues();
|
||||||
values.add("toBeIgnored[0]", 42);
|
values.add("toBeIgnored[0]", 42);
|
||||||
AbstractPropertyAccessor accessor = createAccessor(new Object());
|
AbstractPropertyAccessor accessor = createAccessor(new Object());
|
||||||
|
|
@ -518,7 +518,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setPropertyWithPrimitiveConversion() {
|
void setPropertyWithPrimitiveConversion() {
|
||||||
MutablePropertyValues values = new MutablePropertyValues();
|
MutablePropertyValues values = new MutablePropertyValues();
|
||||||
values.add("name", 42);
|
values.add("name", 42);
|
||||||
TestBean target = new TestBean();
|
TestBean target = new TestBean();
|
||||||
|
|
@ -528,7 +528,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setPropertyWithCustomEditor() {
|
void setPropertyWithCustomEditor() {
|
||||||
MutablePropertyValues values = new MutablePropertyValues();
|
MutablePropertyValues values = new MutablePropertyValues();
|
||||||
values.add("name", Integer.class);
|
values.add("name", Integer.class);
|
||||||
TestBean target = new TestBean();
|
TestBean target = new TestBean();
|
||||||
|
|
@ -544,7 +544,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setStringPropertyWithCustomEditor() throws Exception {
|
void setStringPropertyWithCustomEditor() throws Exception {
|
||||||
TestBean target = new TestBean();
|
TestBean target = new TestBean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
accessor.registerCustomEditor(String.class, "name", new PropertyEditorSupport() {
|
accessor.registerCustomEditor(String.class, "name", new PropertyEditorSupport() {
|
||||||
|
|
@ -567,7 +567,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setBooleanProperty() {
|
void setBooleanProperty() {
|
||||||
BooleanTestBean target = new BooleanTestBean();
|
BooleanTestBean target = new BooleanTestBean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
|
|
||||||
|
|
@ -581,7 +581,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setNumberProperties() {
|
void setNumberProperties() {
|
||||||
NumberTestBean target = new NumberTestBean();
|
NumberTestBean target = new NumberTestBean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
accessor.setPropertyValue("short2", "2");
|
accessor.setPropertyValue("short2", "2");
|
||||||
|
|
@ -608,7 +608,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setNumberPropertiesWithCoercion() {
|
void setNumberPropertiesWithCoercion() {
|
||||||
NumberTestBean target = new NumberTestBean();
|
NumberTestBean target = new NumberTestBean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
accessor.setPropertyValue("short2", 2);
|
accessor.setPropertyValue("short2", 2);
|
||||||
|
|
@ -635,7 +635,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setPrimitiveProperties() {
|
void setPrimitiveProperties() {
|
||||||
NumberPropertyBean target = new NumberPropertyBean();
|
NumberPropertyBean target = new NumberPropertyBean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
|
|
||||||
|
|
@ -684,7 +684,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setEnumProperty() {
|
void setEnumProperty() {
|
||||||
EnumTester target = new EnumTester();
|
EnumTester target = new EnumTester();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
|
|
||||||
|
|
@ -699,7 +699,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setGenericEnumProperty() {
|
void setGenericEnumProperty() {
|
||||||
EnumConsumer target = new EnumConsumer();
|
EnumConsumer target = new EnumConsumer();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
accessor.setPropertyValue("enumValue", TestEnum.class.getName() + ".TEST_VALUE");
|
accessor.setPropertyValue("enumValue", TestEnum.class.getName() + ".TEST_VALUE");
|
||||||
|
|
@ -707,7 +707,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setWildcardEnumProperty() {
|
void setWildcardEnumProperty() {
|
||||||
WildcardEnumConsumer target = new WildcardEnumConsumer();
|
WildcardEnumConsumer target = new WildcardEnumConsumer();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
accessor.setPropertyValue("enumValue", TestEnum.class.getName() + ".TEST_VALUE");
|
accessor.setPropertyValue("enumValue", TestEnum.class.getName() + ".TEST_VALUE");
|
||||||
|
|
@ -715,7 +715,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setPropertiesProperty() throws Exception {
|
void setPropertiesProperty() throws Exception {
|
||||||
PropsTester target = new PropsTester();
|
PropsTester target = new PropsTester();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
accessor.setPropertyValue("name", "ptest");
|
accessor.setPropertyValue("name", "ptest");
|
||||||
|
|
@ -733,44 +733,32 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setStringArrayProperty() throws Exception {
|
void setStringArrayProperty() throws Exception {
|
||||||
PropsTester target = new PropsTester();
|
PropsTester target = new PropsTester();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
|
|
||||||
accessor.setPropertyValue("stringArray", new String[]{"foo", "fi", "fi", "fum"});
|
accessor.setPropertyValue("stringArray", new String[]{"foo", "fi", "fi", "fum"});
|
||||||
assertThat(target.stringArray.length == 4).as("stringArray length = 4").isTrue();
|
assertThat(target.stringArray).containsExactly("foo", "fi", "fi", "fum");
|
||||||
assertThat(target.stringArray[0].equals("foo") && target.stringArray[1].equals("fi") &&
|
|
||||||
target.stringArray[2].equals("fi") && target.stringArray[3].equals("fum")).as("correct values").isTrue();
|
|
||||||
|
|
||||||
List<String> list = new ArrayList<>();
|
accessor.setPropertyValue("stringArray", Arrays.asList("foo", "fi", "fi", "fum"));
|
||||||
list.add("foo");
|
assertThat(target.stringArray).containsExactly("foo", "fi", "fi", "fum");
|
||||||
list.add("fi");
|
|
||||||
list.add("fi");
|
|
||||||
list.add("fum");
|
|
||||||
accessor.setPropertyValue("stringArray", list);
|
|
||||||
assertThat(target.stringArray.length == 4).as("stringArray length = 4").isTrue();
|
|
||||||
assertThat(target.stringArray[0].equals("foo") && target.stringArray[1].equals("fi") &&
|
|
||||||
target.stringArray[2].equals("fi") && target.stringArray[3].equals("fum")).as("correct values").isTrue();
|
|
||||||
|
|
||||||
Set<String> set = new HashSet<>();
|
Set<String> set = new HashSet<>();
|
||||||
set.add("foo");
|
set.add("foo");
|
||||||
set.add("fi");
|
set.add("fi");
|
||||||
set.add("fum");
|
set.add("fum");
|
||||||
accessor.setPropertyValue("stringArray", set);
|
accessor.setPropertyValue("stringArray", set);
|
||||||
assertThat(target.stringArray.length == 3).as("stringArray length = 3").isTrue();
|
assertThat(target.stringArray).containsExactlyInAnyOrder("foo", "fi", "fum");
|
||||||
List<String> result = Arrays.asList(target.stringArray);
|
|
||||||
assertThat(result.contains("foo") && result.contains("fi") && result.contains("fum")).as("correct values").isTrue();
|
|
||||||
|
|
||||||
accessor.setPropertyValue("stringArray", "one");
|
accessor.setPropertyValue("stringArray", "one");
|
||||||
assertThat(target.stringArray.length == 1).as("stringArray length = 1").isTrue();
|
assertThat(target.stringArray).containsExactly("one");
|
||||||
assertThat(target.stringArray[0]).as("stringArray elt is ok").isEqualTo("one");
|
|
||||||
|
|
||||||
accessor.setPropertyValue("stringArray", null);
|
accessor.setPropertyValue("stringArray", null);
|
||||||
assertThat(target.stringArray).as("stringArray is null").isNull();
|
assertThat(target.stringArray).as("stringArray is null").isNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setStringArrayPropertyWithCustomStringEditor() throws Exception {
|
void setStringArrayPropertyWithCustomStringEditor() throws Exception {
|
||||||
PropsTester target = new PropsTester();
|
PropsTester target = new PropsTester();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
accessor.registerCustomEditor(String.class, "stringArray", new PropertyEditorSupport() {
|
accessor.registerCustomEditor(String.class, "stringArray", new PropertyEditorSupport() {
|
||||||
|
|
@ -781,126 +769,90 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
});
|
});
|
||||||
|
|
||||||
accessor.setPropertyValue("stringArray", new String[] {"4foo", "7fi", "6fi", "5fum"});
|
accessor.setPropertyValue("stringArray", new String[] {"4foo", "7fi", "6fi", "5fum"});
|
||||||
assertThat(target.stringArray.length == 4).as("stringArray length = 4").isTrue();
|
assertThat(target.stringArray).containsExactly("foo", "fi", "fi", "fum");
|
||||||
assertThat(target.stringArray[0].equals("foo") && target.stringArray[1].equals("fi") &&
|
|
||||||
target.stringArray[2].equals("fi") && target.stringArray[3].equals("fum")).as("correct values").isTrue();
|
|
||||||
|
|
||||||
List<String> list = new ArrayList<>();
|
List<String> list = Arrays.asList("4foo", "7fi", "6fi", "5fum");
|
||||||
list.add("4foo");
|
|
||||||
list.add("7fi");
|
|
||||||
list.add("6fi");
|
|
||||||
list.add("5fum");
|
|
||||||
accessor.setPropertyValue("stringArray", list);
|
accessor.setPropertyValue("stringArray", list);
|
||||||
assertThat(target.stringArray.length == 4).as("stringArray length = 4").isTrue();
|
assertThat(target.stringArray).containsExactly("foo", "fi", "fi", "fum");
|
||||||
assertThat(target.stringArray[0].equals("foo") && target.stringArray[1].equals("fi") &&
|
|
||||||
target.stringArray[2].equals("fi") && target.stringArray[3].equals("fum")).as("correct values").isTrue();
|
|
||||||
|
|
||||||
Set<String> set = new HashSet<>();
|
Set<String> set = new HashSet<>();
|
||||||
set.add("4foo");
|
set.add("4foo");
|
||||||
set.add("7fi");
|
set.add("7fi");
|
||||||
set.add("6fum");
|
set.add("6fum");
|
||||||
accessor.setPropertyValue("stringArray", set);
|
accessor.setPropertyValue("stringArray", set);
|
||||||
assertThat(target.stringArray.length == 3).as("stringArray length = 3").isTrue();
|
assertThat(target.stringArray).containsExactlyInAnyOrder("foo", "fi", "fum");
|
||||||
List<String> result = Arrays.asList(target.stringArray);
|
|
||||||
assertThat(result.contains("foo") && result.contains("fi") && result.contains("fum")).as("correct values").isTrue();
|
|
||||||
|
|
||||||
accessor.setPropertyValue("stringArray", "8one");
|
accessor.setPropertyValue("stringArray", "8one");
|
||||||
assertThat(target.stringArray.length == 1).as("stringArray length = 1").isTrue();
|
assertThat(target.stringArray).containsExactly("one");
|
||||||
assertThat(target.stringArray[0].equals("one")).as("correct values").isTrue();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setStringArrayPropertyWithStringSplitting() throws Exception {
|
void setStringArrayPropertyWithStringSplitting() throws Exception {
|
||||||
PropsTester target = new PropsTester();
|
PropsTester target = new PropsTester();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
accessor.useConfigValueEditors();
|
accessor.useConfigValueEditors();
|
||||||
accessor.setPropertyValue("stringArray", "a1,b2");
|
accessor.setPropertyValue("stringArray", "a1,b2");
|
||||||
assertThat(target.stringArray.length == 2).as("stringArray length = 2").isTrue();
|
assertThat(target.stringArray).containsExactly("a1", "b2");
|
||||||
assertThat(target.stringArray[0].equals("a1") && target.stringArray[1].equals("b2")).as("correct values").isTrue();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setStringArrayPropertyWithCustomStringDelimiter() throws Exception {
|
void setStringArrayPropertyWithCustomStringDelimiter() throws Exception {
|
||||||
PropsTester target = new PropsTester();
|
PropsTester target = new PropsTester();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
accessor.registerCustomEditor(String[].class, "stringArray", new StringArrayPropertyEditor("-"));
|
accessor.registerCustomEditor(String[].class, "stringArray", new StringArrayPropertyEditor("-"));
|
||||||
accessor.setPropertyValue("stringArray", "a1-b2");
|
accessor.setPropertyValue("stringArray", "a1-b2");
|
||||||
assertThat(target.stringArray.length == 2).as("stringArray length = 2").isTrue();
|
assertThat(target.stringArray).containsExactly("a1", "b2");
|
||||||
assertThat(target.stringArray[0].equals("a1") && target.stringArray[1].equals("b2")).as("correct values").isTrue();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setStringArrayWithAutoGrow() throws Exception {
|
void setStringArrayWithAutoGrow() throws Exception {
|
||||||
StringArrayBean target = new StringArrayBean();
|
StringArrayBean target = new StringArrayBean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
accessor.setAutoGrowNestedPaths(true);
|
accessor.setAutoGrowNestedPaths(true);
|
||||||
|
|
||||||
accessor.setPropertyValue("array[0]", "Test0");
|
accessor.setPropertyValue("array[0]", "Test0");
|
||||||
assertThat(target.getArray()).hasSize(1);
|
assertThat(target.getArray()).containsExactly("Test0");
|
||||||
|
|
||||||
accessor.setPropertyValue("array[2]", "Test2");
|
accessor.setPropertyValue("array[2]", "Test2");
|
||||||
assertThat(target.getArray()).hasSize(3);
|
assertThat(target.getArray()).containsExactly("Test0", null, "Test2");
|
||||||
assertThat(target.getArray()[0].equals("Test0") && target.getArray()[1] == null &&
|
|
||||||
target.getArray()[2].equals("Test2")).as("correct values").isTrue();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setIntArrayProperty() {
|
void setIntArrayProperty() {
|
||||||
PropsTester target = new PropsTester();
|
PropsTester target = new PropsTester();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
|
|
||||||
accessor.setPropertyValue("intArray", new int[]{4, 5, 2, 3});
|
accessor.setPropertyValue("intArray", new int[] {4, 5, 2, 3});
|
||||||
assertThat(target.intArray.length == 4).as("intArray length = 4").isTrue();
|
assertThat(target.intArray).containsExactly(4, 5, 2, 3);
|
||||||
assertThat(target.intArray[0] == 4 && target.intArray[1] == 5 &&
|
|
||||||
target.intArray[2] == 2 && target.intArray[3] == 3).as("correct values").isTrue();
|
|
||||||
|
|
||||||
accessor.setPropertyValue("intArray", new String[] {"4", "5", "2", "3"});
|
accessor.setPropertyValue("intArray", new String[] {"4", "5", "2", "3"});
|
||||||
assertThat(target.intArray.length == 4).as("intArray length = 4").isTrue();
|
assertThat(target.intArray).containsExactly(4, 5, 2, 3);
|
||||||
assertThat(target.intArray[0] == 4 && target.intArray[1] == 5 &&
|
|
||||||
target.intArray[2] == 2 && target.intArray[3] == 3).as("correct values").isTrue();
|
|
||||||
|
|
||||||
List<Object> list = new ArrayList<>();
|
accessor.setPropertyValue("intArray", Arrays.asList(4, "5", 2, "3"));
|
||||||
list.add(4);
|
assertThat(target.intArray).containsExactly(4, 5, 2, 3);
|
||||||
list.add("5");
|
|
||||||
list.add(2);
|
|
||||||
list.add("3");
|
|
||||||
accessor.setPropertyValue("intArray", list);
|
|
||||||
assertThat(target.intArray.length == 4).as("intArray length = 4").isTrue();
|
|
||||||
assertThat(target.intArray[0] == 4 && target.intArray[1] == 5 &&
|
|
||||||
target.intArray[2] == 2 && target.intArray[3] == 3).as("correct values").isTrue();
|
|
||||||
|
|
||||||
Set<Object> set = new HashSet<>();
|
Set<Object> set = new HashSet<>();
|
||||||
set.add("4");
|
set.add("4");
|
||||||
set.add(5);
|
set.add(5);
|
||||||
set.add("3");
|
set.add("3");
|
||||||
accessor.setPropertyValue("intArray", set);
|
accessor.setPropertyValue("intArray", set);
|
||||||
assertThat(target.intArray.length == 3).as("intArray length = 3").isTrue();
|
assertThat(target.intArray).containsExactlyInAnyOrder(4, 5, 3);
|
||||||
List<Integer> result = new ArrayList<>();
|
|
||||||
result.add(target.intArray[0]);
|
|
||||||
result.add(target.intArray[1]);
|
|
||||||
result.add(target.intArray[2]);
|
|
||||||
assertThat(result.contains(4) && result.contains(5) &&
|
|
||||||
result.contains(3)).as("correct values").isTrue();
|
|
||||||
|
|
||||||
accessor.setPropertyValue("intArray", new Integer[] {1});
|
accessor.setPropertyValue("intArray", new Integer[] {1});
|
||||||
assertThat(target.intArray.length == 1).as("intArray length = 4").isTrue();
|
assertThat(target.intArray).containsExactly(1);
|
||||||
assertThat(target.intArray[0] == 1).as("correct values").isTrue();
|
|
||||||
|
|
||||||
accessor.setPropertyValue("intArray", 1);
|
accessor.setPropertyValue("intArray", 1);
|
||||||
assertThat(target.intArray.length == 1).as("intArray length = 4").isTrue();
|
assertThat(target.intArray).containsExactly(1);
|
||||||
assertThat(target.intArray[0] == 1).as("correct values").isTrue();
|
|
||||||
|
|
||||||
accessor.setPropertyValue("intArray", new String[] {"1"});
|
accessor.setPropertyValue("intArray", new String[] {"1"});
|
||||||
assertThat(target.intArray.length == 1).as("intArray length = 4").isTrue();
|
assertThat(target.intArray).containsExactly(1);
|
||||||
assertThat(target.intArray[0] == 1).as("correct values").isTrue();
|
|
||||||
|
|
||||||
accessor.setPropertyValue("intArray", "1");
|
accessor.setPropertyValue("intArray", "1");
|
||||||
assertThat(target.intArray.length == 1).as("intArray length = 4").isTrue();
|
assertThat(target.intArray).containsExactly(1);
|
||||||
assertThat(target.intArray[0] == 1).as("correct values").isTrue();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setIntArrayPropertyWithCustomEditor() {
|
void setIntArrayPropertyWithCustomEditor() {
|
||||||
PropsTester target = new PropsTester();
|
PropsTester target = new PropsTester();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
accessor.registerCustomEditor(int.class, new PropertyEditorSupport() {
|
accessor.registerCustomEditor(int.class, new PropertyEditorSupport() {
|
||||||
|
|
@ -910,51 +862,41 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
accessor.setPropertyValue("intArray", new int[]{4, 5, 2, 3});
|
accessor.setPropertyValue("intArray", new int[] {4, 5, 2, 3});
|
||||||
assertThat(target.intArray.length == 4).as("intArray length = 4").isTrue();
|
assertThat(target.intArray).containsExactly(4, 5, 2, 3);
|
||||||
assertThat(target.intArray[0] == 4 && target.intArray[1] == 5 &&
|
|
||||||
target.intArray[2] == 2 && target.intArray[3] == 3).as("correct values").isTrue();
|
|
||||||
|
|
||||||
accessor.setPropertyValue("intArray", new String[]{"3", "4", "1", "2"});
|
accessor.setPropertyValue("intArray", new String[] {"3", "4", "1", "2"});
|
||||||
assertThat(target.intArray.length == 4).as("intArray length = 4").isTrue();
|
assertThat(target.intArray).containsExactly(4, 5, 2, 3);
|
||||||
assertThat(target.intArray[0] == 4 && target.intArray[1] == 5 &&
|
|
||||||
target.intArray[2] == 2 && target.intArray[3] == 3).as("correct values").isTrue();
|
|
||||||
|
|
||||||
accessor.setPropertyValue("intArray", 1);
|
accessor.setPropertyValue("intArray", 1);
|
||||||
assertThat(target.intArray.length == 1).as("intArray length = 4").isTrue();
|
assertThat(target.intArray).containsExactly(1);
|
||||||
assertThat(target.intArray[0] == 1).as("correct values").isTrue();
|
|
||||||
|
|
||||||
accessor.setPropertyValue("intArray", new String[]{"0"});
|
accessor.setPropertyValue("intArray", new String[]{"0"});
|
||||||
assertThat(target.intArray.length == 1).as("intArray length = 4").isTrue();
|
assertThat(target.intArray).containsExactly(1);
|
||||||
assertThat(target.intArray[0] == 1).as("correct values").isTrue();
|
|
||||||
|
|
||||||
accessor.setPropertyValue("intArray", "0");
|
accessor.setPropertyValue("intArray", "0");
|
||||||
assertThat(target.intArray.length == 1).as("intArray length = 4").isTrue();
|
assertThat(target.intArray).containsExactly(1);
|
||||||
assertThat(target.intArray[0] == 1).as("correct values").isTrue();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setIntArrayPropertyWithStringSplitting() throws Exception {
|
void setIntArrayPropertyWithStringSplitting() throws Exception {
|
||||||
PropsTester target = new PropsTester();
|
PropsTester target = new PropsTester();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
accessor.useConfigValueEditors();
|
accessor.useConfigValueEditors();
|
||||||
accessor.setPropertyValue("intArray", "4,5");
|
accessor.setPropertyValue("intArray", "4,5");
|
||||||
assertThat(target.intArray.length == 2).as("intArray length = 2").isTrue();
|
assertThat(target.intArray).containsExactly(4, 5);
|
||||||
assertThat(target.intArray[0] == 4 && target.intArray[1] == 5).as("correct values").isTrue();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setPrimitiveArrayProperty() {
|
void setPrimitiveArrayProperty() {
|
||||||
PrimitiveArrayBean target = new PrimitiveArrayBean();
|
PrimitiveArrayBean target = new PrimitiveArrayBean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
accessor.setPropertyValue("array", new String[]{"1", "2"});
|
accessor.setPropertyValue("array", new String[]{"1", "2"});
|
||||||
assertThat(target.getArray()).hasSize(2);
|
assertThat(target.getArray()).containsExactly(1, 2);
|
||||||
assertThat(target.getArray()[0]).isEqualTo(1);
|
|
||||||
assertThat(target.getArray()[1]).isEqualTo(2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setPrimitiveArrayPropertyLargeMatchingWithSpecificEditor() {
|
void setPrimitiveArrayPropertyLargeMatchingWithSpecificEditor() {
|
||||||
PrimitiveArrayBean target = new PrimitiveArrayBean();
|
PrimitiveArrayBean target = new PrimitiveArrayBean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
accessor.registerCustomEditor(int.class, "array", new PropertyEditorSupport() {
|
accessor.registerCustomEditor(int.class, "array", new PropertyEditorSupport() {
|
||||||
|
|
@ -965,15 +907,14 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
int[] input = new int[1024];
|
int[] input = new int[10];
|
||||||
accessor.setPropertyValue("array", input);
|
accessor.setPropertyValue("array", input);
|
||||||
assertThat(target.getArray()).hasSize(1024);
|
assertThat(target.getArray()).hasSize(10);
|
||||||
assertThat(target.getArray()[0]).isEqualTo(1);
|
assertThat(Arrays.stream(target.getArray())).allMatch(n -> n == 1);
|
||||||
assertThat(target.getArray()[1]).isEqualTo(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setPrimitiveArrayPropertyLargeMatchingWithIndexSpecificEditor() {
|
void setPrimitiveArrayPropertyLargeMatchingWithIndexSpecificEditor() {
|
||||||
PrimitiveArrayBean target = new PrimitiveArrayBean();
|
PrimitiveArrayBean target = new PrimitiveArrayBean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
accessor.registerCustomEditor(int.class, "array[1]", new PropertyEditorSupport() {
|
accessor.registerCustomEditor(int.class, "array[1]", new PropertyEditorSupport() {
|
||||||
|
|
@ -984,49 +925,38 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
int[] input = new int[1024];
|
int[] input = new int[10];
|
||||||
accessor.setPropertyValue("array", input);
|
accessor.setPropertyValue("array", input);
|
||||||
assertThat(target.getArray()).hasSize(1024);
|
assertThat(target.getArray()).hasSize(10);
|
||||||
assertThat(target.getArray()[0]).isZero();
|
assertThat(target.getArray()[0]).isZero();
|
||||||
assertThat(target.getArray()[1]).isEqualTo(1);
|
assertThat(target.getArray()[1]).isEqualTo(1);
|
||||||
|
assertThat(Arrays.stream(target.getArray()).skip(2)).allMatch(n -> n == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setPrimitiveArrayPropertyWithAutoGrow() throws Exception {
|
void setPrimitiveArrayPropertyWithAutoGrow() throws Exception {
|
||||||
PrimitiveArrayBean target = new PrimitiveArrayBean();
|
PrimitiveArrayBean target = new PrimitiveArrayBean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
accessor.setAutoGrowNestedPaths(true);
|
accessor.setAutoGrowNestedPaths(true);
|
||||||
|
|
||||||
accessor.setPropertyValue("array[0]", 1);
|
accessor.setPropertyValue("array[0]", 1);
|
||||||
assertThat(target.getArray()).hasSize(1);
|
assertThat(target.getArray()).containsExactly(1);
|
||||||
|
|
||||||
accessor.setPropertyValue("array[2]", 3);
|
accessor.setPropertyValue("array[2]", 3);
|
||||||
assertThat(target.getArray()).hasSize(3);
|
assertThat(target.getArray()).containsExactly(1, 0, 3);
|
||||||
assertThat(target.getArray()[0] == 1 && target.getArray()[1] == 0 &&
|
|
||||||
target.getArray()[2] == 3).as("correct values").isTrue();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@SuppressWarnings("rawtypes")
|
void setGenericArrayProperty() {
|
||||||
public void setGenericArrayProperty() {
|
@SuppressWarnings("rawtypes")
|
||||||
SkipReaderStub target = new SkipReaderStub();
|
SkipReaderStub target = new SkipReaderStub();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
List<String> values = new ArrayList<>();
|
accessor.setPropertyValue("items", Arrays.asList("1", "2", "3", "4"));
|
||||||
values.add("1");
|
assertThat(target.items).containsExactly("1", "2", "3", "4");
|
||||||
values.add("2");
|
|
||||||
values.add("3");
|
|
||||||
values.add("4");
|
|
||||||
accessor.setPropertyValue("items", values);
|
|
||||||
Object[] result = target.items;
|
|
||||||
assertThat(result).hasSize(4);
|
|
||||||
assertThat(result[0]).isEqualTo("1");
|
|
||||||
assertThat(result[1]).isEqualTo("2");
|
|
||||||
assertThat(result[2]).isEqualTo("3");
|
|
||||||
assertThat(result[3]).isEqualTo("4");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setArrayPropertyToObject() {
|
void setArrayPropertyToObject() {
|
||||||
ArrayToObject target = new ArrayToObject();
|
ArrayToObject target = new ArrayToObject();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
|
|
||||||
|
|
@ -1040,7 +970,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setCollectionProperty() {
|
void setCollectionProperty() {
|
||||||
IndexedTestBean target = new IndexedTestBean();
|
IndexedTestBean target = new IndexedTestBean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
Collection<String> coll = new HashSet<>();
|
Collection<String> coll = new HashSet<>();
|
||||||
|
|
@ -1061,9 +991,9 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
assertThat((List<?>) target.getList()).isSameAs(list);
|
assertThat((List<?>) target.getList()).isSameAs(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked") // list cannot be properly parameterized as it breaks other tests
|
|
||||||
@Test
|
@Test
|
||||||
public void setCollectionPropertyNonMatchingType() {
|
@SuppressWarnings("unchecked") // list cannot be properly parameterized as it breaks other tests
|
||||||
|
void setCollectionPropertyNonMatchingType() {
|
||||||
IndexedTestBean target = new IndexedTestBean();
|
IndexedTestBean target = new IndexedTestBean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
Collection<String> coll = new ArrayList<>();
|
Collection<String> coll = new ArrayList<>();
|
||||||
|
|
@ -1088,9 +1018,9 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
assertThat(target.getList().containsAll(list)).isTrue();
|
assertThat(target.getList().containsAll(list)).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked") // list cannot be properly parameterized as it breaks other tests
|
|
||||||
@Test
|
@Test
|
||||||
public void setCollectionPropertyWithArrayValue() {
|
@SuppressWarnings("unchecked") // list cannot be properly parameterized as it breaks other tests
|
||||||
|
void setCollectionPropertyWithArrayValue() {
|
||||||
IndexedTestBean target = new IndexedTestBean();
|
IndexedTestBean target = new IndexedTestBean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
Collection<String> coll = new HashSet<>();
|
Collection<String> coll = new HashSet<>();
|
||||||
|
|
@ -1115,9 +1045,9 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
assertThat(target.getList().containsAll(list)).isTrue();
|
assertThat(target.getList().containsAll(list)).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked") // list cannot be properly parameterized as it breaks other tests
|
|
||||||
@Test
|
@Test
|
||||||
public void setCollectionPropertyWithIntArrayValue() {
|
@SuppressWarnings("unchecked") // list cannot be properly parameterized as it breaks other tests
|
||||||
|
void setCollectionPropertyWithIntArrayValue() {
|
||||||
IndexedTestBean target = new IndexedTestBean();
|
IndexedTestBean target = new IndexedTestBean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
Collection<Integer> coll = new HashSet<>();
|
Collection<Integer> coll = new HashSet<>();
|
||||||
|
|
@ -1142,9 +1072,9 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
assertThat(target.getList().containsAll(list)).isTrue();
|
assertThat(target.getList().containsAll(list)).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked") // list cannot be properly parameterized as it breaks other tests
|
|
||||||
@Test
|
@Test
|
||||||
public void setCollectionPropertyWithIntegerValue() {
|
@SuppressWarnings("unchecked") // list cannot be properly parameterized as it breaks other tests
|
||||||
|
void setCollectionPropertyWithIntegerValue() {
|
||||||
IndexedTestBean target = new IndexedTestBean();
|
IndexedTestBean target = new IndexedTestBean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
Collection<Integer> coll = new HashSet<>();
|
Collection<Integer> coll = new HashSet<>();
|
||||||
|
|
@ -1169,9 +1099,9 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
assertThat(target.getList().containsAll(list)).isTrue();
|
assertThat(target.getList().containsAll(list)).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked") // list cannot be properly parameterized as it breaks other tests
|
|
||||||
@Test
|
@Test
|
||||||
public void setCollectionPropertyWithStringValue() {
|
@SuppressWarnings("unchecked") // list cannot be properly parameterized as it breaks other tests
|
||||||
|
void setCollectionPropertyWithStringValue() {
|
||||||
IndexedTestBean target = new IndexedTestBean();
|
IndexedTestBean target = new IndexedTestBean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
List<String> set = new ArrayList<>();
|
List<String> set = new ArrayList<>();
|
||||||
|
|
@ -1192,7 +1122,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setCollectionPropertyWithStringValueAndCustomEditor() {
|
void setCollectionPropertyWithStringValueAndCustomEditor() {
|
||||||
IndexedTestBean target = new IndexedTestBean();
|
IndexedTestBean target = new IndexedTestBean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
accessor.registerCustomEditor(String.class, "set", new StringTrimmerEditor(false));
|
accessor.registerCustomEditor(String.class, "set", new StringTrimmerEditor(false));
|
||||||
|
|
@ -1213,7 +1143,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setMapProperty() {
|
void setMapProperty() {
|
||||||
IndexedTestBean target = new IndexedTestBean();
|
IndexedTestBean target = new IndexedTestBean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
Map<String, String> map = new HashMap<>();
|
Map<String, String> map = new HashMap<>();
|
||||||
|
|
@ -1227,7 +1157,8 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setMapPropertyNonMatchingType() {
|
@SuppressWarnings("unchecked")
|
||||||
|
void setMapPropertyNonMatchingType() {
|
||||||
IndexedTestBean target = new IndexedTestBean();
|
IndexedTestBean target = new IndexedTestBean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
Map<String, String> map = new TreeMap<>();
|
Map<String, String> map = new TreeMap<>();
|
||||||
|
|
@ -1243,7 +1174,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setMapPropertyWithTypeConversion() {
|
void setMapPropertyWithTypeConversion() {
|
||||||
IndexedTestBean target = new IndexedTestBean();
|
IndexedTestBean target = new IndexedTestBean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
accessor.registerCustomEditor(TestBean.class, new PropertyEditorSupport() {
|
accessor.registerCustomEditor(TestBean.class, new PropertyEditorSupport() {
|
||||||
|
|
@ -1272,7 +1203,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setMapPropertyWithUnmodifiableMap() {
|
void setMapPropertyWithUnmodifiableMap() {
|
||||||
IndexedTestBean target = new IndexedTestBean();
|
IndexedTestBean target = new IndexedTestBean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
accessor.registerCustomEditor(TestBean.class, "map", new PropertyEditorSupport() {
|
accessor.registerCustomEditor(TestBean.class, "map", new PropertyEditorSupport() {
|
||||||
|
|
@ -1296,7 +1227,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setMapPropertyWithCustomUnmodifiableMap() {
|
void setMapPropertyWithCustomUnmodifiableMap() {
|
||||||
IndexedTestBean target = new IndexedTestBean();
|
IndexedTestBean target = new IndexedTestBean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
accessor.registerCustomEditor(TestBean.class, "map", new PropertyEditorSupport() {
|
accessor.registerCustomEditor(TestBean.class, "map", new PropertyEditorSupport() {
|
||||||
|
|
@ -1319,9 +1250,9 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
assertThat(((TestBean) target.getMap().get(2)).getName()).isEqualTo("rob");
|
assertThat(((TestBean) target.getMap().get(2)).getName()).isEqualTo("rob");
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings({ "unchecked", "rawtypes" }) // must work with raw map in this test
|
|
||||||
@Test
|
@Test
|
||||||
public void setRawMapPropertyWithNoEditorRegistered() {
|
@SuppressWarnings({ "unchecked", "rawtypes" }) // must work with raw map in this test
|
||||||
|
void setRawMapPropertyWithNoEditorRegistered() {
|
||||||
IndexedTestBean target = new IndexedTestBean();
|
IndexedTestBean target = new IndexedTestBean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
Map inputMap = new HashMap();
|
Map inputMap = new HashMap();
|
||||||
|
|
@ -1336,7 +1267,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setUnknownProperty() {
|
void setUnknownProperty() {
|
||||||
Simple target = new Simple("John", 2);
|
Simple target = new Simple("John", 2);
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
assertThatExceptionOfType(NotWritablePropertyException.class).isThrownBy(() ->
|
assertThatExceptionOfType(NotWritablePropertyException.class).isThrownBy(() ->
|
||||||
|
|
@ -1349,7 +1280,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setUnknownPropertyWithPossibleMatches() {
|
void setUnknownPropertyWithPossibleMatches() {
|
||||||
Simple target = new Simple("John", 2);
|
Simple target = new Simple("John", 2);
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
assertThatExceptionOfType(NotWritablePropertyException.class).isThrownBy(() ->
|
assertThatExceptionOfType(NotWritablePropertyException.class).isThrownBy(() ->
|
||||||
|
|
@ -1361,7 +1292,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setUnknownOptionalProperty() {
|
void setUnknownOptionalProperty() {
|
||||||
Simple target = new Simple("John", 2);
|
Simple target = new Simple("John", 2);
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
PropertyValue value = new PropertyValue("foo", "value");
|
PropertyValue value = new PropertyValue("foo", "value");
|
||||||
|
|
@ -1370,7 +1301,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setPropertyInProtectedBaseBean() {
|
void setPropertyInProtectedBaseBean() {
|
||||||
DerivedFromProtectedBaseBean target = new DerivedFromProtectedBaseBean();
|
DerivedFromProtectedBaseBean target = new DerivedFromProtectedBaseBean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
accessor.setPropertyValue("someProperty", "someValue");
|
accessor.setPropertyValue("someProperty", "someValue");
|
||||||
|
|
@ -1379,7 +1310,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setPropertyTypeMismatch() {
|
void setPropertyTypeMismatch() {
|
||||||
TestBean target = new TestBean();
|
TestBean target = new TestBean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
assertThatExceptionOfType(TypeMismatchException.class).isThrownBy(() ->
|
assertThatExceptionOfType(TypeMismatchException.class).isThrownBy(() ->
|
||||||
|
|
@ -1387,7 +1318,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setEmptyValueForPrimitiveProperty() {
|
void setEmptyValueForPrimitiveProperty() {
|
||||||
TestBean target = new TestBean();
|
TestBean target = new TestBean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
assertThatExceptionOfType(TypeMismatchException.class).isThrownBy(() ->
|
assertThatExceptionOfType(TypeMismatchException.class).isThrownBy(() ->
|
||||||
|
|
@ -1395,7 +1326,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setUnknownNestedProperty() {
|
void setUnknownNestedProperty() {
|
||||||
Person target = createPerson("John", "Paris", "FR");
|
Person target = createPerson("John", "Paris", "FR");
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
|
|
||||||
|
|
@ -1404,7 +1335,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setPropertyValuesIgnoresInvalidNestedOnRequest() {
|
void setPropertyValuesIgnoresInvalidNestedOnRequest() {
|
||||||
ITestBean target = new TestBean();
|
ITestBean target = new TestBean();
|
||||||
MutablePropertyValues pvs = new MutablePropertyValues();
|
MutablePropertyValues pvs = new MutablePropertyValues();
|
||||||
pvs.addPropertyValue(new PropertyValue("name", "rod"));
|
pvs.addPropertyValue(new PropertyValue("name", "rod"));
|
||||||
|
|
@ -1418,7 +1349,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getAndSetIndexedProperties() {
|
void getAndSetIndexedProperties() {
|
||||||
IndexedTestBean target = new IndexedTestBean();
|
IndexedTestBean target = new IndexedTestBean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
TestBean tb0 = target.getArray()[0];
|
TestBean tb0 = target.getArray()[0];
|
||||||
|
|
@ -1488,7 +1419,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getAndSetIndexedPropertiesWithDirectAccess() {
|
void getAndSetIndexedPropertiesWithDirectAccess() {
|
||||||
IndexedTestBean target = new IndexedTestBean();
|
IndexedTestBean target = new IndexedTestBean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
TestBean tb0 = target.getArray()[0];
|
TestBean tb0 = target.getArray()[0];
|
||||||
|
|
@ -1547,7 +1478,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void propertyType() {
|
void propertyType() {
|
||||||
Person target = createPerson("John", "Paris", "FR");
|
Person target = createPerson("John", "Paris", "FR");
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
|
|
||||||
|
|
@ -1555,7 +1486,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void propertyTypeUnknownProperty() {
|
void propertyTypeUnknownProperty() {
|
||||||
Simple target = new Simple("John", 2);
|
Simple target = new Simple("John", 2);
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
|
|
||||||
|
|
@ -1563,7 +1494,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void propertyTypeDescriptor() {
|
void propertyTypeDescriptor() {
|
||||||
Person target = createPerson("John", "Paris", "FR");
|
Person target = createPerson("John", "Paris", "FR");
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
|
|
||||||
|
|
@ -1571,7 +1502,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void propertyTypeDescriptorUnknownProperty() {
|
void propertyTypeDescriptorUnknownProperty() {
|
||||||
Simple target = new Simple("John", 2);
|
Simple target = new Simple("John", 2);
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
|
|
||||||
|
|
@ -1579,7 +1510,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void propertyTypeIndexedProperty() {
|
void propertyTypeIndexedProperty() {
|
||||||
IndexedTestBean target = new IndexedTestBean();
|
IndexedTestBean target = new IndexedTestBean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
assertThat(accessor.getPropertyType("map[key0]")).isNull();
|
assertThat(accessor.getPropertyType("map[key0]")).isNull();
|
||||||
|
|
@ -1594,7 +1525,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void cornerSpr10115() {
|
void cornerSpr10115() {
|
||||||
Spr10115Bean target = new Spr10115Bean();
|
Spr10115Bean target = new Spr10115Bean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
accessor.setPropertyValue("prop1", "val1");
|
accessor.setPropertyValue("prop1", "val1");
|
||||||
|
|
@ -1602,7 +1533,7 @@ public abstract class AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void cornerSpr13837() {
|
void cornerSpr13837() {
|
||||||
Spr13837Bean target = new Spr13837Bean();
|
Spr13837Bean target = new Spr13837Bean();
|
||||||
AbstractPropertyAccessor accessor = createAccessor(target);
|
AbstractPropertyAccessor accessor = createAccessor(target);
|
||||||
accessor.setPropertyValue("something", 42);
|
accessor.setPropertyValue("something", 42);
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2019 the original author or authors.
|
* Copyright 2002-2021 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -26,6 +26,7 @@ import org.springframework.beans.testfixture.beans.TestBean;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
|
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
|
||||||
|
import static org.assertj.core.api.Assertions.assertThatNoException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Specific {@link BeanWrapperImpl} tests.
|
* Specific {@link BeanWrapperImpl} tests.
|
||||||
|
|
@ -37,7 +38,7 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
|
||||||
* @author Chris Beams
|
* @author Chris Beams
|
||||||
* @author Dave Syer
|
* @author Dave Syer
|
||||||
*/
|
*/
|
||||||
public class BeanWrapperTests extends AbstractPropertyAccessorTests {
|
class BeanWrapperTests extends AbstractPropertyAccessorTests {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected BeanWrapperImpl createAccessor(Object target) {
|
protected BeanWrapperImpl createAccessor(Object target) {
|
||||||
|
|
@ -46,7 +47,7 @@ public class BeanWrapperTests extends AbstractPropertyAccessorTests {
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setterDoesNotCallGetter() {
|
void setterDoesNotCallGetter() {
|
||||||
GetterBean target = new GetterBean();
|
GetterBean target = new GetterBean();
|
||||||
BeanWrapper accessor = createAccessor(target);
|
BeanWrapper accessor = createAccessor(target);
|
||||||
accessor.setPropertyValue("name", "tom");
|
accessor.setPropertyValue("name", "tom");
|
||||||
|
|
@ -55,7 +56,7 @@ public class BeanWrapperTests extends AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getterSilentlyFailWithOldValueExtraction() {
|
void getterSilentlyFailWithOldValueExtraction() {
|
||||||
GetterBean target = new GetterBean();
|
GetterBean target = new GetterBean();
|
||||||
BeanWrapper accessor = createAccessor(target);
|
BeanWrapper accessor = createAccessor(target);
|
||||||
accessor.setExtractOldValueForEditor(true); // This will call the getter
|
accessor.setExtractOldValueForEditor(true); // This will call the getter
|
||||||
|
|
@ -65,7 +66,7 @@ public class BeanWrapperTests extends AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void aliasedSetterThroughDefaultMethod() {
|
void aliasedSetterThroughDefaultMethod() {
|
||||||
GetterBean target = new GetterBean();
|
GetterBean target = new GetterBean();
|
||||||
BeanWrapper accessor = createAccessor(target);
|
BeanWrapper accessor = createAccessor(target);
|
||||||
accessor.setPropertyValue("aliasedName", "tom");
|
accessor.setPropertyValue("aliasedName", "tom");
|
||||||
|
|
@ -74,7 +75,7 @@ public class BeanWrapperTests extends AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setValidAndInvalidPropertyValuesShouldContainExceptionDetails() {
|
void setValidAndInvalidPropertyValuesShouldContainExceptionDetails() {
|
||||||
TestBean target = new TestBean();
|
TestBean target = new TestBean();
|
||||||
String newName = "tony";
|
String newName = "tony";
|
||||||
String invalidTouchy = ".valid";
|
String invalidTouchy = ".valid";
|
||||||
|
|
@ -91,12 +92,12 @@ public class BeanWrapperTests extends AbstractPropertyAccessorTests {
|
||||||
.getNewValue()).isEqualTo(invalidTouchy);
|
.getNewValue()).isEqualTo(invalidTouchy);
|
||||||
});
|
});
|
||||||
// Test validly set property matches
|
// Test validly set property matches
|
||||||
assertThat(target.getName().equals(newName)).as("Valid set property must stick").isTrue();
|
assertThat(target.getName()).as("Valid set property must stick").isEqualTo(newName);
|
||||||
assertThat(target.getAge() == 0).as("Invalid set property must retain old value").isTrue();
|
assertThat(target.getAge()).as("Invalid set property must retain old value").isEqualTo(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void checkNotWritablePropertyHoldPossibleMatches() {
|
void checkNotWritablePropertyHoldPossibleMatches() {
|
||||||
TestBean target = new TestBean();
|
TestBean target = new TestBean();
|
||||||
BeanWrapper accessor = createAccessor(target);
|
BeanWrapper accessor = createAccessor(target);
|
||||||
assertThatExceptionOfType(NotWritablePropertyException.class).isThrownBy(() ->
|
assertThatExceptionOfType(NotWritablePropertyException.class).isThrownBy(() ->
|
||||||
|
|
@ -105,15 +106,15 @@ public class BeanWrapperTests extends AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // Can't be shared; there is no such thing as a read-only field
|
@Test // Can't be shared; there is no such thing as a read-only field
|
||||||
public void setReadOnlyMapProperty() {
|
void setReadOnlyMapProperty() {
|
||||||
TypedReadOnlyMap map = new TypedReadOnlyMap(Collections.singletonMap("key", new TestBean()));
|
TypedReadOnlyMap map = new TypedReadOnlyMap(Collections.singletonMap("key", new TestBean()));
|
||||||
TypedReadOnlyMapClient target = new TypedReadOnlyMapClient();
|
TypedReadOnlyMapClient target = new TypedReadOnlyMapClient();
|
||||||
BeanWrapper accessor = createAccessor(target);
|
BeanWrapper accessor = createAccessor(target);
|
||||||
accessor.setPropertyValue("map", map);
|
assertThatNoException().isThrownBy(() -> accessor.setPropertyValue("map", map));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void notWritablePropertyExceptionContainsAlternativeMatch() {
|
void notWritablePropertyExceptionContainsAlternativeMatch() {
|
||||||
IntelliBean target = new IntelliBean();
|
IntelliBean target = new IntelliBean();
|
||||||
BeanWrapper bw = createAccessor(target);
|
BeanWrapper bw = createAccessor(target);
|
||||||
try {
|
try {
|
||||||
|
|
@ -121,12 +122,12 @@ public class BeanWrapperTests extends AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
catch (NotWritablePropertyException ex) {
|
catch (NotWritablePropertyException ex) {
|
||||||
assertThat(ex.getPossibleMatches()).as("Possible matches not determined").isNotNull();
|
assertThat(ex.getPossibleMatches()).as("Possible matches not determined").isNotNull();
|
||||||
assertThat(ex.getPossibleMatches().length).as("Invalid amount of alternatives").isEqualTo(1);
|
assertThat(ex.getPossibleMatches()).as("Invalid amount of alternatives").hasSize(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void notWritablePropertyExceptionContainsAlternativeMatches() {
|
void notWritablePropertyExceptionContainsAlternativeMatches() {
|
||||||
IntelliBean target = new IntelliBean();
|
IntelliBean target = new IntelliBean();
|
||||||
BeanWrapper bw = createAccessor(target);
|
BeanWrapper bw = createAccessor(target);
|
||||||
try {
|
try {
|
||||||
|
|
@ -134,23 +135,23 @@ public class BeanWrapperTests extends AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
catch (NotWritablePropertyException ex) {
|
catch (NotWritablePropertyException ex) {
|
||||||
assertThat(ex.getPossibleMatches()).as("Possible matches not determined").isNotNull();
|
assertThat(ex.getPossibleMatches()).as("Possible matches not determined").isNotNull();
|
||||||
assertThat(ex.getPossibleMatches().length).as("Invalid amount of alternatives").isEqualTo(3);
|
assertThat(ex.getPossibleMatches()).as("Invalid amount of alternatives").hasSize(3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Test // Can't be shared: no type mismatch with a field
|
@Test // Can't be shared: no type mismatch with a field
|
||||||
public void setPropertyTypeMismatch() {
|
void setPropertyTypeMismatch() {
|
||||||
PropertyTypeMismatch target = new PropertyTypeMismatch();
|
PropertyTypeMismatch target = new PropertyTypeMismatch();
|
||||||
BeanWrapper accessor = createAccessor(target);
|
BeanWrapper accessor = createAccessor(target);
|
||||||
accessor.setPropertyValue("object", "a String");
|
accessor.setPropertyValue("object", "a String");
|
||||||
assertThat(target.value).isEqualTo("a String");
|
assertThat(target.value).isEqualTo("a String");
|
||||||
assertThat(target.getObject() == 8).isTrue();
|
assertThat(target.getObject()).isEqualTo(8);
|
||||||
assertThat(accessor.getPropertyValue("object")).isEqualTo(8);
|
assertThat(accessor.getPropertyValue("object")).isEqualTo(8);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void propertyDescriptors() {
|
void propertyDescriptors() {
|
||||||
TestBean target = new TestBean();
|
TestBean target = new TestBean();
|
||||||
target.setSpouse(new TestBean());
|
target.setSpouse(new TestBean());
|
||||||
BeanWrapper accessor = createAccessor(target);
|
BeanWrapper accessor = createAccessor(target);
|
||||||
|
|
@ -166,7 +167,7 @@ public class BeanWrapperTests extends AbstractPropertyAccessorTests {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public void getPropertyWithOptional() {
|
void getPropertyWithOptional() {
|
||||||
GetterWithOptional target = new GetterWithOptional();
|
GetterWithOptional target = new GetterWithOptional();
|
||||||
TestBean tb = new TestBean("x");
|
TestBean tb = new TestBean("x");
|
||||||
BeanWrapper accessor = createAccessor(target);
|
BeanWrapper accessor = createAccessor(target);
|
||||||
|
|
@ -189,7 +190,7 @@ public class BeanWrapperTests extends AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getPropertyWithOptionalAndAutoGrow() {
|
void getPropertyWithOptionalAndAutoGrow() {
|
||||||
GetterWithOptional target = new GetterWithOptional();
|
GetterWithOptional target = new GetterWithOptional();
|
||||||
BeanWrapper accessor = createAccessor(target);
|
BeanWrapper accessor = createAccessor(target);
|
||||||
accessor.setAutoGrowNestedPaths(true);
|
accessor.setAutoGrowNestedPaths(true);
|
||||||
|
|
@ -201,7 +202,7 @@ public class BeanWrapperTests extends AbstractPropertyAccessorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void incompletelyQuotedKeyLeadsToPropertyException() {
|
void incompletelyQuotedKeyLeadsToPropertyException() {
|
||||||
TestBean target = new TestBean();
|
TestBean target = new TestBean();
|
||||||
BeanWrapper accessor = createAccessor(target);
|
BeanWrapper accessor = createAccessor(target);
|
||||||
assertThatExceptionOfType(NotWritablePropertyException.class).isThrownBy(() ->
|
assertThatExceptionOfType(NotWritablePropertyException.class).isThrownBy(() ->
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2019 the original author or authors.
|
* Copyright 2002-2021 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -29,7 +29,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||||
* @author Chris Beams
|
* @author Chris Beams
|
||||||
* @author Stephane Nicoll
|
* @author Stephane Nicoll
|
||||||
*/
|
*/
|
||||||
public class DirectFieldAccessorTests extends AbstractPropertyAccessorTests {
|
class DirectFieldAccessorTests extends AbstractPropertyAccessorTests {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected DirectFieldAccessor createAccessor(Object target) {
|
protected DirectFieldAccessor createAccessor(Object target) {
|
||||||
|
|
@ -38,7 +38,7 @@ public class DirectFieldAccessorTests extends AbstractPropertyAccessorTests {
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void withShadowedField() {
|
void withShadowedField() {
|
||||||
final StringBuilder sb = new StringBuilder();
|
final StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
TestBean target = new TestBean() {
|
TestBean target = new TestBean() {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue