@ -16,7 +16,9 @@
@@ -16,7 +16,9 @@
package org.springframework.beans ;
import java.util.HashMap ;
import java.util.Iterator ;
import java.util.Map ;
import org.junit.jupiter.api.Test ;
@ -30,10 +32,10 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
@@ -30,10 +32,10 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
* @author Chris Beams
* @author Juergen Hoeller
* /
public class MutablePropertyValuesTests extends Abstract PropertyValuesTests {
class MutablePropertyValuesTests {
@Test
public void testV alid( ) {
void v alid( ) {
MutablePropertyValues pvs = new MutablePropertyValues ( ) ;
pvs . addPropertyValue ( new PropertyValue ( "forname" , "Tony" ) ) ;
pvs . addPropertyValue ( new PropertyValue ( "surname" , "Blair" ) ) ;
@ -48,7 +50,7 @@ public class MutablePropertyValuesTests extends AbstractPropertyValuesTests {
@@ -48,7 +50,7 @@ public class MutablePropertyValuesTests extends AbstractPropertyValuesTests {
}
@Test
public void testA ddOrOverride( ) {
void a ddOrOverride( ) {
MutablePropertyValues pvs = new MutablePropertyValues ( ) ;
pvs . addPropertyValue ( new PropertyValue ( "forname" , "Tony" ) ) ;
pvs . addPropertyValue ( new PropertyValue ( "surname" , "Blair" ) ) ;
@ -56,25 +58,25 @@ public class MutablePropertyValuesTests extends AbstractPropertyValuesTests {
@@ -56,25 +58,25 @@ public class MutablePropertyValuesTests extends AbstractPropertyValuesTests {
doTestTony ( pvs ) ;
PropertyValue addedPv = new PropertyValue ( "rod" , "Rod" ) ;
pvs . addPropertyValue ( addedPv ) ;
assertThat ( pvs . getPropertyValue ( "rod" ) . equals ( addedPv ) ) . isTrue ( ) ;
assertThat ( pvs . getPropertyValue ( "rod" ) ) . isEqualTo ( addedPv ) ;
PropertyValue changedPv = new PropertyValue ( "forname" , "Greg" ) ;
pvs . addPropertyValue ( changedPv ) ;
assertThat ( pvs . getPropertyValue ( "forname" ) . equals ( changedPv ) ) . isTrue ( ) ;
assertThat ( pvs . getPropertyValue ( "forname" ) ) . isEqualTo ( changedPv ) ;
}
@Test
public void testC hangesOnEquals( ) {
void c hangesOnEquals( ) {
MutablePropertyValues pvs = new MutablePropertyValues ( ) ;
pvs . addPropertyValue ( new PropertyValue ( "forname" , "Tony" ) ) ;
pvs . addPropertyValue ( new PropertyValue ( "surname" , "Blair" ) ) ;
pvs . addPropertyValue ( new PropertyValue ( "age" , "50" ) ) ;
MutablePropertyValues pvs2 = pvs ;
PropertyValues changes = pvs2 . changesSince ( pvs ) ;
assertThat ( changes . getPropertyValues ( ) . length ) . as ( "changes are empty" ) . isEqualTo ( 0 ) ;
assertThat ( changes . getPropertyValues ( ) ) . as ( "changes are empty" ) . isEmpty ( ) ;
}
@Test
public void testC hangeOfOneField( ) {
void c hangeOfOneField( ) {
MutablePropertyValues pvs = new MutablePropertyValues ( ) ;
pvs . addPropertyValue ( new PropertyValue ( "forname" , "Tony" ) ) ;
pvs . addPropertyValue ( new PropertyValue ( "surname" , "Blair" ) ) ;
@ -82,33 +84,31 @@ public class MutablePropertyValuesTests extends AbstractPropertyValuesTests {
@@ -82,33 +84,31 @@ public class MutablePropertyValuesTests extends AbstractPropertyValuesTests {
MutablePropertyValues pvs2 = new MutablePropertyValues ( pvs ) ;
PropertyValues changes = pvs2 . changesSince ( pvs ) ;
assertThat ( changes . getPropertyValues ( ) . length ) . as ( "changes are empty, not of length " + changes . getPropertyValues ( ) . length )
. isEqualTo ( 0 ) ;
assertThat ( changes . getPropertyValues ( ) ) . as ( "changes" ) . isEmpty ( ) ;
pvs2 . addPropertyValue ( new PropertyValue ( "forname" , "Gordon" ) ) ;
changes = pvs2 . changesSince ( pvs ) ;
assertThat ( changes . getPropertyValues ( ) . length ) . as ( "1 change" ) . isEqualTo ( 1 ) ;
assertThat ( changes . getPropertyValues ( ) ) . as ( "1 change" ) . hasSize ( 1 ) ;
PropertyValue fn = changes . getPropertyValue ( "forname" ) ;
assertThat ( fn ) . as ( "change is forname" ) . isNotNull ( ) ;
assertThat ( fn . getValue ( ) . equals ( "Gordon" ) ) . as ( "new value is gordon" ) . isTrue ( ) ;
assertThat ( fn . getValue ( ) ) . isEqualTo ( "Gordon" ) ;
MutablePropertyValues pvs3 = new MutablePropertyValues ( pvs ) ;
changes = pvs3 . changesSince ( pvs ) ;
assertThat ( changes . getPropertyValues ( ) . length ) . as ( "changes are empty, not of length " + changes . getPropertyValues ( ) . length )
. isEqualTo ( 0 ) ;
assertThat ( changes . getPropertyValues ( ) ) . as ( "changes" ) . isEmpty ( ) ;
// add new
pvs3 . addPropertyValue ( new PropertyValue ( "foo" , "bar" ) ) ;
pvs3 . addPropertyValue ( new PropertyValue ( "fi" , "fum" ) ) ;
changes = pvs3 . changesSince ( pvs ) ;
assertThat ( changes . getPropertyValues ( ) . length ) . as ( "2 change" ) . isEqualTo ( 2 ) ;
assertThat ( changes . getPropertyValues ( ) ) . as ( "2 changes " ) . hasSize ( 2 ) ;
fn = changes . getPropertyValue ( "foo" ) ;
assertThat ( fn ) . as ( "change in foo" ) . isNotNull ( ) ;
assertThat ( fn . getValue ( ) . equals ( "bar" ) ) . as ( "new value is bar" ) . isTrue ( ) ;
assertThat ( fn . getValue ( ) ) . isEqualTo ( "bar" ) ;
}
@Test
public void iteratorContainsPropertyValue ( ) {
void iteratorContainsPropertyValue ( ) {
MutablePropertyValues pvs = new MutablePropertyValues ( ) ;
pvs . add ( "foo" , "bar" ) ;
@ -122,28 +122,55 @@ public class MutablePropertyValuesTests extends AbstractPropertyValuesTests {
@@ -122,28 +122,55 @@ public class MutablePropertyValuesTests extends AbstractPropertyValuesTests {
}
@Test
public void iteratorIsEmptyForEmptyValues ( ) {
void iteratorIsEmptyForEmptyValues ( ) {
MutablePropertyValues pvs = new MutablePropertyValues ( ) ;
Iterator < PropertyValue > it = pvs . iterator ( ) ;
assertThat ( it . hasNext ( ) ) . isFalse ( ) ;
}
@Test
public void streamContainsPropertyValue ( ) {
void streamContainsPropertyValue ( ) {
MutablePropertyValues pvs = new MutablePropertyValues ( ) ;
pvs . add ( "foo" , "bar" ) ;
assertThat ( pvs . stream ( ) ) . isNotNull ( ) ;
assertThat ( pvs . stream ( ) . count ( ) ) . isEqualTo ( 1L ) ;
assertThat ( pvs . stream ( ) . anyMatch ( pv - > "foo" . equals ( pv . getName ( ) ) & & "bar" . equals ( pv . getValue ( ) ) ) ) . isTrue ( ) ;
assertThat ( pvs . stream ( ) . any Match( pv - > "bar" . equals ( pv . getName ( ) ) & & "foo" . equals ( pv . getValue ( ) ) ) ) . isFalse ( ) ;
assertThat ( pvs . stream ( ) ) . hasSize ( 1 ) ;
assertThat ( pvs . stream ( ) ) . anyMatch ( pv - > "foo" . equals ( pv . getName ( ) ) & & "bar" . equals ( pv . getValue ( ) ) ) ;
assertThat ( pvs . stream ( ) ) . none Match( pv - > "bar" . equals ( pv . getName ( ) ) & & "foo" . equals ( pv . getValue ( ) ) ) ;
}
@Test
public void streamIsEmptyForEmptyValues ( ) {
void streamIsEmptyForEmptyValues ( ) {
MutablePropertyValues pvs = new MutablePropertyValues ( ) ;
assertThat ( pvs . stream ( ) ) . isNotNull ( ) ;
assertThat ( pvs . stream ( ) . count ( ) ) . isEqualTo ( 0L ) ;
assertThat ( pvs . stream ( ) ) . isEmpty ( ) ;
}
/ * *
* Must contain : forname = Tony surname = Blair age = 50
* /
protected void doTestTony ( PropertyValues pvs ) {
PropertyValue [ ] propertyValues = pvs . getPropertyValues ( ) ;
assertThat ( propertyValues ) . hasSize ( 3 ) ;
assertThat ( pvs . contains ( "forname" ) ) . as ( "Contains forname" ) . isTrue ( ) ;
assertThat ( pvs . contains ( "surname" ) ) . as ( "Contains surname" ) . isTrue ( ) ;
assertThat ( pvs . contains ( "age" ) ) . as ( "Contains age" ) . isTrue ( ) ;
assertThat ( pvs . contains ( "tory" ) ) . as ( "Doesn't contain tory" ) . isFalse ( ) ;
Map < String , String > map = new HashMap < > ( ) ;
map . put ( "forname" , "Tony" ) ;
map . put ( "surname" , "Blair" ) ;
map . put ( "age" , "50" ) ;
for ( PropertyValue element : propertyValues ) {
Object val = map . get ( element . getName ( ) ) ;
assertThat ( val ) . as ( "Can't have unexpected value" ) . isNotNull ( ) ;
assertThat ( val ) . isInstanceOf ( String . class ) ;
assertThat ( val ) . isEqualTo ( element . getValue ( ) ) ;
map . remove ( element . getName ( ) ) ;
}
assertThat ( map ) . isEmpty ( ) ;
}
}