using NUnit.Framework; using System; using System.Threading.Tasks; using LeanCloud.Realtime; using LeanCloud.Realtime.Internal.Protocol; namespace Realtime.Test { public class Throttle { private LCIMClient c1; private LCIMClient c2; private LCIMConversation conversation; [SetUp] public async Task SetUp() { Utils.SetUp(); c1 = new LCIMClient(Guid.NewGuid().ToString()); c2 = new LCIMClient(Guid.NewGuid().ToString()); await c1.Open(); await c2.Open(); conversation = await c1.CreateConversation(new string[] { Guid.NewGuid().ToString() }); } [TearDown] public async Task TearDown() { await c1.Close(); await c2.Close(); Utils.TearDown(); } [Test] public void Equality() { GenericCommand cmd1 = new GenericCommand { Cmd = CommandType.Session, Op = OpType.Open, PeerId = "hello", I = 1, SessionMessage = new SessionCommand { Code = 123 } }; GenericCommand cmd2 = new GenericCommand { Cmd = CommandType.Session, Op = OpType.Open, PeerId = "hello", I = 2, SessionMessage = new SessionCommand { Code = 123 } }; Assert.IsFalse(Equals(cmd1, cmd2)); cmd2.I = cmd1.I; Assert.IsTrue(Equals(cmd1, cmd2)); } [Test] public async Task RemoveMemberTwice() { Task t1 = conversation.RemoveMembers(new string[] { c2.Id }).ContinueWith(t => { Assert.IsTrue(t.IsCompleted && !t.IsFaulted); }); Task t2 = conversation.RemoveMembers(new string[] { c2.Id }).ContinueWith(t => { Assert.IsTrue(t.IsCompleted && !t.IsFaulted); }); await Task.WhenAll(t1, t2); } } }