< Summary

Information
Class: Rudim.Program
Assembly: Rudim
File(s): /home/runner/work/rudim/rudim/Rudim/Program.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 28
Coverable lines: 28
Total lines: 100
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 10
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
Main(...)0%110100%

File(s)

/home/runner/work/rudim/rudim/Rudim/Program.cs

#LineLine coverage
 1using BenchmarkDotNet.Attributes;
 2using BenchmarkDotNet.Running;
 3using Rudim.Board;
 4using Rudim.CLI;
 5using Rudim.Common;
 6using Rudim.Perft;
 7using System.Collections.Generic;
 8using System.Diagnostics.CodeAnalysis;
 9using System.Threading;
 10
 11namespace Rudim
 12{
 13    class Program
 14    {
 15        static void Main(string[] args)
 16        {
 017            if (args.Length >= 1 && args[0] == "--benchmark")
 18            {
 019                BenchmarkRunner.Run<Benchmark>();
 20            }
 021            else if (args.Length >= 1 && args[0] == "--perft")
 22            {
 23
 024                List<PerftData> data = new List<PerftData> {
 025                     new(0, 1, Helpers.StartingFEN),
 026                     new(1, 20, Helpers.StartingFEN),
 027                     new(2, 400, Helpers.StartingFEN),
 028                     new(3, 8_902, Helpers.StartingFEN),
 029                     new(4, 197_281, Helpers.StartingFEN),
 030                     new(5, 4_865_609, Helpers.StartingFEN),
 031                     new(6, 119_060_324, Helpers.StartingFEN),
 032                     new(1, 48, Helpers.KiwiPeteFEN),
 033                     new(2, 2_039, Helpers.KiwiPeteFEN),
 034                     new(3, 97_862, Helpers.KiwiPeteFEN),
 035                     new(4, 4_085_603, Helpers.KiwiPeteFEN),
 036                     new(5, 193_690_690, Helpers.KiwiPeteFEN),
 037                     new(1, 14, Helpers.EndgameFEN),
 038                     new(2, 191, Helpers.EndgameFEN),
 039                     new(3, 2_812, Helpers.EndgameFEN),
 040                     new(4, 43_238, Helpers.EndgameFEN),
 041                     new(5, 674_624, Helpers.EndgameFEN),
 042                     new(6, 11_030_083, Helpers.EndgameFEN),
 043                     new(7, 178_633_661, Helpers.EndgameFEN),
 044                };
 045                foreach (PerftData item in data)
 46                {
 047                    PerftTest.Perft(item.Depth, item.Nodes, item.Position);
 48                }
 49            }
 50            else
 51            {
 052                CliClient.Run();
 53            }
 054        }
 55    }
 56
 57    [ExcludeFromCodeCoverage]
 58    internal class PerftData
 59    {
 60        public int Depth { get; set; }
 61
 62        public ulong Nodes { get; set; }
 63
 64        public string Position { get; set; }
 65
 66        public PerftData(int depth, ulong nodes, string position)
 67        {
 68            Depth = depth;
 69            Nodes = nodes;
 70            Position = position;
 71
 72        }
 73    }
 74
 75    [ExcludeFromCodeCoverage]
 76    [MemoryDiagnoser]
 77    public class Benchmark
 78    {
 79        [Benchmark]
 80        [ArgumentsSource(nameof(GenerateBenchmarks))]
 81        public void BenchmarkBestMove(BoardState boardState, int depth, CancellationToken cancellationToken)
 82        {
 83            Global.Reset();
 84            bool debugMode = false;
 85            boardState.FindBestMove(depth, cancellationToken, ref debugMode);
 86        }
 87
 88        public IEnumerable<object[]> GenerateBenchmarks()
 89        {
 90            yield return [BoardState.ParseFEN(Helpers.AdvancedMoveFEN), 6, new CancellationToken(false)];
 91            yield return [BoardState.ParseFEN(Helpers.AdvancedMoveFEN), 7, new CancellationToken(false)];
 92            yield return [BoardState.ParseFEN(Helpers.StartingFEN), 6, new CancellationToken(false)];
 93            yield return [BoardState.ParseFEN(Helpers.StartingFEN), 7, new CancellationToken(false)];
 94            yield return [BoardState.ParseFEN(Helpers.EndgameFEN), 6, new CancellationToken(false)];
 95            yield return [BoardState.ParseFEN(Helpers.EndgameFEN), 7, new CancellationToken(false)];
 96            yield return [BoardState.ParseFEN(Helpers.KiwiPeteFEN), 6, new CancellationToken(false)];
 97            yield return [BoardState.ParseFEN(Helpers.KiwiPeteFEN), 7, new CancellationToken(false)];
 98        }
 99    }
 100}

Methods/Properties

Main(System.String[])