package com.framsticks.gui; import static org.fest.assertions.Assertions.assertThat; import org.fest.swing.fixture.JPanelFixture; import org.testng.annotations.Test; import com.framsticks.params.Access; import com.framsticks.params.EventListener; import com.framsticks.params.ReflectionAccess; import com.framsticks.params.types.EventParam; import com.framsticks.params.types.StringParam; import com.framsticks.parsers.XmlLoader; import com.framsticks.structure.LocalTree; import com.framsticks.structure.Path; import com.framsticks.structure.Tree; import com.framsticks.structure.messages.ValueChange; import com.framsticks.test.TestClass; import com.framsticks.util.dispatching.Future; // import com.framsticks.util.dispatching.Dispatching; import com.framsticks.util.dispatching.RunAt; import static com.framsticks.params.ParamsUtil.getParam; import static com.framsticks.structure.TreeOperations.*; @Test public class ProcedureBrowserTest extends BrowserBaseTest { LocalTree tree; @Override protected void configureBrowser() { browser = new XmlLoader().load(Browser.class, getClass().getResourceAsStream("/configs/ProcedureBrowserTest.xml")); assertThat(browser.getTrees().size()).isEqualTo(1); assertThat(browser.getTrees().get("test")).isInstanceOf(LocalTree.class); tree = (LocalTree) browser.getTrees().get("test"); } @Test(timeOut = 10000) public void testShow() { tree.dispatch(new RunAt(failOnException) { @Override protected void runAt() { assertThat(tree.getRootObject()).isInstanceOf(TestClass.class); } }); clickAndExpandPath("test"); tree.dispatch(new RunAt(failOnException) { @Override protected void runAt() { assertThat(getParam(bindAccess(tree, "/"), "history")).isInstanceOf(StringParam.class); } }); // monitor.useFor(4.0); tree.dispatch(new RunAt(failOnException) { @Override protected void runAt() { Access access = bindAccess(tree, "/"); assertThat(access).isInstanceOf(ReflectionAccess.class); assertThat(getParam(access, 0).getId()).isEqualTo("name"); assertThat(getParam(access, 1).getId()).isEqualTo("history"); assertThat(getParam(access, 2).getId()).isEqualTo("history_changed"); assertThat(getParam(access, 3).getId()).isEqualTo("appendHistory"); assertThat(getParam(access, 4).getId()).isEqualTo("resetHistory"); assertThat(access.get("history", String.class)).isEqualTo("initial|"); } }); // frame.panel("TestClass"); final JPanelFixture appendHistory = frame.panel("TestClass").panel("appendHistory"); appendHistory.panel("arg0").textBox("value").enterText("Żółw"); assertThat(appendHistory.panel("arg0").textBox("value").text()).isEqualTo("Żółw"); clickButton(appendHistory.button("call")); waitForIdle(); final EventListener listener = new EventListener() { @Override public void action(ValueChange argument) { assertThat(argument.value).isEqualTo(""); } }; tree.dispatch(new RunAt(failOnException) { @Override protected void runAt() { Access access = bindAccess(tree, "/"); assertThat(access.get("history", String.class)).isEqualTo("initial|Żółw|"); tree.addListener(Path.to(tree, "/"), getParam(access, "history_changed", EventParam.class), listener, ValueChange.class, Future.doNothing(Void.class, failOnException)); } }); clickButton(frame.panel("TestClass").panel("resetHistory").button("call")); waitForIdle(); tree.dispatch(new RunAt(failOnException) { @Override protected void runAt() { Access access = bindAccess(tree, "/"); assertThat(access.get("history", String.class)).isEqualTo(""); tree.removeListener(Path.to(tree, "/"), getParam(access, "history_changed", EventParam.class), listener, Future.doNothing(Void.class, failOnException)); } }); } }