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); }
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); }
public List <CGUser> GetUserByTableId(int id) { if (id == 0) { throw new ArgumentException(); } else { return(CGUserConverter.ConvertFromListOfCGUserModelToListOfCGUser(cGUserDB.GetUserByTableId(id))); } }
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); } }
public void UpdateUser(CGUser user) { if (user == null) { throw new ArgumentNullException(); } else { CGUserModel userModel = CGUserConverter.ConvertFromCGUserToCGUserModel(user); cGUserDB.Update(userModel); } }
public CGUser GetUserByUserId(string id) { if (id == null) { throw new ArgumentNullException(); } else { CGUserModel userModel = cGUserDB.GetById(id); return(CGUserConverter.convertFromCGUserModelToCGUser(userModel)); } }
public CGUser GetCGUserByUserName(string userName) { if (userName == null) { throw new ArgumentNullException(); } else { CGUserModel userModel = cGUserDB.GetByUserName(userName); return(CGUserConverter.convertFromCGUserModelToCGUser(userModel)); } }
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); } }
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); } }
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)); }
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); } }
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)); }