package com.framsticks.core; import java.util.ArrayList; import org.testng.annotations.BeforeClass; // import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import com.framsticks.model.Joint; import com.framsticks.model.Model; import com.framsticks.model.ModelBuilder; import com.framsticks.model.f0.Schema; import com.framsticks.model.f0.SchemaBuilder; import com.framsticks.test.TestConfiguration; import com.framsticks.util.dispatching.Dispatching; import com.framsticks.util.dispatching.Monitor; import com.framsticks.util.dispatching.RunAt; import com.framsticks.params.AccessInterface; import com.framsticks.params.ReflectionAccess; import com.framsticks.params.types.FloatParam; import static org.fest.assertions.Assertions.*; @Test public class ObjectInstanceTest extends TestConfiguration { private Model model; private Schema schema; private ObjectInstance instance; private Monitor monitor; @BeforeClass public void setUp() { schema = new SchemaBuilder().stream(Schema.getDefaultDefinitionAsStream()).finish(); assertThat(schema.getFramsClasses().size()).isEqualTo(5); assertThat(schema.getNeuroClasses().size()).isEqualTo(21); } @Test public void loadModel() { model = new ModelBuilder().schema(schema).stream(ObjectInstanceTest.class.getResourceAsStream("/parsers/f0_example.txt")).finish(); assertThat(model.getJoints().size()).isEqualTo(2); } @Test(dependsOnMethods = "loadModel", timeOut = 2000) public void startInstance() { instance = new ObjectInstance(); instance.getRegistry().takeAllFrom(schema.getRegistry()); instance.setRootObject(model); monitor = new Monitor(instance); monitor.use(); assertThat(Dispatching.get(instance, new Dispatching.Query() { @Override public String get() { return instance.getRootObject(Model.class).getParts().get(2).info; } })).isEqualTo("bla"); assertDispatch(instance, new RunAt() { @Override public void run() { assertThat(instance.getRootObject(Model.class).getNeuroDefinitions().get(2).details).isEqualTo("G"); Path path = instance.getPath("/"); assertThat(path.isResolved()); AccessInterface access = instance.bindAccess(path); assertThat(access.get("se", Double.class)).isEqualTo(1.0); assertThat(instance.bindAccess("/parts/2").getFramsClass().getParamEntry("m", FloatParam.class).getDef(Double.class)).isEqualTo(1.0); assertThat(instance.bindAccess("/parts/2").getFramsClass().getParamEntry("m", FloatParam.class).getMax(Double.class)).isEqualTo(999.0); assertThat(instance.bindAccess("/parts/2")).isInstanceOf(ReflectionAccess.class); assertThat(instance.getPath("/neurodefs").getTopObject()).isInstanceOf(ArrayList.class); assertThat(instance.getPath("/joints/1").getTopObject()).isInstanceOf(Joint.class); assertThat(instance.bindAccess("/parts/2").get("i", String.class)).isEqualTo("bla"); } }); } @Test(dependsOnMethods = "startInstance", timeOut = 2000) public void stoptInstance() { monitor.useFor(1.0).drop().join(); } }