/// <summary> /// 從設定檔建立遊戲 /// </summary> /// <returns>遊戲清單</returns> public static Dictionary <GameNameType, IGame> CreateGames() { Dictionary <GameNameType, IGame> games = new Dictionary <GameNameType, IGame>(); string[] gameNames = ConfigurationManager.AppSettings.AllKeys .Where(key => key.StartsWith("Games_")) .Select(key => ConfigurationManager.AppSettings[key]) .ToArray(); foreach (var gameName in gameNames) { try { Assembly assembly = Assembly.Load(gameName); string fullname = string.Format("{0}.Game", gameName); Type type = assembly.GetType(fullname); if (type == null) { continue; } GameNameType key = new GameNameType(gameName); ConstructorInfo ctor = type.GetConstructor(new[] { typeof(GameNameType) }); IGame game = ( IGame )ctor.Invoke(new object[] { key }); games.Add(key, game); } catch (Exception e) { string s = e.Message; } } return(games); }
public void TestGame_LeaveRoomSuccess() { NicknameType nickname = new NicknameType("Caesar"); Mock <IHanabiPlayer> player = new Mock <IHanabiPlayer>(); player.SetupGet <NicknameType>(x => x.nickname).Returns(nickname); player.Setup(x => x.OnEnterGame(nickname)); player.Setup(x => x.OnJoinRoom(It.IsAny <Room>())); int count = 0; player.Setup(x => x.SendCommand(It.IsAny <Command>())) .Callback <Command>(c => { switch (++count) { case 1: VerifyEnterGame(c, ExitGameResult.Success); break; case 2: VerifyQuitRoom(c, QuitRoomResult.Success, 0); break; } }); GameNameType gameName = new GameNameType("Hanabi"); Game game = new Game(gameName); PlayerEnter(game, player.Object, nickname); player.VerifyAll(); }
public void TestGame_JoinRoomSuccess() { NicknameType nickname1 = new NicknameType("Caesar"); NicknameType nickname2 = new NicknameType("Jenny"); Mock <IHanabiPlayer> player1 = new Mock <IHanabiPlayer>(); Mock <IHanabiPlayer> player2 = new Mock <IHanabiPlayer>(); player1.SetupGet <NicknameType>(x => x.nickname).Returns(nickname1); player2.SetupGet <NicknameType>(x => x.nickname).Returns(nickname2); RoomIndexType index = new RoomIndexType(0); player1.Setup(x => x.OnEnterGame(nickname1)); player1.Setup(x => x.OnJoinRoom(It.Is <Room>(r => r.RoomIndex == index))); int count1 = 0; player1.Setup(x => x.SendCommand(It.IsAny <Command>())) .Callback <Command>(c => { switch (++count1) { case 1: VerifyEnterGame(c, ExitGameResult.Success); break; } }); player2.Setup(x => x.OnEnterGame(nickname2)); player2.Setup(x => x.OnJoinRoom(It.Is <Room>(r => r.RoomIndex == index))); int count2 = 0; player2.Setup(x => x.SendCommand(It.IsAny <Command>())) .Callback <Command>(c => { switch (++count2) { case 1: VerifyEnterGame(c, ExitGameResult.Success); break; case 2: VerifyJoinRoom(c, JoinRoomResult.Success, 2); break; } }); GameNameType gameName = new GameNameType("Hanabi"); Game game = new Game(gameName); PlayerEnter(game, player1.Object, nickname1); PlayerEnter(game, player2.Object, nickname2); PlayerJoinRoom(game, player2.Object, index); player1.VerifyAll(); player2.VerifyAll(); }
public Game(GameNameType gameName) { this.GameName = gameName; this.Players = new Dictionary <NicknameType, IHanabiPlayer>(); Rooms = new Dictionary <RoomIndexType, Room>(); for (int count = 0; count < 10; ++count) { Room room = new Room(count); Rooms.Add(room.RoomIndex, room); } }
public void TestGame_ExitGameFailed() { NicknameType nickname = new NicknameType("Caesar"); Mock <IHanabiPlayer> player = new Mock <IHanabiPlayer>(); player.SetupGet <NicknameType>(x => x.nickname).Returns(nickname); player.Setup(x => x.SendCommand(It.Is <Command>(c => VerifyExitGame(c, ExitGameResult.Fail)))); GameNameType gameName = new GameNameType("Hanabi"); Game game = new Game(gameName); PlayerExit(game, player.Object, nickname); player.VerifyAll(); }
public void TestGame_GetRoomListEmptyList() { NicknameType nickname = new NicknameType("Caesar"); Mock <IHanabiPlayer> player = new Mock <IHanabiPlayer>(); player.SetupGet <NicknameType>(x => x.nickname).Returns(nickname); player.Setup(x => x.OnEnterGame(nickname)); player.Setup(x => x.SendCommand(It.Is <Command>(c => VerifyEnterGame(c, ExitGameResult.Success)))); player.Setup(x => x.SendCommand(It.Is <Command>(c => VerifyGameList(c, 0)))); GameNameType gameName = new GameNameType("Hanabi"); Game game = new Game(gameName); PlayerEnter(game, player.Object, nickname); PlayerGetRoomList(game, player.Object); player.VerifyAll(); }
public void TestGame_EnterGameFail() { NicknameType nickname = new NicknameType("Caesar"); Mock <IHanabiPlayer> player1 = new Mock <IHanabiPlayer>(); player1.SetupGet <NicknameType>(x => x.nickname).Returns(nickname); player1.Setup(x => x.OnEnterGame(nickname)); player1.Setup(x => x.SendCommand(It.Is <Command>(c => VerifyEnterGame(c, ExitGameResult.Success)))); Mock <IHanabiPlayer> player2 = new Mock <IHanabiPlayer>(); player2.Setup(x => x.SendCommand(It.Is <Command>(c => VerifyEnterGame(c, ExitGameResult.Fail)))); GameNameType gameName = new GameNameType("Hanabi"); Game game = new Game(gameName); PlayerEnter(game, player1.Object, nickname); PlayerEnter(game, player2.Object, nickname); player1.VerifyAll(); player2.VerifyAll(); }