コード例 #1
0
        public void GameTooShortTest(TestFixture fixture, Game game, IPgnManager manager)
        {
            "GIVEN a game with less than 15 moves".x(() =>
            {
                fixture = new TestFixture();

                game = new Game(new Metadata(), fixture.PgnWithLessThan15Moves);
                fixture.FakeReader.ReadGame(Arg.Invoke(game));
            });

            "AND the game is not duplicated".x(() =>
            {
                fixture.FakeRepo.IsDuplicated(game).Returns(false);
            });

            "WHEN the game is processed".x(() =>
            {
                manager = new PgnManager(fixture.FakeReader, fixture.FakeWriter, fixture.FakeRepo, fixture.FakeLogger);
                manager.ExecuteCheckingForDuplicates(g => { });
            });

            "THEN the game is not written".x(() =>
            {
                fixture.FakeWriter.DidNotReceive().WriteGame(Arg.Is(game));
            });

            "AND the game is not stored in the database".x(() =>
            {
                fixture.FakeRepo.DidNotReceive().Save(Arg.Is(game));
            });
        }
コード例 #2
0
        public void WrongResultNotationTest(IReadPgnFiles reader, IWritePgnFiles writer)
        {
            "GIVEN a single file with wrong result notation".x(() =>
            {
                reader = new PgnReader(TestFixture.FolderWithOneFileWrongNotation);
                writer = new PgnWriter(TestFixture.PathResultedPgn);
            });

            "WHEN the file is read".x(() =>
            {
                var manager = new PgnManager(reader, writer, TestFixture.FakeRepo, TestFixture.FakeLogger);
                manager.ExecuteCheckingForDuplicates(g => { });
            });

            "THEN the new file created contains two games".x(() =>
            {
                TestFixture.ContentOfResultedPgn.ShouldBe(TestFixture.ContentOfWrongResultGames);
            });
        }
コード例 #3
0
        public void OneGameTest(IReadPgnFiles reader, IWritePgnFiles writer)
        {
            "GIVEN a single file with one game".x(() =>
            {
                reader = new PgnReader(TestFixture.FolderWithOneFileOneGame);
                writer = new PgnWriter(TestFixture.PathResultedPgn);
            });

            "WHEN the file is read".x(() =>
            {
                var manager = new PgnManager(reader, writer, TestFixture.FakeRepo, TestFixture.FakeLogger);
                manager.ExecuteCheckingForDuplicates(g => { });
            });

            "THEN the new file created contains one game".x(() =>
            {
                TestFixture.ContentOfResultedPgn.ShouldBe(TestFixture.ContentOfExpectedOneGame);
            });
        }
コード例 #4
0
 private void convertPGNToInfinityChessDatabaseicdToolStripMenuItem_Click(object sender, EventArgs e)
 {
     pgn = new PgnManager(this.Game);
     pgn.OnProgressBarInitialized += new PgnManager.ProgressBarInitHandler(pgn_OnProgressBarInitialized);
     pgn.OnProgressChanged        += new PgnManager.ProgressChangedEventHandler(pgn_OnProgressChanged);
     pgn.OnProgressWorkCompleted  += new PgnManager.ProgressWorkCompletedHandler(pgn_OnProgressWorkCompleted);
     fileName = txtFile.Text;
     if (isPgnToIcbConversion)
     {
         pgn.isPgnToIcbConversion = true;
         UFile.Delete(fileName.Replace(".pgn", ".icb"));
     }
     else
     {
         UFile.Delete(fileName.Replace(".pgn", ".icd"));
     }
     pgn.ConvertPgnToIcd(fileName);
     isPgnToIcbConversion = false;
 }
コード例 #5
0
        public void TwoNestedFilesTest(IReadPgnFiles reader, IWritePgnFiles writer)
        {
            "GIVEN a folder with two nested files where each file contains one game".x(() =>
            {
                reader = new PgnReader(TestFixture.FolderWithNestedFiles);
                writer = new PgnWriter(TestFixture.PathResultedPgn);
            });

            "WHEN the files are read".x(() =>
            {
                var manager = new PgnManager(reader, writer, TestFixture.FakeRepo, TestFixture.FakeLogger);
                manager.ExecuteCheckingForDuplicates(g => { });
            });

            "THEN the new file created contains two games".x(() =>
            {
                TestFixture.ContentOfResultedPgn.ShouldBe(TestFixture.ContentOfExpectedTwoGames);
            });
        }
コード例 #6
0
        static void Main(string[] args)
        {
            _start = DateTime.UtcNow;

            var reader = new PgnReader(@"C:\Chess\PNGSources");
            var writer = new PgnWriter(@"C:\Chess\Databases\db2018.pgn");
            var repo   = new GameRepository(@"Data Source=LENOVO-PC;Initial Catalog=PlayGrandmasters;Integrated Security=True");
            var logger = new Logger(@"C:\Chess\Databases\logs");

            var manager = new PgnManager(reader, writer, repo, logger);

            int counter = 0;

            manager.ExecuteWithoutCheckingForDuplicates(game =>
            {
                counter++;

                string moves;

                if (game.Moves.Length >= 40)
                {
                    moves = game.Moves.Substring(game.Moves.Length - 40);
                }
                else
                {
                    moves = game.Moves;
                }

                Console.WriteLine($"{counter} = {game.Hash}: {moves}");
            });

            _end = DateTime.UtcNow;

            Console.WriteLine($"Duration: {_end - _start}");
            Console.Read();
        }