Package net.cloudcodex.server.test

Source Code of net.cloudcodex.server.test.StartScenesTest

package net.cloudcodex.server.test;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import junit.framework.TestCase;
import net.cloudcodex.server.Context;
import net.cloudcodex.server.data.AdvancedDAO;
import net.cloudcodex.server.data.Data;
import net.cloudcodex.server.data.Data.Campaign;
import net.cloudcodex.server.data.Data.Scene;
import net.cloudcodex.server.data.campaign.msg.SceneSDO;
import net.cloudcodex.server.data.campaign.scene.SceneToCreateSDO;
import net.cloudcodex.server.service.CampaignService;
import net.cloudcodex.server.service.HomeService;
import net.cloudcodex.server.service.MessageService;
import net.cloudcodex.shared.Errors;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.google.appengine.api.datastore.DatastoreService;
import com.google.appengine.api.datastore.DatastoreServiceFactory;
import com.google.appengine.tools.development.testing.LocalDatastoreServiceTestConfig;
import com.google.appengine.tools.development.testing.LocalServiceTestHelper;

/**
* jUnit Test for {@link MessageService#startScenes(Context, long, SceneToCreateSDO[])}
*/
public class StartScenesTest extends TestCase {

    private final LocalServiceTestHelper helper =
        new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig());

    private CampaignService campaignService;

    private MessageService messageService;

    private HomeService homeService;

    private AdvancedDAO dao;
   
    private Data.User master;
    private Data.User player1;
    private Data.User player2;
    private Data.User player3;
    private Campaign campaign;
    private long campaignId;
    private Data.Character char1;
    private long char1Id;
    private Data.Character char2;
    private long char2Id;
    private Data.Character char3;
    private long char3Id;
    private Data.Character npc1;
    private long npc1Id;
    private Data.Character npc2;
    private long npc2Id;
   
    private Scene scene;
    private Scene scene2;
   
    private Context context;
   
    @Before
    public void setUp() {
        helper.setUp();
        DatastoreService store = DatastoreServiceFactory.getDatastoreService();
        campaignService = new CampaignService(store);
        messageService = new MessageService(store);
        homeService = new HomeService(store);
        dao = new AdvancedDAO(store);
       
    master = homeService.createUser(null, "master@test.com", "Master");
      player1 = homeService.createUser(null, "player1@test.com", "Player1");
    player2 = homeService.createUser(null, "player2@test.com", "Player2");
    player3 = homeService.createUser(null, "player3@test.com", "Player3");
   
    campaign = campaignService.createCampaign(null, "Test Campaign", "Some game", "Some desc", null, master);
    campaignId = campaign.getKey().getId();
   
    char1 = campaignService.createCharacter(null, campaign, "Char1", player1, null, null);
    char1Id = char1.getKey().getId();
    char2 = campaignService.createCharacter(null, campaign, "Char2", player2, null, null);
    char2Id = char2.getKey().getId();
    char3 = campaignService.createCharacter(null, campaign, "Char3", player3, null, null);
    char3Id = char3.getKey().getId();
   
    npc1 = campaignService.createCharacter(null, campaign, "NPC1", null, null, null);
    npc1Id = npc1.getKey().getId();

    npc2 = campaignService.createCharacter(null, campaign, "NPC2", null, null, null);
    npc2Id = npc2.getKey().getId();

      context = new Context(master);
      scene = messageService.startScene(context, "introduction",
            char1.getKey(), char2.getKey());
      assertNotNull(scene);
    }

    @After
    public void tearDown() {
        helper.tearDown();
        campaignService = null;
        homeService = null;
        dao = null;
    }

    @Test
    public void testCreatingAGoodNewScene() {

      final String intro = "The Intro";
      final SceneToCreateSDO scene = new SceneToCreateSDO();
      scene.setCharacters(new long[] {char1Id, char2Id, char3Id});
      scene.setIntroduction(intro);
     
      final SceneToCreateSDO[] scenes = new SceneToCreateSDO[] { scene };
     
      boolean result = messageService.startScenes(context, campaignId, scenes);
      assertTrue(result);
      assertFalse(context.hasErrors());
     
      context = new Context(player1);
      final List<SceneSDO> readScenes =
        messageService.getMessages(context, campaignId, char1Id, null, null);
     
      final SceneSDO lastScene = readScenes.get(readScenes.size() - 1);
      assertTrue(lastScene.getScene().getCharacters().contains(char1.getKey()));
      assertTrue(lastScene.getScene().getCharacters().contains(char2.getKey()));
      assertTrue(lastScene.getScene().getCharacters().contains(char3.getKey()));
      assertTrue(lastScene.getScene().getCharacters().size() == 3);
      assertTrue(intro.equals(lastScene.getScene().getIntroduction()));
    }
   
    @Test
    public void testCreatingAGoodNewSceneWithAliases() {

      final String intro = "The Intro";
      final SceneToCreateSDO scene = new SceneToCreateSDO();
      scene.setCharacters(new long[] {char1Id, char2Id, char3Id});
      scene.setIntroduction(intro);

      final Map<Long, String> char1Aliases = new HashMap<Long, String>();
      char1Aliases.put(null, "Global");
      char1Aliases.put(char3Id, "Specific");
      scene.getAliases().put(char1Id, char1Aliases);
     
      final SceneToCreateSDO[] scenes = new SceneToCreateSDO[] { scene };
     
      boolean result = messageService.startScenes(context, campaignId, scenes);
      assertTrue(result);
      assertFalse(context.hasErrors());
     
      context = new Context(player1);
      final List<SceneSDO> readScenes =
        messageService.getMessages(context, campaignId, char1Id, null, null);
     
      final SceneSDO lastScene = readScenes.get(readScenes.size() - 1);
      assertTrue(lastScene.getScene().getCharacters().contains(char1.getKey()));
      assertTrue(lastScene.getScene().getCharacters().contains(char2.getKey()));
      assertTrue(lastScene.getScene().getCharacters().contains(char3.getKey()));
      assertTrue(lastScene.getScene().getCharacters().size() == 3);
      assertTrue(intro.equals(lastScene.getScene().getIntroduction()));
     
      assertEquals("Global", lastScene.getScene().getAlias(char1Id + ""));
      assertEquals("Specific", lastScene.getScene().getAlias(char1Id + "-" + char3Id));
    }
   
    @Test
    public void testCreating2GoodNewScenes() {

      final String intro = "The Intro";
      final SceneToCreateSDO scene = new SceneToCreateSDO();
      scene.setCharacters(new long[] {char1Id, char3Id});
      scene.setIntroduction(intro);

      final SceneToCreateSDO scene2 = new SceneToCreateSDO();
      scene2.setCharacters(new long[] {char2Id, npc1Id});
      scene2.setIntroduction(intro + "2");

      final SceneToCreateSDO[] scenes = new SceneToCreateSDO[] { scene, scene2 };
     
      boolean result = messageService.startScenes(context, campaignId, scenes);
      assertTrue(result);
      assertFalse(context.hasErrors());
     
      context = new Context(player1);
      List<SceneSDO> readScenes =
        messageService.getMessages(context, campaignId, char1Id, null, null);
     
      SceneSDO lastScene = readScenes.get(readScenes.size() - 1);
      assertTrue(lastScene.getScene().getCharacters().contains(char1.getKey()));
      assertTrue(lastScene.getScene().getCharacters().contains(char3.getKey()));
      assertTrue(lastScene.getScene().getCharacters().size() == 2);
      assertTrue(intro.equals(lastScene.getScene().getIntroduction()));
     
     
      context = new Context(player2);
      readScenes =
        messageService.getMessages(context, campaignId, char2Id, null, null);
     
      lastScene = readScenes.get(readScenes.size() - 1);
      assertTrue(lastScene.getScene().getCharacters().contains(char2.getKey()));
      assertTrue(lastScene.getScene().getCharacters().contains(npc1.getKey()));
      assertTrue(lastScene.getScene().getCharacters().size() == 2);
      assertTrue((intro + "2").equals(lastScene.getScene().getIntroduction()));     
    }
   
    @Test
    public void testCreating2GoodNewScenesWithNPCUbiquity() {

      final String intro = "The Intro";
      final SceneToCreateSDO scene = new SceneToCreateSDO();
      scene.setCharacters(new long[] {char1Id, char3Id, npc1Id});
      scene.setIntroduction(intro);

      final SceneToCreateSDO scene2 = new SceneToCreateSDO();
      scene2.setCharacters(new long[] {char2Id, npc1Id});
      scene2.setIntroduction(intro + "2");

      final SceneToCreateSDO[] scenes = new SceneToCreateSDO[] { scene, scene2 };
     
      boolean result = messageService.startScenes(context, campaignId, scenes);
      assertTrue(result);
      assertFalse(context.hasErrors());
     
      context = new Context(player1);
      List<SceneSDO> readScenes =
        messageService.getMessages(context, campaignId, char1Id, null, null);
     
      SceneSDO lastScene = readScenes.get(readScenes.size() - 1);
      assertTrue(lastScene.getScene().getCharacters().contains(char1.getKey()));
      assertTrue(lastScene.getScene().getCharacters().contains(char3.getKey()));
      assertTrue(lastScene.getScene().getCharacters().contains(npc1.getKey()));
      assertTrue(lastScene.getScene().getCharacters().size() == 3);
      assertTrue(intro.equals(lastScene.getScene().getIntroduction()));
     
     
      context = new Context(player2);
      readScenes =
        messageService.getMessages(context, campaignId, char2Id, null, null);
     
      lastScene = readScenes.get(readScenes.size() - 1);
      assertTrue(lastScene.getScene().getCharacters().contains(char2.getKey()));
      assertTrue(lastScene.getScene().getCharacters().contains(npc1.getKey()));
      assertTrue(lastScene.getScene().getCharacters().size() == 2);
      assertTrue((intro + "2").equals(lastScene.getScene().getIntroduction()));     
    }
    @Test
    public void testCreating2ScenesButUbiquity() {

      final String intro = "The Intro";
      final SceneToCreateSDO scene = new SceneToCreateSDO();
      scene.setCharacters(new long[] {char1Id, char3Id});
      scene.setIntroduction(intro);

      final SceneToCreateSDO scene2 = new SceneToCreateSDO();
      scene2.setCharacters(new long[] {char2Id, npc1Id, char1Id});
      scene2.setIntroduction(intro + "2");

      final SceneToCreateSDO[] scenes = new SceneToCreateSDO[] { scene, scene2 };
     
      boolean result = messageService.startScenes(context, campaignId, scenes);
      assertFalse(result);
      assertTrue(context.hasError(Errors.IMPOSSIBLE_UBIQUITY));
    }
   
    @Test
    public void testCreatingASceneWithOnlyNPC() {

      final String intro = "The Intro";
      final SceneToCreateSDO scene = new SceneToCreateSDO();
      scene.setCharacters(new long[] {npc1Id, npc2Id});
      scene.setIntroduction(intro);
     
      final SceneToCreateSDO[] scenes = new SceneToCreateSDO[] { scene };
     
      boolean result = messageService.startScenes(context, campaignId, scenes);
      assertFalse(result);
      assertTrue(context.hasError(Errors.IMPOSSIBLE_ONLY_NPCS));
    }
   
   
    @Test
    public void testCreatingASceneWithMissingParams() {

      final String intro = "The Intro";
      final SceneToCreateSDO scene = new SceneToCreateSDO();
      scene.setCharacters(new long[] {});
      scene.setIntroduction(intro);
     
      final SceneToCreateSDO[] scenes = new SceneToCreateSDO[] { scene };
     
      boolean result = messageService.startScenes(context, campaignId, scenes);
      assertFalse(result);
      assertTrue(context.hasError(Errors.REQUIRED));
    }
   
    @Test
    public void testCreatingASceneWithPCNotDispatched() {

      final String intro = "The Intro";
      final SceneToCreateSDO scene = new SceneToCreateSDO();
      scene.setCharacters(new long[] {char1Id});
      scene.setIntroduction(intro);
     
      final SceneToCreateSDO[] scenes = new SceneToCreateSDO[] { scene };
     
      boolean result = messageService.startScenes(context, campaignId, scenes);
      assertFalse(result);
      assertTrue(context.hasError(Errors.IMPOSSIBLE_PC_NOT_DISPATCHED));
    }
}
TOP

Related Classes of net.cloudcodex.server.test.StartScenesTest

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.