### Question:
ReplayGame implements Game { public void tick() { if (!start) { return; } if (noMoreTicks()) { return; } tick++; } ReplayGame(JSONObject save); static boolean isReplay(String save); @Override Object getBoardAsString(); @Override void clearScore(); @Override HeroData getHero(); boolean noMoreTicks(); void tick(); @Override Joystick getJoystick(); @Override boolean isGameOver(); @Override boolean isWin(); @Override boolean shouldLeave(); @Override void newGame(); @Override void loadSave(JSONObject save); @Override JSONObject getSave(); @Override GamePlayer getPlayer(); @Override GameField getField(); @Override void on(GameField field); @Override void setProgress(LevelProgress progress); @Override LevelProgress getProgress(); @Override void close();  }### Answer:
@Test public void shouldNotTickWhenNotStart() { ReplayGame game = createGame(0); assertAtLobby(game); game.tick(); assertAtLobby(game); }
@Test public void shouldNotTickWhenNoMoreTicks_whenDelayReplay() { boolean old = data.delayReplay(); try { data.delayReplay(false); ReplayGame game = createGame(3); assertTick(game, 3); game.tick(); assertAtLobby(game); game.tick(); assertAtLobby(game); } finally { data.delayReplay(old); } }