public void Integration_CamelRunner_Step_0() { var runner = new CamelRunner(seed: 1); runner.AddPlayer(new RandomBot(1, seed: 2)); runner.AddPlayer(new RandomBot(2, seed: 3)); var game = runner.ComputeNewGame(steps: 0); var players = runner.GetPlayers(); var gameState = game.GameState; Assert.AreEqual(2, runner.GetPlayers().Count(), "players"); Assert.AreEqual(16, gameState.BoardSize, "board"); Assert.AreEqual(5, gameState.Camels.Count, "camels"); Assert.AreEqual("0,0 0,1 1,2 1,3 1,4", gameState.CamelPositionToString(), "Camel positions"); var camelOrder = gameState.GetLeadingOrder(); Assert.AreEqual(CamelColor.Yellow, camelOrder.Skip(0).First(), "camel 0"); Assert.AreEqual(CamelColor.Red, camelOrder.Skip(1).First(), "camel 1"); Assert.AreEqual(CamelColor.Green, camelOrder.Skip(2).First(), "camel 2"); Assert.AreEqual(CamelColor.White, camelOrder.Skip(3).First(), "camel 3"); Assert.AreEqual(CamelColor.Blue, camelOrder.Skip(4).First(), "camel 4"); Assert.AreEqual(0, game.StartingPlayer, "starting player"); Assert.AreEqual(0, game.CurrentPlayer, "current player"); Assert.AreEqual(3, gameState.Money[0], "player 0 money"); Assert.AreEqual(3, gameState.Money[1], "player 1 money"); Assert.AreEqual(1, players[0].Wins, "player 0 wins"); Assert.AreEqual(1, players[1].Wins, "player 1 wins"); }
private static void RunBenchmark(string[] args) { var runner = new CamelRunner(timeScalingFactor: TimeScalingFactor); runner.AddPlayer(new DiceThrower()); runner.AddPlayer(new IllegalBot()); runner.AddPlayer(new RandomBot()); var history = runner.GetPlayers().ToDictionary(x => x, x => new List <TimeSpan>()); for (var i = 0; i < 250; i++) { runner.ComputeNewGame(); Console.WriteLine($"Game #{i} finished"); foreach (var player in runner.GetPlayers()) { history[player].Add(player.ComputationTime); } } runner.Save(); var players = runner.GetPlayers(); var title = "Player"; Console.WriteLine($"{title,-32} Wins"); foreach (var player in players.OrderByDescending(x => x.Wins)) { var avgTime = history[player].Average(x => x.TotalSeconds); Console.WriteLine($"{player.Name,-32} {player.Wins, -6} {avgTime:0.000}s"); } }
public void Interface_Call_Save() { var bot = GetTestBot(); var runner = new CamelRunner(seed: 1); runner.AddPlayer(new RandomBot(1, seed: 2)); runner.AddPlayer(bot); runner.ComputeNewGame(steps: 0); runner.Save(); Assert.AreEqual(1, bot.CalledSave, "save"); }
public void Interface_Call_Twice() { var bot = GetTestBot(); var runner = new CamelRunner(seed: 1); runner.AddPlayer(new RandomBot(1, seed: 2)); runner.AddPlayer(bot); var game = runner.ComputeNewGame(steps: 2); Assert.AreEqual(1, bot.CalledPlayerName, "player name"); Assert.AreEqual(1, bot.CalledLoad, "load"); Assert.AreEqual(1, bot.CalledStart, "start"); Assert.AreEqual(1, bot.CalledAction, "action"); Assert.AreEqual(2, bot.CalledInform, "inform"); Assert.AreEqual(0, bot.CalledSave, "save"); Assert.AreEqual(0, bot.CalledWinners, "winners"); }
public void Interface_Start() { var bot = GetTestBot(); var runner = new CamelRunner(seed: 1); runner.AddPlayer(new RandomBot(1, seed: 2)); runner.AddPlayer(bot); var game = runner.ComputeNewGame(steps: 0); Assert.AreEqual("RandomBot #1", bot.GameInfo.Players[1], "name"); Assert.AreEqual("TestBot", bot.GameInfo.Players[0], "name"); Assert.AreEqual(0, bot.PlayerNum, "testbot order"); Assert.AreEqual(1, bot.CalledPlayerName, "player name"); Assert.AreEqual(1, bot.CalledLoad, "load"); Assert.AreEqual(1, bot.CalledStart, "start"); Assert.AreEqual(0, bot.CalledAction, "action"); Assert.AreEqual(0, bot.CalledInform, "inform"); Assert.AreEqual(0, bot.CalledSave, "save"); Assert.AreEqual(0, bot.CalledWinners, "winners"); }