### Question:
HomingListener implements FlowManipulator { @Override public void run(List<ExecuteBuildingBlock> flowsToExecute, ExecuteBuildingBlock currentBB, BuildingBlockExecution execution) { boolean homing = execution.getVariable("homing"); boolean calledHoming = execution.getVariable("calledHoming"); if (homing && !calledHoming) { currentBB.setHoming(true); execution.setVariable("calledHoming", true); } }  @Override boolean shouldRunFor(String currentBBName, boolean isFirst, BuildingBlockExecution execution); @Override void run(List<ExecuteBuildingBlock> flowsToExecute, ExecuteBuildingBlock currentBB,
            BuildingBlockExecution execution);  }### Answer:
@Test public void runWithHoming() { DelegateExecution execution = new DelegateExecutionFake(); execution.setVariable("homing", true); execution.setVariable(CALLED_HOMING, false); BuildingBlockExecution buildingBlockExecution = new DelegateExecutionImpl(execution); ExecuteBuildingBlock executeBuildingBlock = new ExecuteBuildingBlock(); new HomingListener().run(null, executeBuildingBlock, buildingBlockExecution); assertThat(executeBuildingBlock.isHoming()).isTrue(); assertThat((boolean) buildingBlockExecution.getVariable(CALLED_HOMING)).isTrue(); }