diff --git a/Mage.Tests/src/test/java/org/mage/test/multiplayer/PlayersListAndOrderTest.java b/Mage.Tests/src/test/java/org/mage/test/multiplayer/PlayersListAndOrderTest.java index 0e4d6bed1f1..d0809f3d3d0 100644 --- a/Mage.Tests/src/test/java/org/mage/test/multiplayer/PlayersListAndOrderTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/multiplayer/PlayersListAndOrderTest.java @@ -115,6 +115,36 @@ public class PlayersListAndOrderTest extends CardTestMultiPlayerBase { execute(); } + @Test + public void test_Game_PlayerListMustHaveAccessByIndex() { + // make sure CircularList return same data by index, see #13526 + + PlayerList players = new PlayerList(); + players.add(playerA.getId()); + players.add(playerB.getId()); + players.add(playerC.getId()); + players.add(playerD.getId()); + Assert.assertEquals("last added player must be current", players.get(0), playerD.getId()); + List staticList = new ArrayList<>(players); + + // normal + Assert.assertEquals(players.get(0), staticList.get(0)); + Assert.assertEquals(players.get(1), staticList.get(1)); + Assert.assertEquals(players.get(2), staticList.get(2)); + Assert.assertEquals(players.get(3), staticList.get(3)); + Assert.assertEquals(players.get(2), staticList.get(2)); // make sure no depends on calls order + + // make sure CircularList keeps inner structure + players.setCurrent(playerC.getId()); + Assert.assertEquals(players.get(0), staticList.get(0)); + Assert.assertEquals(players.get(1), staticList.get(1)); + Assert.assertEquals(players.get(2), staticList.get(2)); + Assert.assertEquals(players.get(3), staticList.get(3)); + Assert.assertEquals(players.get(2), staticList.get(2)); // make sure no depends on calls order + + Assert.assertNull("must return null on non existing item", players.get(999)); + } + @Test public void test_Game_GetPlayerList() { // game.getPlayerList() - APNAP order, for cards usage diff --git a/Mage/src/main/java/mage/util/CircularList.java b/Mage/src/main/java/mage/util/CircularList.java index 5fb6a09c6d6..45890ad68f1 100644 --- a/Mage/src/main/java/mage/util/CircularList.java +++ b/Mage/src/main/java/mage/util/CircularList.java @@ -82,8 +82,8 @@ public class CircularList implements List, Iterable, Serializable { */ @Override public E get(int index) { - if (list.size() > this.index) { - return list.get(this.index); + if (list.size() > index) { + return list.get(index); } return null; }