@Test public void createIf() throws Exception { Expression<Boolean> condition = f.createCarriesItem(f.createThis(null), null); Statement ifBody = f.createWork(new LiteralPosition(1, 0, 0), null); Statement elseBody = f.createMoveTo(new LiteralPosition(0, 1, 0), null); Statement stmt = f.createIf(condition, ifBody, elseBody, null); new Boulder(w, u); runStatementFor(u, stmt, 1 + 500 / u.getStrength()); // Check whether ifBody is executed: assertEquals(new Vector(0, 0, 0), u.getPosition().getCubeCoordinates()); assertFalse(u.isCarryingBoulder()); // Check whether task successfully finished assertEquals(null, u.getTask()); assertEquals(0, u.getFaction().getScheduler().getNbTasks()); u.stopDefaultBehaviour(); runStatementFor(u, stmt, 2); // Check whether elseBody is executed: assertEquals(new Vector(0, 1, 0), u.getPosition().getCubeCoordinates()); assertFalse(u.isCarryingBoulder()); // Check whether task successfully finished assertEquals(null, u.getTask()); assertEquals(0, u.getFaction().getScheduler().getNbTasks()); }
@Test public void createIsPassable() throws Exception { Expression<Boolean> condition = f.createIsPassable(new LiteralPosition(1, 0, 0), null); Statement ifBody = new MoveTo(new LiteralPosition(1, 0, 0)); Statement stmt = f.createIf(condition, ifBody, null, null); runStatementFor(u, stmt, 2); // Check whether task successfully finished assertEquals(null, u.getTask()); assertEquals(0, u.getFaction().getScheduler().getNbTasks()); assertEquals(new Vector(1, 0, 0), u.getPosition().getCubeCoordinates()); }
@Test public void createBreak() throws Exception { Expression<Boolean> condition = f.createTrue(null); Statement body = f.createIf(new CarriesItem(new This()), f.createBreak(null), null, null); Statement stmt = f.createWhile(condition, body, null); runStatementFor(u, stmt, 0.2); // Task is still running: assertTrue(u.getTask() != null); assertEquals(1, u.getFaction().getScheduler().getNbTasks()); new Boulder(w, u); advanceTimeFor(w, 0.2); // Check whether task successfully finished assertEquals(null, u.getTask()); assertEquals(0, u.getFaction().getScheduler().getNbTasks()); }