### Question:
Fifteen implements Field { @Override public void tick() { for (Player player : players) { Hero hero = player.getHero(); hero.tick(); if(isAllPositionCorrect()){ player.event(Events.WIN); player.getHero().die(); } } } Fifteen(Level level, Dice dice); @Override void tick(); @Override boolean isBarrier(int x, int y); @Override Digit getDigit(int x, int y); @Override boolean isFree(int x, int y); List<Hero> getHeroes(); @Override void newGame(Player player); @Override Hero getLevelHero(); @Override void remove(Player player); List<Wall> getWalls(); List<Digit> getDigits(); @Override BoardReader reader();  }### Answer:
@Test public void shouldMoveUp() { givenFl("******" + "*abcd*" + "*efgh*" + "*ijkl*" + "*mno+*" + "******"); hero.up(); game.tick(); assertE("******" + "*abcd*" + "*efgh*" + "*ijk+*" + "*mnol*" + "******"); }
@Test public void shouldMoveDown() { givenFl("******" + "*abcd*" + "*efgh*" + "*ijk+*" + "*mnol*" + "******"); hero.down(); game.tick(); assertE("******" + "*abcd*" + "*efgh*" + "*ijkl*" + "*mno+*" + "******"); }
@Test public void shouldMoveRight() { givenFl("******" + "*abcd*" + "*efgh*" + "*ijkl*" + "*m+no*" + "******"); hero.right(); game.tick(); assertE("******" + "*abcd*" + "*efgh*" + "*ijkl*" + "*mn+o*" + "******"); }
@Test public void shouldMoveLeft() { givenFl("******" + "*abcd*" + "*efgh*" + "*ijkl*" + "*mno+*" + "******"); hero.left(); game.tick(); assertE("******" + "*abcd*" + "*efgh*" + "*ijkl*" + "*mn+o*" + "******"); }
@Test public void shouldDoNothingWhenMoveToWall() { givenFl("******" + "*abcd*" + "*efgh*" + "*ijkl*" + "*mno+*" + "******"); hero.right(); game.tick(); assertE("******" + "*abcd*" + "*efgh*" + "*ijkl*" + "*mno+*" + "******"); }