package org.nuunframework.ensemble.engine; import static org.fest.assertions.Assertions.assertThat; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Set; import org.fest.util.Collections; import org.junit.Before; import org.junit.Test; import org.nuunframework.ensemble.Ensemble; import org.nuunframework.ensemble.Ensemble.DestinationRole; import org.nuunframework.ensemble.Ensemble.SourceRole; import org.nuunframework.ensemble.engine.Actor; import org.nuunframework.ensemble.engine.EnsemblePlayer; import org.nuunframework.ensemble.sample.Address; import org.nuunframework.ensemble.sample.Person; import org.nuunframework.ensemble.sample.PersonRepresentation; import org.nuunframework.ensemble.util.Types; public class BehaviourRunnableTest { Ensemble<Person, PersonRepresentation> map; EnsemblePlayer underTest; Person épo; PersonRepresentation personRepresentation; @Before public void init() throws IllegalArgumentException, IllegalAccessException, InvocationTargetException { // The Map map = new Ensemble<Person, PersonRepresentation>() { @Override protected void play() { // @f:off d().fillSpouseName(s().getSpouse().getFirstname() , s().getSpouse().getLastname()); d().fillFullname(s().getFirstname(), s().getLastname()); d().fillFullAddress( s().getAddress().getLine1 (), s().getAddress().getLine2 (), s().getAddress().getTown (), s().getAddress().getCountry(), //s().getAddress().getCode() "97300" ); d().fillChildrenFirstName(s().getChildren()); // @f:off } }; // initialisation Method methodForConfigure = Types.methodFor(Ensemble.class, "configure"); methodForConfigure.setAccessible(true); methodForConfigure.invoke(map); // Actors Address address = new Address("8 route de la madelein", "en face de la poste", "Cayenne", "Guyane Française", "97300"); épo = new Person("epo", "jemba", address ); Person jeanne = new Person("jeanne", "jemba", address ); Person kwané = new Person("kwané", "jemba", address ); Person térhé = new Person("térhé", "jemba", address ); épo.setSpouse(jeanne); épo.setChildren(Collections.set(kwané , térhé)); personRepresentation = new PersonRepresentation(); Set<Actor> actors = Collections.set( new Actor(new Ensemble.DestinationRole(), personRepresentation) , new Actor(new Ensemble.SourceRole(), épo)); // create the underTest underTest = new EnsemblePlayer(map.getRecording(), actors ); System.err.println(map.getRecording()); } @Test public void behaviourRunnable_should_work_normally () { underTest.run(); System.out.println(personRepresentation); assertThat(personRepresentation.getFullname()).isNotNull(); assertThat(personRepresentation.getFullname()).isEqualTo("epo jemba"); assertThat(personRepresentation.getSpousename()).isEqualTo("jeanne jemba"); assertThat(personRepresentation.getFullAddress()).isEqualTo("8 route de la madelein\n" + "en face de la poste\n" + "Cayenne\n" + "Guyane Française\n" + "97300"); } }