Beispiel #1
0
        public async Task GetPlayerStatistics_ReturnsCorrectStatistics()
        {
            var servers = new[]
            {
                new ServerInfoEntry
                {
                    Endpoint  = "Server1",
                    Name      = "Test",
                    GameModes =
                        new List <StringEntry> {
                        new StringEntry {
                            String = "DM"
                        }, new StringEntry {
                            String = "TDM"
                        }
                    }
                },
                new ServerInfoEntry
                {
                    Endpoint  = "Server2",
                    Name      = "Test",
                    GameModes =
                        new List <StringEntry> {
                        new StringEntry {
                            String = "DM"
                        }, new StringEntry {
                            String = "TDM"
                        }
                    }
                }
            };
            var matches = new[]
            {
                new MatchInfoEntry
                {
                    Endpoint    = "Server1",
                    Timestamp   = DateTime.Today,
                    Map         = "NewMap",
                    GameMode    = "DM",
                    FragLimit   = 200,
                    TimeLimit   = 200,
                    TimeElapsed = 152.9,
                    Scoreboard  = new List <ScoreEntry>
                    {
                        new ScoreEntry {
                            Name = "Player1", Frags = 15, Kills = 6, Deaths = 3
                        },
                        new ScoreEntry {
                            Name = "Player2", Frags = 2, Kills = 2, Deaths = 21
                        }
                    }
                },
                new MatchInfoEntry
                {
                    Endpoint    = "Server2",
                    Timestamp   = DateTime.UtcNow.Date + TimeSpan.FromDays(3),
                    Map         = "NewMap",
                    GameMode    = "TDM",
                    FragLimit   = 200,
                    TimeLimit   = 200,
                    TimeElapsed = 152.9,
                    Scoreboard  = new List <ScoreEntry>
                    {
                        new ScoreEntry {
                            Name = "Player3", Frags = 33, Kills = 2, Deaths = 3
                        },
                        new ScoreEntry {
                            Name = "Player1", Frags = 12, Kills = 6, Deaths = 21
                        },
                        new ScoreEntry {
                            Name = "Player5", Frags = 1, Kills = 3, Deaths = 21
                        }
                    }
                },
                new MatchInfoEntry
                {
                    Endpoint    = "PutServerInfo_SavesInfo",
                    Timestamp   = DateTime.UtcNow.Date + TimeSpan.FromDays(3),
                    Map         = "NewMap",
                    GameMode    = "TDM",
                    FragLimit   = 200,
                    TimeLimit   = 200,
                    TimeElapsed = 152.9,
                    Scoreboard  = new List <ScoreEntry>
                    {
                        new ScoreEntry {
                            Name = "Player3", Frags = 33, Kills = 2, Deaths = 3
                        },
                        new ScoreEntry {
                            Name = "Player4", Frags = 12, Kills = 6, Deaths = 21
                        },
                        new ScoreEntry {
                            Name = "Player6", Frags = 12, Kills = 6, Deaths = 24
                        },
                        new ScoreEntry {
                            Name = "Player5", Frags = 1, Kills = 3, Deaths = 21
                        }
                    }
                }
            };
            var expected = new PlayerStatisticsEntry
            {
                TotalMatchesPlayed       = 3,
                TotalMatchesWon          = 2,
                FavoriteServer           = "PutServerInfo_SavesInfo",
                UniqueServers            = 3,
                FavoriteGameMode         = "TM",
                AverageScoreboardPercent = (100 + 100 + 50) / 3.0,
                MaximumMatchesPerDay     = 1,
                AverageMatchesPerDay     = 3 / 6.0,
                KillToDeathRatio         = 33.0 / 27
            };

            foreach (var server in servers)
            {
                await statistics.PutServerInfo(server.Endpoint,
                                               new ServerInfoEntry { Name = server.Name, GameModes = server.GameModes });
            }
            foreach (var match in matches)
            {
                await statistics.PutMatchInfo(match.Endpoint, match.Timestamp, match);
            }
            var result = statistics.GetPlayerStatistics("Player1").Result;

            result.ShouldBeEquivalentTo(expected, o =>
            {
                o.Excluding(x => x.LastMatchPlayed);
                return(o);
            });
        }
Beispiel #2
0
 public async Task <PlayerStatistics> GetPlayerStatisctics(string name)
 {
     return(await statistics.GetPlayerStatistics(name));
 }