/// <summary>
 /// Обновляет топ-5 самых используемых игровых режимов
 /// </summary>
 /// <param name="info">Информация о матче</param>
 /// <param name="stats">Статистика сервера</param>
 /// <returns>Новый список топ-5</returns>
 private List <string> GetTop5Modes(MatchInfo info, ServerStats stats)
 {
     return(Top5GameModes.ToList().UpdateTop(5,
                                             m => stats.GameModeFrequency[m],
                                             m => m,
                                             info.GameMode).ToList());
 }
 protected bool Equals(ServerStat other)
 {
     return(TotalMatchesPlayed == other.TotalMatchesPlayed &&
            MaximumMatchesPerDay == other.MaximumMatchesPerDay &&
            AverageMatchesPerDay == other.AverageMatchesPerDay &&
            MaximumPopulation == other.MaximumPopulation &&
            AveragePopulation == other.AveragePopulation &&
            (Top5GameModes?.SequenceEqual(other.Top5GameModes) ?? false) &&
            (Top5Maps?.SequenceEqual(other.Top5Maps) ?? false));
 }
 public override int GetHashCode()
 {
     unchecked
     {
         var hashCode = TotalMatchesPlayed;
         hashCode = (hashCode * 397) ^ MaximumMatchesPerDay;
         hashCode = (hashCode * 397) ^ AverageMatchesPerDay.GetHashCode();
         hashCode = (hashCode * 397) ^ MaximumPopulation;
         hashCode = (hashCode * 397) ^ AveragePopulation.GetHashCode();
         hashCode = (hashCode * 397) ^ (Top5GameModes?.GetHashCode() ?? 0);
         hashCode = (hashCode * 397) ^ (Top5Maps?.GetHashCode() ?? 0);
         return(hashCode);
     }
 }
        public void CorrectlyCalculateTop5GameModes_WhenAdded()
        {
            var matchData = new MatchData("localhost-8081", _dateTime2,
                                          JsonConvert.DeserializeObject <MatchInfo>(_matchInfo2));
            var stat = new Top5GameModes();

            for (var i = 0; i < 7; i++)
            {
                for (var j = i; j < 7; j++)
                {
                    matchData.Results.GameMode = j.ToString();
                    stat.Add(matchData, "player1");
                }
            }
            stat.Get(_dict);
            Assert.AreEqual((string)_dict["top5GameModes"], "[\"6\",\"5\",\"4\",\"3\",\"2\"]");
        }