private void TestPacketScopes(Client client) { _ = Task.Run(async() => { using (var scope = new ClientPacketScope(new Client[] { client })) { await Task.Delay(500); client.SendPacket(new ChatEchoPacket(this.root.Id, "After 500 #1", Color.White)); await Task.Delay(500); client.SendPacket(new ChatEchoPacket(this.root.Id, "After 500 #2", Color.White)); } }); _ = Task.Run(async() => { using (var scope = new ClientPacketScope(new Client[] { })) { for (int i = 0; i < 10; i++) { await Task.Delay(100); client.SendPacket(new ChatEchoPacket(this.root.Id, $"After 100 #{i + 1}", Color.White)); } } }); }
public void ClientOutOfScope_DoesNotSendPacket() { var server = new TestingServer(); var player = server.AddFakePlayer(); using var scope = new ClientPacketScope(Array.Empty <IClient>()); player.Client.SendPacket(new SetElementModelRpcPacket(player.Id, 0)); server.VerifyPacketSent(Packets.Enums.PacketId.PACKET_ID_LUA_ELEMENT_RPC, player, count: 0); }
public void ClientInScope_SendsPacket() { var server = new TestingServer(); var player = server.AddFakePlayer(); using var scope = new ClientPacketScope(new IClient[] { player.Client }); player.Client.SendPacket(new SetElementModelRpcPacket(player.Id, 0)); server.VerifyPacketSent(Packets.Enums.PacketId.PACKET_ID_LUA_ELEMENT_RPC, player); }
public void ClientOutOfScope_DoesNotSendPacket() { var server = new TestingServer(); var player = server.AddFakePlayer(); using var scope = new ClientPacketScope(Array.Empty <Client>()); player.Client.SendPacket(new SetElementModelRpcPacket(player.Id, 0)); server.NetWrapperMock.Verify(x => x.SendPacket( player.Address, It.IsAny <ushort>(), It.IsAny <SetElementModelRpcPacket>() ), Times.Never); }
public void ClientInScope_SendsPacket() { var server = new TestingServer(); var player = server.AddFakePlayer(); using var scope = new ClientPacketScope(new Client[] { player.Client }); player.Client.SendPacket(new SetElementModelRpcPacket(player.Id, 0)); server.NetWrapperMock.Verify(x => x.SendPacket( player.Address, It.IsAny <ushort>(), It.IsAny <SetElementModelRpcPacket>() ), Times.Once); }
public async Task AsyncScopes_DoNotInterfere() { var server = new TestingServer(); var player = server.AddFakePlayer(); await Task.WhenAll(new Task[] { Task.Run(async() => { await Task.Delay(10); using var scope = new ClientPacketScope(new Client[] { player.Client }); player.Client.SendPacket(new SetElementModelRpcPacket(player.Id, 1)); await Task.Delay(25); }), Task.Run(async() => { using var scope = new ClientPacketScope(Array.Empty <Client>()); await Task.Delay(25); player.Client.SendPacket(new SetElementModelRpcPacket(player.Id, 2)); }) });