public async Task GetBestPlayers_DoesNotCountPlayersWithoutDeaths() { var time = DateTime.Now; var data = new ServerInfoEntry { Endpoint = "GetBestPlayers_DoesNotCountPlayersWithoutDeaths", Name = "Test", GameModes = new List <StringEntry> { new StringEntry { String = "DM" }, new StringEntry { String = "TDM" } } }; var match = new MatchInfoEntry { Map = "1", GameMode = "2", FragLimit = 20, TimeLimit = 300, TimeElapsed = 25, Scoreboard = new List <ScoreEntry> { new ScoreEntry { Name = "GetBestPlayers_DoesNotCountPlayersWithoutDeaths1", Deaths = 0, Frags = 2, Kills = 20 }, new ScoreEntry { Name = "GetBestPlayers_DoesNotCountPlayersWithoutDeaths2", Deaths = 0, Frags = 20, Kills = 2 } } }; await statistics.PutServerInfo(data.Endpoint, new ServerInfoEntry { Name = data.Name, GameModes = data.GameModes }); await statistics.PutMatchInfo(data.Endpoint, time, match); new GameStatistics().GetBestPlayers(50).Result.Should().BeEmpty(); }
public async Task PutServerInfo(string endpoint, ServerInfoEntry infoEntry) { await Task.Run(() => { infoEntry.Endpoint = endpoint; var entry = databaseContext.Servers.Find(endpoint); lock (databaseContext) { if (entry != null) { databaseContext.StringEntries.RemoveRange(entry.GameModes); databaseContext.Servers.Remove(entry); } databaseContext.Servers.Add(infoEntry); databaseContext.SaveChanges(); } }); }
public async Task PutServerInfo_SavesInfo() { Console.WriteLine(Directory.GetCurrentDirectory()); var endpoint = "PutServerInfo_SavesInfo"; var data = new ServerInfoEntry { Name = "Test", GameModes = new List <StringEntry> { new StringEntry { String = "DM" } } }; await statistics.PutServerInfo(endpoint, data); using (var databaseContext = new DatabaseContext()) { var result = databaseContext.Servers.Find(endpoint); result.ShouldBeEquivalentTo(data, o => o.Excluding(x => x.SelectedMemberPath.EndsWith("Id"))); } }
public async Task PutServerInfo_ResavesInfo() { var endpoint = "PutServerInfo_SavesInfo"; var newData = new ServerInfoEntry { Name = "NewName", GameModes = new List <StringEntry> { new StringEntry { String = "TM" }, new StringEntry { String = "TDM" } } }; await statistics.PutServerInfo(endpoint, newData); using (var databaseContext = new DatabaseContext()) { var result = databaseContext.Servers.Find(endpoint); result.ShouldBeEquivalentTo(newData, o => o.Excluding(x => x.SelectedMemberPath.EndsWith("Id"))); } }
public ServerInfo(ServerInfoEntry entry) { Name = entry.Name; GameModes = entry.GameModes.Select(x => x.String).ToList(); }
public async Task GetPopularServers_ReturnsCorrectStatistics() { var date = DateTime.Now.Date; var server = new ServerInfoEntry { Endpoint = "GetPopularServers_ReturnsCorrectStatistics1", Name = "Server1", GameModes = new List <StringEntry> { new StringEntry { String = "DM" }, new StringEntry { String = "TDM" } } }; var expected = new List <PopularServerEntry> { new PopularServerEntry { Endpoint = "GetBestPlayers_ReturnsCorrectStatistics", Name = "Test", AverageMatchesPerDay = 20 }, new PopularServerEntry { Endpoint = "GetPopularServers_ReturnsCorrectStatistics1", Name = "Server1", AverageMatchesPerDay = 15 } }; await statistics.PutServerInfo(server.Endpoint, new ServerInfoEntry { Name = server.Name, GameModes = server.GameModes }); for (var i = 0; i < 15; i++) { await statistics.PutMatchInfo(server.Endpoint, date + TimeSpan.FromHours(i), new MatchInfoEntry { Map = "1", GameMode = "2", FragLimit = 20, TimeLimit = 300, TimeElapsed = 25, Scoreboard = new List <ScoreEntry> { new ScoreEntry { Name = "GetPopularServers_ReturnsCorrectStatistics1", Deaths = 1, Frags = 2, Kills = 20 }, new ScoreEntry { Name = "GetPopularServers_ReturnsCorrectStatistics2", Deaths = 1, Frags = 20, Kills = 2 } } }); } var result = statistics.GetPopularServers(2).Result.ToList(); result.Count.ShouldBeEquivalentTo(expected.Count); for (var i = 0; i < expected.Count; i++) { result[i].ShouldBeEquivalentTo(expected[i]); } }
public async Task GetBestPlayers_ReturnsCorrectStatistics() { var date = DateTime.Now.Date; var data = new ServerInfoEntry { Endpoint = "GetBestPlayers_ReturnsCorrectStatistics", Name = "Test", GameModes = new List <StringEntry> { new StringEntry { String = "DM" }, new StringEntry { String = "TDM" } } }; var expected = new List <BestPlayerEntry> { new BestPlayerEntry { Name = "GetBestPlayers_ReturnsCorrectStatistics1", KillToDeathRatio = 20 / 4.0 }, new BestPlayerEntry { Name = "GetBestPlayers_ReturnsCorrectStatistics2", KillToDeathRatio = 2 / 20.0 } }; await statistics.PutServerInfo(data.Endpoint, new ServerInfoEntry { Name = data.Name, GameModes = data.GameModes }); for (var i = 0; i < 20; i++) { var timestamp = date + TimeSpan.FromHours(i); await statistics.PutMatchInfo(data.Endpoint, timestamp, new MatchInfoEntry { Map = "1", GameMode = "2", FragLimit = 20, TimeLimit = 300, TimeElapsed = 25, Scoreboard = new List <ScoreEntry> { new ScoreEntry { Name = "GetBestPlayers_ReturnsCorrectStatistics1", Deaths = 4, Frags = 2, Kills = 20 }, new ScoreEntry { Name = "GetBestPlayers_ReturnsCorrectStatistics2", Deaths = 20, Frags = 20, Kills = 2 } } }); } var result = statistics.GetBestPlayers(2).Result.ToList(); result.Count.ShouldBeEquivalentTo(expected.Count); for (var i = 0; i < expected.Count; i++) { result[i].ShouldBeEquivalentTo(expected[i]); } }
public ServersInfo(ServerInfoEntry serverInfoEntry) { Endpoint = serverInfoEntry.Endpoint; Info = new ServerInfo(serverInfoEntry); }