Package com.antonytrupe.server.tend

Source Code of com.antonytrupe.server.tend.APITest

package com.antonytrupe.server.tend;

import static org.junit.Assert.assertEquals;

import org.junit.Ignore;
import org.junit.Test;
import org.mozilla.javascript.ScriptableObject;

import com.antonytrupe.server.GAETestCase;
import com.antonytrupe.server.games.GameEngine;
import com.antonytrupe.server.games.GameEngineException;

public class APITest extends GAETestCase {

  @Test
  public void newBoard() throws GameEngineException {
    API api = new API();
    ScriptableObject board = api.createBoard();
    assertEquals(32, board.get("size"));
  }

  @Test
  @Ignore
  public void stringify() throws GameEngineException {
    API api = new API();
    ScriptableObject board = api.save(api.createBoard());

    assertEquals(1L, board.get("id"));

    Object result = api.stringify(board);

    assertEquals("", result);
  }

  @Test
  public void saveBoard() throws GameEngineException {
    API api = new API();
    ScriptableObject board = api.createBoard();
    assertEquals(32, board.get("size"));

    ScriptableObject s = api.save(board);

    assertEquals(1L, s.get("id"));
  }

  @Test
  public void loadBoard() throws GameEngineException {
    API api = new API();
    ScriptableObject board1 = api.createBoard();
    assertEquals(32, board1.get("size"));

    board1 = api.save(board1);
    assertEquals(1L, board1.get("id"));

    ScriptableObject board2 = api.getBoard(1);
    assertEquals(1, board2.get("id"));
  }

  @Test
  public void update() throws GameEngineException {
    API api = new API();
    ScriptableObject board = api.createBoard();
    assertEquals(32, board.get("size"));

    assertEquals(null, board.get("id"));

    GameEngine ge = new GameEngine(new String[] {
        "/com/antonytrupe/tend/Resource.js",
        "/com/antonytrupe/tend/ResourceGroup.js",
        "/com/antonytrupe/tend/Point.js",
        "/com/antonytrupe/tend/Board.js",
        "/com/antonytrupe/tend/Player.js",
        "/com/antonytrupe/tend/Trade.js",
        "/com/antonytrupe/tend/Settlement.js" });
    ge.invoke(board, "update", new String[] { "{\"board\":"
        + "{\"id\":1,\"players\":{}}" + "}" });
    assertEquals(1, board.get("id"));
  }

  @Test
  public void joinBoard() throws GameEngineException {
    API api = new API();
    Long boardId = null;
    String userName = "one";
    ScriptableObject board1 = api.joinBoard(boardId, userName);
    assertEquals(32, board1.get("size"));

    board1 = api.save(board1);
    assertEquals(1L, board1.get("id"));

    ScriptableObject board2 = api.getBoard(1);
    assertEquals(1, board2.get("id"));

    assertEquals(1, ((ScriptableObject) board2.get("players")).size());

    api.joinBoard(board2, userName);
    assertEquals(1, ((ScriptableObject) board2.get("players")).size());
    api.joinBoard(board2, "two");
    assertEquals(2, ((ScriptableObject) board2.get("players")).size());
  }

  @Test
  public void queueSettlement() throws GameEngineException {
    API api = new API();
    Long boardId = null;
    String playerName = "one";
    ScriptableObject board = api.joinBoard(boardId, playerName);
    assertEquals(32, board.get("size"));

    board = api.save(board);

    String settlementPoint = "{\"r\":1,\"g\":1,\"b\":1}";
    String resources = "{\"WHEAT\":1,\"FUR\":1,\"STONE\":1}";
    String settlementName = "HAMLET";
    api.queueSettlement(board, playerName, settlementPoint, settlementName,
        resources);

    // see if the location got saved
    ScriptableObject queuedSettlements = (ScriptableObject) ((ScriptableObject) ((ScriptableObject) board
        .get("players")).get(playerName)).get("queuedSettlements");
    assertEquals(1, queuedSettlements.size());
    assertEquals(settlementName, queuedSettlements.get(settlementPoint));

    // see if the queued resources got saved
    ScriptableObject queuedSettlementsResources = (ScriptableObject) ((ScriptableObject) ((ScriptableObject) board
        .get("players")).get(playerName))
        .get("queuedSettlementsResources");
    assertEquals(1, queuedSettlementsResources.size());
    assertEquals(1,
        ((ScriptableObject) queuedSettlementsResources
            .get(settlementPoint)).get("WHEAT"));
    assertEquals(1,
        ((ScriptableObject) queuedSettlementsResources
            .get(settlementPoint)).get("FUR"));
    assertEquals(1,
        ((ScriptableObject) queuedSettlementsResources
            .get(settlementPoint)).get("STONE"));

    // see if the queued resources got removed from the player
    ScriptableObject player = (ScriptableObject) ((ScriptableObject) board
        .get("players")).get(playerName);
    assertEquals(3.0,
        ((ScriptableObject) player.get("resources")).get("WHEAT"));
    assertEquals(2.0,
        ((ScriptableObject) player.get("resources")).get("FUR"));
    assertEquals(3.0,
        ((ScriptableObject) player.get("resources")).get("STONE"));
  }

  @Test
  @Ignore
  public void processQueuedSettlement() throws GameEngineException {
    API api = new API();
    Long boardId = null;
    String playerName = "one";
    ScriptableObject board = api.joinBoard(boardId, playerName);
    assertEquals(32, board.get("size"));

    board = api.save(board);

    String settlementPoint = "{\"r\":1,\"g\":1,\"b\":1}";
    String resources = "{\"WHEAT\":1,\"FUR\":1,\"STONE\":1}";
    String settlementName = "HAMLET";
    api.queueSettlement(board, playerName, settlementPoint, settlementName,
        resources);

    api.endTurn(board);

    // see if the queued location got cleared
    ScriptableObject scriptableObject3 = (ScriptableObject) ((ScriptableObject) board
        .get("players")).get(playerName);
    ScriptableObject queuedSettlements = (ScriptableObject) scriptableObject3
        .get("queuedSettlements");
    assertEquals(0, queuedSettlements.size());

    // see if the queued resources got cleared
    ScriptableObject queuedSettlementsResources = (ScriptableObject) scriptableObject3
        .get("queuedSettlementsResources");
    assertEquals(0, queuedSettlementsResources.size());

    // see if the settlement got built
    // board.settlementLocations
    assertEquals(1,
        ((ScriptableObject) board.get("settlementLocations")).size());
    assertEquals(settlementName,
        ((ScriptableObject) board.get("settlementLocations"))
            .get(settlementPoint));

    // board.settlementOwnership
    assertEquals(1,
        ((ScriptableObject) board.get("settlementOwnership")).size());
    assertEquals(playerName,
        ((ScriptableObject) board.get("settlementOwnership"))
            .get(settlementPoint));

    // board.players[playerName].settlements
    ScriptableObject scriptableObject2 = (ScriptableObject) scriptableObject3
        .get("settlements");
    assertEquals(1, scriptableObject2.size());
    ScriptableObject scriptableObject = (ScriptableObject) scriptableObject2
        .get(settlementPoint);
    assertEquals(settlementName, scriptableObject.get("name"));

  }
}
TOP

Related Classes of com.antonytrupe.server.tend.APITest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.