package org.nuunframework.ensemble.api; import static org.fest.assertions.Assertions.assertThat; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import org.junit.Test; import org.nuunframework.ensemble.Ensemble; import org.nuunframework.ensemble.util.Types; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class SoloistTest { Logger logger = LoggerFactory.getLogger(SoloistTest.class); @Test public void internal_stack_should_be_filled () throws IllegalArgumentException, IllegalAccessException, InvocationTargetException { Swap1 swap1 = new Swap1(); Method methodForConfigure = Types.methodFor(Ensemble.class, "play"); methodForConfigure.setAccessible(true); methodForConfigure.invoke(swap1); logger.info("" + swap1.getRecording() ); assertThat(swap1.getRecording()).hasSize(7); } static abstract class Swap<R> extends Soloist<R> { protected R swaper() { return actor1(); } } static class Swap1 extends Swap<Swappable> { @Override protected void play() { swaper().setTmp(actor1().getA()); swaper().setA(actor1().getB()); swaper().setB(actor1().getTmp()); swaper().setTmp(null); } } // static class Swap2 extends Swap // { // @Override // protected void play() // { // actor1().setTmp(actor1().getA()); // actor1().setA(actor1().getB()); // actor1().setB(actor1().getTmp()); // actor1().setTmp(null); // } // } static class Swappable { protected String a; protected String b; protected String tmp; public String getA() { return a; } public void setA(String a) { this.a = a; } public String getB() { return b; } public void setB(String b) { this.b = b; } public String getTmp() { return tmp; } public void setTmp(String tmp) { this.tmp = tmp; } } // static class SuperSwappable extends Swappable // { // private String tmp2; // // public String getTmp2() // { // return tmp2; // } // // public void setTmp2(String tmp2) // { // this.tmp2 = tmp2; // } // // } }