public void DealCardsTest()
        {
            //Arrange
            GameController   gameController = new GameController();
            ICGUserDBIF      cGUserDB       = new CGUserDB();
            IDeckDBIF        deckDB         = new DeckDB();
            ICardDBIF        cardDB         = new CardDB();
            UserManagement   userManagement = new UserManagement();
            List <CardModel> cardModels     = (List <CardModel>)cardDB.GetAll();
            List <Card>      cards          = CardConverter.ConvertFromListOfCardModelToListOfCard(cardModels);
            Deck             deck           = DeckConverter.ConvertFromDeckModelToDeck(deckDB.GetById(2));
            List <CGUser>    users          = new List <CGUser>();
            CGUser           user           = CGUserConverter.convertFromCGUserModelToCGUser(cGUserDB.GetById("Test"));

            users.Add(user);
            userManagement.DeleteHand(user);
            //Act
            gameController.DealCards(deck, users);
            List <Card> userCards = user.cards;

            //Assert
            Assert.IsTrue(userCards.Count > 0);
            //Cleanup
            userManagement.DeleteHand(user);
        }
Exemplo n.º 2
0
        public IEnumerable <CGUser> GetAll()
        {
            var           data    = cGUserDB.GetAll();
            List <CGUser> cgUsers = CGUserConverter.ConvertFromListOfCGUserModelToListOfCGUser((List <CGUserModel>)cGUserDB.GetAll());

            return(cgUsers);
        }
        public void InsertHandTest()
        {
            //Arrange
            cgUserDB = new CGUserDB();
            CardDB cardDB = new CardDB();
            //Act
            var userModel = cgUserDB.GetById("Test");
            List <CardModel> cardsOnHand         = cardDB.GetCardsByDeckId(2);
            List <CardModel> filteredCardsOnHand = new List <CardModel>();

            for (int i = 0; i < 5; i++)
            {
                CardModel card = cardsOnHand[i];
                filteredCardsOnHand.Add(card);
            }
            cgUserDB.InsertHand(filteredCardsOnHand, userModel);
            CGUser user = CGUserConverter.convertFromCGUserModelToCGUser(cgUserDB.GetById("Test"));

            //Assert
            Assert.IsTrue(user.cards.Count > 0);
            //CleanUp
            CGUserModel revertedUser = CGUserConverter.ConvertFromCGUserToCGUserModel(user);

            cgUserDB.DeleteHand(revertedUser);
        }
Exemplo n.º 4
0
 public List <CGUser> GetUserByTableId(int id)
 {
     if (id == 0)
     {
         throw new ArgumentException();
     }
     else
     {
         return(CGUserConverter.ConvertFromListOfCGUserModelToListOfCGUser(cGUserDB.GetUserByTableId(id)));
     }
 }
Exemplo n.º 5
0
 public void UpdateUserTableId(CGUser user, int tableId)
 {
     if (user == null || tableId == 0)
     {
         throw new ArgumentNullException();
     }
     else
     {
         CGUserModel userModel = CGUserConverter.ConvertFromCGUserToCGUserModel(user);
         cGUserDB.UpdateUserTableId(userModel, tableId);
     }
 }
Exemplo n.º 6
0
 public void UpdateUser(CGUser user)
 {
     if (user == null)
     {
         throw new ArgumentNullException();
     }
     else
     {
         CGUserModel userModel = CGUserConverter.ConvertFromCGUserToCGUserModel(user);
         cGUserDB.Update(userModel);
     }
 }
Exemplo n.º 7
0
 public CGUser GetUserByUserId(string id)
 {
     if (id == null)
     {
         throw new ArgumentNullException();
     }
     else
     {
         CGUserModel userModel = cGUserDB.GetById(id);
         return(CGUserConverter.convertFromCGUserModelToCGUser(userModel));
     }
 }
Exemplo n.º 8
0
 public CGUser GetCGUserByUserName(string userName)
 {
     if (userName == null)
     {
         throw new ArgumentNullException();
     }
     else
     {
         CGUserModel userModel = cGUserDB.GetByUserName(userName);
         return(CGUserConverter.convertFromCGUserModelToCGUser(userModel));
     }
 }
Exemplo n.º 9
0
 public void DeleteHand(CGUser user)
 {
     if (user == null)
     {
         throw new ArgumentNullException();
     }
     else
     {
         CGUserModel userModel = CGUserConverter.ConvertFromCGUserToCGUserModel(user);
         cGUserDB.DeleteHand(userModel);
     }
 }
        /* This method is called when a user want to join a GameTable.
         * It checks wether or notthe table is already full and if it is the user cannot join the table.
         * if a user is successfull in joining a table, a seat is subtracted from the seat count,
         * such that the it can keep track of how many users have joined the table
         */
        public GameTable JoinGameTable(CGUser user, GameTable chosenTable)
        {
            if (user == null || chosenTable == null)
            {
                throw new ArgumentNullException();
            }
            else
            {
                GameTable      databaseTable = null;
                GameTableModel modelTable    = null;
                CGUserModel    userModel     = CGUserConverter.ConvertFromCGUserToCGUserModel(user);
                //Checking if the user is already sitting at the table and returning it without modifying if so.
                for (int i = 0; i < chosenTable.Users.Count; i++)
                {
                    if (userModel.UserName == chosenTable.Users[i].UserName)
                    {
                        return(chosenTable);
                    }
                }
                TransactionOptions transOptions = new TransactionOptions();
                transOptions.IsolationLevel = IsolationLevel.ReadUncommitted;
                using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, transOptions)) {
                    //Checking if the user is sitting at another table.
                    if (userModel.TableID != 0 && userModel.TableID != chosenTable.Id)
                    {
                        modelTable = gameTableDB.GetById(userModel.TableID);
                    }
                    //Getting the table from the database for later comparison.
                    databaseTable = GameTableConverter.ConvertFromGameTableModelToGameTable(gameTableDB.GetById(chosenTable.Id));
                    //Optimistically handling concurrency by checking if the seats available at the chosen table
                    //are the same as the seats available in the database, if not we throw an exception.
                    if (chosenTable.seats == databaseTable.seats && databaseTable.seats > 0)
                    {
                        userManagement.UpdateUserTableId(user, databaseTable.Id);
                        databaseTable.Users.Add(user);
                        UpdateGameTableSeats(databaseTable, 1);
                        //If the user was sitting at another table we free up the seat.
                        if (modelTable != null)
                        {
                            gameTableDB.UpdateGameTableSeats(modelTable, -1);
                        }
                    }
                    else
                    {
                        throw new Exception("Table busy");
                    }
                    Thread.Sleep(2000);
                    scope.Complete();
                }

                return(databaseTable);
            }
        }
Exemplo n.º 11
0
 public void SaveHand(List <Card> cards, CGUser user)
 {
     if (cards == null || user == null)
     {
         throw new ArgumentNullException();
     }
     else
     {
         List <CardModel> cardModels = CardConverter.ConvertFromListOfCardToListOfCardModel(cards);
         CGUserModel      userModel  = CGUserConverter.ConvertFromCGUserToCGUserModel(user);
         cGUserDB.InsertHand(cardModels, userModel);
     }
 }
Exemplo n.º 12
0
        public void DeleteGameTableTest()
        {
            // arrange
            gameTableManagement = new GameTableManagement();
            IGameTableDBIF tableDB = new GameTableDB();
            ICGUserDBIF    userDB  = new CGUserDB();
            CGUser         user    = CGUserConverter.convertFromCGUserModelToCGUser(userDB.GetById("Test"));

            gameTableManagement.CreateGameTable(user, "TestTable");
            GameTable table = gameTableManagement.GetGameTableByTableName("TestTable");

            //Act
            gameTableManagement.DeleteGameTable(table.Id);

            //Assert
            Assert.IsNull(tableDB.GetById(table.Id));
        }
Exemplo n.º 13
0
 public bool DeleteCGUser(CGUser user)
 {
     if (user == null)
     {
         throw new ArgumentNullException();
     }
     else
     {
         bool        res       = false;
         CGUserModel userModel = CGUserConverter.ConvertFromCGUserToCGUserModel(user);
         if (userModel != null)
         {
             cGUserDB.UpdateTableSeats(userModel, -1);
             cGUserDB.Delete(userModel);
             res = true;
         }
         return(res);
     }
 }
Exemplo n.º 14
0
        public void JoinGameTableTest()
        {
            //Assert
            gameTableManagement = new GameTableManagement();
            ICGUserDBIF      userDB = new CGUserDB();
            List <GameTable> tables = (List <GameTable>)gameTableManagement.GetAll();
            GameTable        table  = null;

            if (tables != null)
            {
                table = tables[0];
            }
            CGUser user = CGUserConverter.convertFromCGUserModelToCGUser(userDB.GetById("Test"));
            //Act
            GameTable table2 = gameTableManagement.JoinGameTable(user, table);

            //Assert
            Assert.IsTrue(table.Users.Count < table2.Users.Count);
            //Cleanup
            gameTableManagement.UpdateGameTableSeats(table2, -1);
            userDB.UpdateUserTableId(CGUserConverter.ConvertFromCGUserToCGUserModel(user), 0);
        }
        public void GetUserByTableIdTest()
        {
            //Arrange
            cgUserDB = new CGUserDB();
            GameTableDB gameTableDB = new GameTableDB();
            var         table       = new GameTableModel("TestTable");

            table.DeckId = 2;
            table.seats  = 4;
            //Act
            gameTableDB.Insert(table);
            table = gameTableDB.GetGameTableByTableName("TestTable");
            GameTable gameTable = GameTableConverter.ConvertFromGameTableModelToGameTable(table);

            gameTable.Users.Add(CGUserConverter.convertFromCGUserModelToCGUser(cgUserDB.GetById("Test")));
            CGUserModel testUser = cgUserDB.GetById("Test");

            cgUserDB.UpdateUserTableId(testUser, table.Id);
            List <CGUserModel> foundUser = cgUserDB.GetUserByTableId(table.Id);

            Assert.AreEqual(testUser.UserName, foundUser[0].UserName);
            gameTableDB.Delete(table);
        }
        public void StartGameTest()
        {
            //Arrange
            GameController   gameController = new GameController();
            IGameDBIF        gameDB         = new GameDB();
            IDeckDBIF        deckDb         = new DeckDB();
            ICGUserDBIF      userDB         = new CGUserDB();
            IGameTableDBIF   gameTableDB    = new GameTableDB();
            List <GameModel> games          = (List <GameModel>)gameDB.GetAll();
            List <CGUser>    users          = CGUserConverter.ConvertFromListOfCGUserModelToListOfCGUser((List <CGUserModel>)userDB.GetAll());
            GameTable        gameTable      = new GameTable {
                Deck      = DeckConverter.ConvertFromDeckModelToDeck(deckDb.GetById(2)),
                seats     = 4,
                TableName = "TestTable",
            };

            if (users.Count > 4)
            {
                for (int i = 0; i < 4; i++)
                {
                    gameTable.Users.Add(users[i]);
                }
            }
            gameTableDB.Insert(GameTableConverter.ConvertFromGameTableToGameTableModel(gameTable));
            gameTable = GameTableConverter.ConvertFromGameTableModelToGameTable(gameTableDB.GetGameTableByTableName("TestTable"));

            //Act
            gameController.StartGame(gameTable);
            List <GameModel> games2 = (List <GameModel>)gameDB.GetAll();

            //Assert
            Assert.AreNotEqual(games.Count, games2.Count);
            //Cleanup
            gameDB.Delete(gameDB.GetByTableId(gameTable.Id));
            gameTableDB.Delete(GameTableConverter.ConvertFromGameTableToGameTableModel(gameTable));
        }