Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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();
        }
Beispiel #5
0
        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);
        }