package trikita.anvil; import android.view.ViewGroup; import java.util.HashMap; import java.util.Map; import org.junit.Test; import static org.junit.Assert.*; import static trikita.anvil.BaseDSL.*; public class InitTest extends Utils { Map<String, Boolean> called = new HashMap<>(); @Test public void testInit() { System.out.println("============================"); Anvil.mount(container, new Anvil.Renderable() { public void view() { init(makeFunc("once")); v(MockView.class, new Anvil.Renderable() { public void view() { init(makeFunc("setUpView")); } }); } }); System.out.println("============================"); assertTrue(called.get("once")); assertTrue(called.get("setUpView")); called.clear(); Anvil.render(); assertFalse(called.containsKey("once")); assertFalse(called.containsKey("setUpView")); } // new function will be created each time, but only the first one should be called private Runnable makeFunc(final String id) { return new Runnable() { public void run() { if (called.containsKey(id)) { throw new RuntimeException("Init func called more than once!"); } called.put(id, true); } }; } }