mirror of
https://github.com/magefree/mage.git
synced 2026-01-09 20:32:06 -08:00
gui: fixed broken watcher view mode (closes #11481)
This commit is contained in:
parent
6a1f4a35d4
commit
2eac541b80
8 changed files with 125 additions and 41 deletions
|
|
@ -104,8 +104,8 @@ public class LoadCallbackClient implements CallbackClient {
|
|||
session.sendPlayerUUID(gameId, playerId);
|
||||
return;
|
||||
case "Select a card to discard":
|
||||
log.info(getLogStartInfo() + "hand size: " + gameView.getHand().size());
|
||||
SimpleCardView card = gameView.getHand().values().iterator().next();
|
||||
log.info(getLogStartInfo() + "hand size: " + gameView.getMyHand().size());
|
||||
SimpleCardView card = gameView.getMyHand().values().iterator().next();
|
||||
session.sendPlayerUUID(gameId, card.getId());
|
||||
return;
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -27,8 +27,8 @@ public class CardIconsTest extends CardTestPlayerBase {
|
|||
// hand (not visible)
|
||||
runCode("card icons in hand", 1, PhaseStep.PRECOMBAT_MAIN, playerA, (info, player, game) -> {
|
||||
GameView gameView = getGameView(player);
|
||||
Assert.assertEquals("must have 1 card in hand", 1, gameView.getHand().values().size());
|
||||
CardView cardView = gameView.getHand().values().stream().findFirst().get();
|
||||
Assert.assertEquals("must have 1 card in hand", 1, gameView.getMyHand().values().size());
|
||||
CardView cardView = gameView.getMyHand().values().stream().findFirst().get();
|
||||
Assert.assertEquals("must have non x cost card icons in hand", 0, cardView.getCardIcons().size());
|
||||
});
|
||||
|
||||
|
|
@ -224,8 +224,8 @@ public class CardIconsTest extends CardTestPlayerBase {
|
|||
// hand (not visible)
|
||||
runCode("card icons in hand", 1, PhaseStep.PRECOMBAT_MAIN, playerA, (info, player, game) -> {
|
||||
GameView gameView = getGameView(player);
|
||||
Assert.assertEquals("must have 1 card in hand", 1, gameView.getHand().values().size());
|
||||
CardView cardView = gameView.getHand().values().stream().findFirst().get();
|
||||
Assert.assertEquals("must have 1 card in hand", 1, gameView.getMyHand().values().size());
|
||||
CardView cardView = gameView.getMyHand().values().stream().findFirst().get();
|
||||
Assert.assertEquals("must have non x cost card icons in hand", 0, cardView.getCardIcons().size());
|
||||
});
|
||||
|
||||
|
|
@ -296,7 +296,7 @@ public class CardIconsTest extends CardTestPlayerBase {
|
|||
// hand (not visible)
|
||||
runCode("card icons in hand", 1, PhaseStep.PRECOMBAT_MAIN, playerA, (info, player, game) -> {
|
||||
GameView gameView = getGameView(player);
|
||||
CardView cardView = gameView.getHand().values().stream()
|
||||
CardView cardView = gameView.getMyHand().values().stream()
|
||||
.filter(c -> c.getName().equals("Agadeem's Awakening"))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,68 @@
|
|||
package org.mage.test.serverside;
|
||||
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.constants.Zone;
|
||||
import mage.view.GameView;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author JayDi85
|
||||
*/
|
||||
public class GameViewTest extends CardTestPlayerBase {
|
||||
|
||||
@Test
|
||||
public void test_GameViewForPlayersAndWatchers() {
|
||||
addCard(Zone.HAND, playerA, "Forest", 1);
|
||||
|
||||
setStrictChooseMode(true);
|
||||
setStopAt(1, PhaseStep.END_TURN);
|
||||
execute();
|
||||
|
||||
UUID userA = UUID.randomUUID();
|
||||
UUID userB = UUID.randomUUID();
|
||||
UUID userWatcher = UUID.randomUUID();
|
||||
|
||||
// normal hand
|
||||
GameView gameView = getGameView(playerA, userA);
|
||||
Assert.assertNotNull(gameView);
|
||||
Assert.assertNotNull(gameView.getMyHand());
|
||||
Assert.assertEquals(1, gameView.getMyHand().size());
|
||||
Assert.assertEquals("Forest", gameView.getMyHand().values().stream().findFirst().get().getName());
|
||||
Assert.assertEquals(0, gameView.getLookedAt().size());
|
||||
Assert.assertEquals(0, gameView.getRevealed().size());
|
||||
Assert.assertEquals(0, gameView.getWatchedHands().size());
|
||||
|
||||
// empty hand
|
||||
gameView = getGameView(playerB, userB);
|
||||
Assert.assertNotNull(gameView);
|
||||
Assert.assertNotNull(gameView.getMyHand());
|
||||
Assert.assertEquals(0, gameView.getMyHand().size());
|
||||
Assert.assertEquals(0, gameView.getLookedAt().size());
|
||||
Assert.assertEquals(0, gameView.getRevealed().size());
|
||||
Assert.assertEquals(0, gameView.getWatchedHands().size());
|
||||
|
||||
// watcher hand
|
||||
gameView = getGameView(null, userWatcher);
|
||||
Assert.assertNotNull(gameView);
|
||||
Assert.assertNotNull(gameView.getMyHand());
|
||||
Assert.assertEquals(0, gameView.getMyHand().size());
|
||||
Assert.assertEquals(0, gameView.getLookedAt().size());
|
||||
Assert.assertEquals(0, gameView.getRevealed().size());
|
||||
Assert.assertEquals(0, gameView.getWatchedHands().size());
|
||||
|
||||
// A gives access to hand for B and watcher
|
||||
playerA.addPermissionToShowHandCards(userB);
|
||||
playerA.addPermissionToShowHandCards(userWatcher);
|
||||
|
||||
gameView = getGameView(playerA, userA);
|
||||
Assert.assertEquals(0, gameView.getWatchedHands().size());
|
||||
gameView = getGameView(playerB, userB);
|
||||
Assert.assertEquals(1, gameView.getWatchedHands().size());
|
||||
gameView = getGameView(null, userWatcher);
|
||||
Assert.assertEquals(1, gameView.getWatchedHands().size());
|
||||
}
|
||||
}
|
||||
|
|
@ -2222,9 +2222,20 @@ public abstract class CardTestPlayerAPIImpl extends MageTestPlayerBase implement
|
|||
Assert.assertFalse(player.getName() + " has lost the game.", player.hasLost());
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare GameView from current game (for client side code tests)
|
||||
*
|
||||
* @param player null for watcher mode
|
||||
*/
|
||||
public GameView getGameView(Player player) {
|
||||
// prepare client-server data for tests
|
||||
return GameSessionPlayer.prepareGameView(currentGame, player.getId(), null);
|
||||
UUID playerId = player == null ? null : player.getId();
|
||||
return GameSessionPlayer.prepareGameView(currentGame, playerId, playerId);
|
||||
}
|
||||
|
||||
public GameView getGameView(Player player, UUID userId) {
|
||||
// prepare client-server data for tests
|
||||
return GameSessionPlayer.prepareGameView(currentGame, player == null ? null : player.getId(), userId);
|
||||
}
|
||||
|
||||
protected enum ExpectedType {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue