package fr.lteconsulting.hexa.databinding.test; import java.util.ArrayList; import java.util.Date; import java.util.List; import junit.framework.TestCase; import fr.lteconsulting.hexa.databinding.Binder; import fr.lteconsulting.hexa.databinding.properties.Properties; import fr.lteconsulting.hexa.databinding.test.dto.ObservableWorkplace; import fr.lteconsulting.hexa.databinding.test.dto.Person; public class PathBindingTest extends TestCase { public void test() { List<ObservableWorkplace> places = new ArrayList<>(); for( int i = 0; i < 10; i++ ) places.add( workplace() ); List<Person> persons = new ArrayList<>(); for( int i = 0; i < 100; i++ ) persons.add( person( places ) ); for( ObservableWorkplace w : places ) w.setOwner( persons.get( (int) (Math.random() * persons.size()) ) ); Person personCopy = new Person(); Properties.setValue( persons, "selected", persons.get( 0 ) ); Binder.bind( persons, "selected" ).mapTo( personCopy ); for( int i=0; i<persons.size(); i++) { Properties.setValue( persons, "selected", persons.get( i ) ); assertEquals( persons.get( i ), personCopy ); } } private ObservableWorkplace workplace() { ObservableWorkplace r = new ObservableWorkplace(); r.setName( TestUtils.randomName() ); r.setColor( TestUtils.randomColor() ); return r; } private Person person( List<ObservableWorkplace> places ) { Person p = new Person(); p.setName( TestUtils.randomName() ); p.setBirthDate( new Date( (long) (new Date().getTime() * Math.random()) ) ); p.setWorkplace( places.get( (int) (Math.random() * places.size()) ) ); return p; } }