public void TestMapPoolIdenticalNamesDifferentGameModes() { var state = new ProtocolState(); state.MapPool.TryAdd("gamemode1/map1", new MapModel() { Name = "map1", GameMode = new GameModeModel() { Name = "gamemode1" }, FriendlyName = "First Map" }); state.MapPool.TryAdd("gamemode2/map1", new MapModel() { Name = "map1", GameMode = new GameModeModel() { Name = "gamemode2" }, FriendlyName = "Second Map" }); var segment = new ProtocolStateSegment() { MapPool = new ConcurrentDictionary<String, MapModel>() }; segment.MapPool.TryAdd("gamemode1/map1", new MapModel() { Name = "map1", GameMode = new GameModeModel() { Name = "gamemode1" }, FriendlyName = "First Map" }); state.Removed(segment); Assert.AreEqual(1, state.MapPool.Count); Assert.AreEqual("Second Map", state.MapPool.First().Value.FriendlyName); }
public void TestGroupPoolModifiedAndGroupPoolInserted() { var state = new ProtocolState(); state.Groups.TryAdd("Team/1", new GroupModel() { Uid = "1", Type = GroupModel.Team, FriendlyName = "Boring Group 1" }); var segment = new ProtocolStateSegment() { Groups = new ConcurrentDictionary<String, GroupModel>() }; segment.Groups.TryAdd("Team/1", new GroupModel() { Uid = "1", Type = GroupModel.Team, FriendlyName = "Fun Group 1" }); segment.Groups.TryAdd("Team/2", new GroupModel() { Uid = "2", Type = GroupModel.Team, FriendlyName = "Fun Group 2" }); state.Modified(segment); Assert.AreEqual(2, state.Groups.Count); Assert.AreEqual("Fun Group 1", state.Groups["Team/1"].FriendlyName); Assert.AreEqual("Fun Group 2", state.Groups["Team/2"].FriendlyName); }
public void TestGameModePoolModifiedAndGameModePoolInserted() { var state = new ProtocolState(); state.GameModePool.TryAdd("gamemode1", new GameModeModel() { Name = "gamemode 1", FriendlyName = "Boring GameMode 1" }); var segment = new ProtocolStateSegment() { GameModePool = new ConcurrentDictionary<String, GameModeModel>() }; segment.GameModePool.TryAdd("gamemode1", new GameModeModel() { Name = "gamemode 1", FriendlyName = "Fun GameMode 1" }); segment.GameModePool.TryAdd("gamemode2", new GameModeModel() { Name = "gamemode 2", FriendlyName = "Fun GameMode 2" }); state.Set(segment); Assert.AreEqual(2, state.GameModePool.Count); Assert.AreEqual("Fun GameMode 1", state.GameModePool["gamemode1"].FriendlyName); Assert.AreEqual("Fun GameMode 2", state.GameModePool["gamemode2"].FriendlyName); }
public void TestSingleGameModePoolRemoved() { var state = new ProtocolState(); state.GameModePool.TryAdd("gamemode1", new GameModeModel() { Name = "gamemode 1", FriendlyName = "Boring GameMode 1" }); state.GameModePool.TryAdd("gamemode2", new GameModeModel() { Name = "gamemode 2", FriendlyName = "Boring GameMode 2" }); var segment = new ProtocolStateSegment() { GameModePool = new ConcurrentDictionary<String, GameModeModel>() }; segment.GameModePool.TryAdd("gamemode1", new GameModeModel() { Name = "gamemode 1", FriendlyName = "Boring GameMode 1" }); state.Removed(segment); Assert.AreEqual(1, state.GameModePool.Count); Assert.AreEqual("Boring GameMode 2", state.GameModePool.First().Value.FriendlyName); }
public void TestSingleUidBansRemoved() { var state = new ProtocolState(); state.Bans.TryAdd("Permanent/Uid/1", new BanModel() { Scope = { Times = { new TimeSubsetModel() { Context = TimeSubsetContext.Permanent } }, Players = new List<PlayerModel>() { new PlayerModel() { Uid = "1", Score = 1 } } } }); state.Bans.TryAdd("Time/Uid/2", new BanModel() { Scope = { Times = { new TimeSubsetModel() { Context = TimeSubsetContext.Time } }, Players = new List<PlayerModel>() { new PlayerModel() { Uid = "2", Score = 2 } } } }); var segment = new ProtocolStateSegment() { Bans = new ConcurrentDictionary<String, BanModel>() }; segment.Bans.TryAdd("Permanent/Uid/1", new BanModel() { Scope = { Times = { new TimeSubsetModel() { Context = TimeSubsetContext.Permanent } }, Players = new List<PlayerModel>() { new PlayerModel() { Uid = "1", Score = 1 } } } }); state.Removed(segment); Assert.AreEqual(1, state.Bans.Count); Assert.AreEqual(TimeSubsetContext.Time, state.Bans.First().Value.Scope.Times.First().Context); }
public void TestSinglePlayersRemoved() { var state = new ProtocolState(); state.Players.TryAdd("1", new PlayerModel() { Uid = "1", Score = 1 }); state.Players.TryAdd("2", new PlayerModel() { Uid = "2", Score = 2 }); var segment = new ProtocolStateSegment() { Players = new ConcurrentDictionary<String, PlayerModel>() }; segment.Players.TryAdd("1", new PlayerModel() { Uid = "1", Score = 1 }); state.Removed(segment); Assert.AreEqual(1, state.Players.Count); Assert.AreEqual(2, state.Players.First().Value.Score); }
public void TestSingleMapsRemoved() { var state = new ProtocolState(); state.Maps.TryAdd("gamemode1/map1", new MapModel() { Name = "map1", GameMode = new GameModeModel() { Name = "gamemode1" }, FriendlyName = "Boring Map 1" }); state.Maps.TryAdd("gamemode2/map2", new MapModel() { Name = "map2", GameMode = new GameModeModel() { Name = "gamemode2" }, FriendlyName = "Boring Map 2" }); var segment = new ProtocolStateSegment() { Maps = new ConcurrentDictionary<String, MapModel>() }; segment.Maps.TryAdd("gamemode1/map1", new MapModel() { Name = "map1", GameMode = new GameModeModel() { Name = "gamemode1" }, FriendlyName = "Boring Map 1" }); state.Removed(segment); Assert.AreEqual(1, state.Maps.Count); Assert.AreEqual("Boring Map 2", state.Maps.First().Value.FriendlyName); }
public void TestSingleItemPoolRemoved() { var state = new ProtocolState(); state.Items.TryAdd("1", new ItemModel() { Name = "1", FriendlyName = "Boring Item 1" }); state.Items.TryAdd("2", new ItemModel() { Name = "2", FriendlyName = "Boring Item 2" }); var segment = new ProtocolStateSegment() { Items = new ConcurrentDictionary<String, ItemModel>() }; segment.Items.TryAdd("1", new ItemModel() { Name = "1", FriendlyName = "Boring Item 1" }); state.Removed(segment); Assert.AreEqual(1, state.Items.Count); Assert.AreEqual("Boring Item 2", state.Items.First().Value.FriendlyName); }
public void TestSingleGroupPoolRemoved() { var state = new ProtocolState(); state.Groups.TryAdd("Team/1", new GroupModel() { Uid = "1", Type = GroupModel.Team, FriendlyName = "Boring Group 1" }); state.Groups.TryAdd("Team/2", new GroupModel() { Uid = "2", Type = GroupModel.Team, FriendlyName = "Boring Group 2" }); var segment = new ProtocolStateSegment() { Groups = new ConcurrentDictionary<String, GroupModel>() }; segment.Groups.TryAdd("Team/1", new GroupModel() { Uid = "1", Type = GroupModel.Team, FriendlyName = "Boring Group 1" }); state.Removed(segment); Assert.AreEqual(1, state.Groups.Count); Assert.AreEqual("Boring Group 2", state.Groups.First().Value.FriendlyName); }
public void TestIpBanModifiedAndIpBanInserted() { var state = new ProtocolState(); state.Bans.TryAdd("Permanent/Ip/1", new BanModel() { Scope = { Times = { new TimeSubsetModel() { Context = TimeSubsetContext.Permanent } }, Players = new List<PlayerModel>() { new PlayerModel() { Ip = "1", Score = 1 } } } }); var segment = new ProtocolStateSegment() { Bans = new ConcurrentDictionary<String, BanModel>() }; segment.Bans.TryAdd("Permanent/Ip/1", new BanModel() { Scope = { Times = { new TimeSubsetModel() { Context = TimeSubsetContext.Permanent } }, Players = new List<PlayerModel>() { new PlayerModel() { Ip = "1", Score = 3 } } } }); segment.Bans.TryAdd("Permanent/Ip/2", new BanModel() { Scope = { Times = { new TimeSubsetModel() { Context = TimeSubsetContext.Permanent } }, Players = new List<PlayerModel>() { new PlayerModel() { Ip = "2", Score = 4 } } } }); state.Modified(segment); Assert.AreEqual(2, state.Bans.Count); Assert.AreEqual(3, state.Bans.First(ban => ban.Key == "Permanent/Ip/1").Value.Scope.Players.First().Score); Assert.AreEqual(4, state.Bans.Last(ban => ban.Key == "Permanent/Ip/2").Value.Scope.Players.First().Score); }
public void TestTwoMapsIdenticalNamesDifferentGameModes() { var state = new ProtocolState(); state.Maps.TryAdd("gamemode1/map1", new MapModel() { Name = "map1", GameMode = new GameModeModel() { Name = "gamemode1" }, FriendlyName = "Boring Gamemode 1" }); state.Maps.TryAdd("gamemode2/map1", new MapModel() { Name = "map1", GameMode = new GameModeModel() { Name = "gamemode2" }, FriendlyName = "Boring Gamemode 2" }); var segment = new ProtocolStateSegment() { Maps = new ConcurrentDictionary<String, MapModel>() }; segment.Maps.TryAdd("gamemode1/map1", new MapModel() { Name = "map1", GameMode = new GameModeModel() { Name = "gamemode1" }, FriendlyName = "Fun First Map" }); segment.Maps.TryAdd("gamemode2/map1", new MapModel() { Name = "map1", GameMode = new GameModeModel() { Name = "gamemode2" }, FriendlyName = "Fun Second Map" }); state.Modified(segment); Assert.AreEqual(2, state.Maps.Count); Assert.AreEqual("Fun First Map", state.Maps.First(item => item.Value.Name == "map1" && item.Value.GameMode.Name == "gamemode1").Value.FriendlyName); Assert.AreEqual("Fun Second Map", state.Maps.First(item => item.Value.Name == "map1" && item.Value.GameMode.Name == "gamemode2").Value.FriendlyName); }
public void TestPlayerModifiedAndPlayerInserted() { var state = new ProtocolState(); state.Players.TryAdd("1", new PlayerModel() { Uid = "1", Score = 1 }); var segment = new ProtocolStateSegment() { Players = new ConcurrentDictionary<String, PlayerModel>() }; segment.Players.TryAdd("1", new PlayerModel() { Uid = "1", Score = 100 }); segment.Players.TryAdd("2", new PlayerModel() { Uid = "2", Score = 200 }); state.Modified(segment); Assert.AreEqual(2, state.Players.Count); Assert.AreEqual(100, state.Players.First(item => item.Value.Uid == "1").Value.Score); Assert.AreEqual(200, state.Players.First(item => item.Value.Uid == "2").Value.Score); }
public void TestMultipleMapsModified() { var state = new ProtocolState(); state.Maps.TryAdd("gamemode1/map1", new MapModel() { Name = "map1", GameMode = new GameModeModel() { Name = "gamemode1" }, FriendlyName = "Boring Map 1" }); state.Maps.TryAdd("gamemode2/map2", new MapModel() { Name = "map2", GameMode = new GameModeModel() { Name = "gamemode2" }, FriendlyName = "Boring Map 2" }); var segment = new ProtocolStateSegment() { Maps = new ConcurrentDictionary<String, MapModel>() }; segment.Maps.TryAdd("gamemode1/map1", new MapModel() { Name = "map1", GameMode = new GameModeModel() { Name = "gamemode1" }, FriendlyName = "Fun Map 1" }); segment.Maps.TryAdd("gamemode2/map2", new MapModel() { Name = "map2", GameMode = new GameModeModel() { Name = "gamemode2" }, FriendlyName = "Fun Map 2" }); state.Modified(segment); Assert.AreEqual(2, state.Maps.Count); Assert.AreEqual("Fun Map 1", state.Maps.First(item => item.Value.Name == "map1").Value.FriendlyName); Assert.AreEqual("Fun Map 2", state.Maps.First(item => item.Value.Name == "map2").Value.FriendlyName); }
public void TestMultipleItemPoolModified() { var state = new ProtocolState(); state.Items.TryAdd("1", new ItemModel() { Name = "1", FriendlyName = "Boring Item 1" }); state.Items.TryAdd("2", new ItemModel() { Name = "2", FriendlyName = "Boring Item 2" }); var segment = new ProtocolStateSegment() { Items = new ConcurrentDictionary<String, ItemModel>() }; segment.Items.TryAdd("1", new ItemModel() { Name = "1", FriendlyName = "Fun Item 1" }); segment.Items.TryAdd("2", new ItemModel() { Name = "2", FriendlyName = "Fun Item 2" }); state.Modified(segment); Assert.AreEqual(2, state.Items.Count); Assert.AreEqual("Fun Item 1", state.Items["1"].FriendlyName); Assert.AreEqual("Fun Item 2", state.Items["2"].FriendlyName); }
public void TestSingleNameBansSet() { var state = new ProtocolState(); state.Bans.TryAdd("Permanent/Name/1", new BanModel() { Scope = { Times = { new TimeSubsetModel() { Context = TimeSubsetContext.Permanent } }, Players = new List<PlayerModel>() { new PlayerModel() { Name = "1", Score = 1 } } } }); state.Bans.TryAdd("Time/Name/2", new BanModel() { Scope = { Times = { new TimeSubsetModel() { Context = TimeSubsetContext.Time } }, Players = new List<PlayerModel>() { new PlayerModel() { Name = "2", Score = 2 } } } }); var segment = new ProtocolStateSegment() { Bans = new ConcurrentDictionary<String, BanModel>() }; // Technically it would have an incorrect key, so next sync it would be // removed because it does not exist.. segment.Bans.TryAdd("Permanent/Name/1", new BanModel() { Scope = { Times = { new TimeSubsetModel() { Context = TimeSubsetContext.Time } }, Players = new List<PlayerModel>() { new PlayerModel() { Name = "1", Score = 1 } } } }); state.Set(segment); Assert.AreEqual(1, state.Bans.Count); Assert.AreEqual(TimeSubsetContext.Time, state.Bans.First().Value.Scope.Times.First().Context); }