### Question:
LockedGame implements Game { public static boolean equals(Game game1, Game game2) { if (game1 instanceof LockedGame) { game1 = ((LockedGame)game1).getWrapped(); } if (game2 instanceof LockedGame) { game2 = ((LockedGame)game2).getWrapped(); } return game1 == game2; } LockedGame(ReadWriteLock lock); Game wrap(Game game); @Override Joystick getJoystick(); @Override boolean isGameOver(); @Override boolean isWin(); @Override boolean shouldLeave(); @Override void newGame(); @Override void loadSave(JSONObject save); @Override Object getBoardAsString(); @Override void close(); @Override void clearScore(); @Override HeroData getHero(); @Override JSONObject getSave(); @Override GamePlayer getPlayer(); @Override GameField getField(); @Override void on(GameField field); @Override void setProgress(LevelProgress progress); @Override LevelProgress getProgress(); @Override String toString(); Game getWrapped(); static boolean equals(Game game1, Game game2);  }### Answer:
@Test public void testEquals() { Game game = mock(Game.class); Game game2 = mock(Game.class); Game lockedGame = getLockedGame().wrap(game); assertEquals(true, LockedGame.equals(game, lockedGame)); assertEquals(true, LockedGame.equals(lockedGame, game)); assertEquals(true, LockedGame.equals(game, game)); assertEquals(true, LockedGame.equals(lockedGame, lockedGame)); assertEquals(false, LockedGame.equals(lockedGame, null)); assertEquals(false, LockedGame.equals(null, lockedGame)); assertEquals(false, LockedGame.equals(game, null)); assertEquals(false, LockedGame.equals(null, game)); assertEquals(false, LockedGame.equals(lockedGame, game2)); assertEquals(false, LockedGame.equals(game2, lockedGame)); assertEquals(false, LockedGame.equals(game, game2)); assertEquals(false, LockedGame.equals(game2, game)); }