public async void Run() { var scenario = this.configurationReader.ReadTournament(this.Name); int count; if (int.TryParse(this.gamesCount, out count)) { scenario.GamesCount = count; } var blackInstance = this.configurationReader.ReadBotInstance(scenario.BlackBot); var whiteInstance = this.configurationReader.ReadBotInstance(scenario.WhiteBot); BotKind blackKind = this.configurationReader.ReadBotKind(blackInstance.Kind); BotKind whiteKind = this.configurationReader.ReadBotKind(whiteInstance.Kind); for (var i = 0; i < scenario.GamesCount; i++) { this.taskResult = new TaskCompletionSource <GameResult>(); IGoBot blackBot = this.botFactory.CreateBotInstance(blackKind, blackInstance.Name); IGoBot whiteBot = this.botFactory.CreateBotInstance(whiteKind, whiteInstance.Name); blackBot.BoardSize = scenario.BoardSize; whiteBot.BoardSize = scenario.BoardSize; blackBot.Level = blackInstance.Level; whiteBot.Level = whiteInstance.Level; this.RunBotRunner(blackBot, whiteBot, scenario); this.OutputStatistic(await this.taskResult.Task, blackInstance.Name, whiteInstance.Name); } }
public void GoBotFactoryCreateBotInstanceTest() { var injector = new Mock <ISimpleInjectorWrapper>(); var fileService = new Mock <IFileService>(); fileService.Setup(s => s.FileExists("gnugo.exe")).Returns(() => true); fileService.Setup(s => s.PathCombine(It.IsAny <string>(), It.IsAny <string>())).Returns(() => "gnugo.exe"); injector.Setup(s => s.GetInstance <IFileService>()).Returns(() => fileService.Object); var processFactory = new Mock <IProcessManagerFactory>(); processFactory.Setup(s => s.Create(It.IsAny <string>(), It.IsAny <string>())).Returns(() => new Mock <IProcessManager>().Object); var confServ = new Mock <IConfigurationService>(); injector.Setup(s => s.GetInstance <IConfigurationService>()).Returns(() => confServ.Object); injector.Setup(s => s.GetInstance <IProcessManagerFactory>()).Returns(() => processFactory.Object); IGoBotFactory botFactory = new GoBotFactory(injector.Object); BotKind kind = new BotKind { FullClassName = "GoTournament.GnuGoBot", BinaryPath = "bot.exe" }; IGoBot result = botFactory.CreateBotInstance(kind, "superName"); Assert.NotNull(result); Assert.Equal("superName", result.Name); BotKind kind2 = new BotKind { FullClassName = "GoTournament.NotExistedGoBot", BinaryPath = "bot.exe" }; IGoBot result2 = botFactory.CreateBotInstance(kind2, "superName"); Assert.Null(result2); }
public static BotPlayer BuildBot(BotKind kind) { switch (kind) { case BotKind.Trivial: return(new TrivialBot()); case BotKind.Nibbler: return(new NibblerBot()); case BotKind.BrainTvs: return(new BrainTvsBot()); default: return(null); } }
public static void Main() { var minimumBoardSize = 4; var maximumBoardSize = 19; var minimumAiLevel = 1; var maximumAiLevel = 1; Console.WriteLine("Benchmark was started"); var listToCheck = (from difficulty in Enumerable.Range(minimumAiLevel, maximumAiLevel - minimumAiLevel + 1) from boardSize in Enumerable.Range(minimumBoardSize, maximumBoardSize - minimumBoardSize + 1) select BenchmarkSettings.Create(boardSize, difficulty, difficulty)).ToList(); var injector = Bootstrap(); var reader = injector.GetInstance <IConfigurationReader>(); botFactory = injector.GetInstance <IGoBotFactory>(); botKind = reader.ReadBotKind("GnuGo"); RunBenchmark(listToCheck); Console.ReadLine(); }
public IGoBot CreateBotInstance(BotKind kind, string botInstanceName) { Type type = Type.GetType(kind.FullClassName); if (type != null) { return((IGoBot)Activator.CreateInstance(type, this.simpleInjector, kind.BinaryPath, botInstanceName)); } foreach (var asm in AppDomain.CurrentDomain.GetAssemblies()) { type = asm.GetType(kind.FullClassName); if (type != null) { return((IGoBot)Activator.CreateInstance(type, kind.BinaryPath, botInstanceName)); } } return(null); }