Ejemplo n.º 1
0
        public async Task TestReceiveStreamAsyncProtectsToOneAtATime()
        {
            var source   = new CancellationTokenSource();
            var expected = new byte[] {
                0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8,
                0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8
            };
            var activeReceives = new ProtectedInt();
            var startCounts    = new List <int>();
            var endCounts      = new List <int>();

            mResult.SetupGet(m => m.MessageType).Returns(WebSocketMessageType.Binary);
            mResult.SetupGet(m => m.Count).Returns(16);
            mResult.SetupGet(m => m.EndOfMessage).Returns(true);
            mSocket.Setup(m => m.ReceiveAsync(It.IsAny <ArraySegment <byte> >(), source.Token))
            .Callback <ArraySegment <byte>, CancellationToken>(async(b, t) => {
                startCounts.Add(await activeReceives.IncrementAsync());
                Array.Copy(expected, b.Array, 16);
                Thread.Sleep(10);
                endCounts.Add(await activeReceives.DecrementAsync());
            })
            .Returns(Task.FromResult(mResult.Object));

            await Task.WhenAll(StartReceiveAsyncTasks(expected, source.Token));

            Assert.False(startCounts.Any(c => c != 1));
            Assert.False(endCounts.Any(c => c != 0));
        }
Ejemplo n.º 2
0
        public async Task TestSendStreamAsyncProtectsToOneAtATime()
        {
            var source      = new CancellationTokenSource();
            var activeSends = new ProtectedInt();
            var startCounts = new List <int>();
            var endCounts   = new List <int>();

            mSocket.Setup(m => m.SendAsync(It.IsAny <ArraySegment <byte> >(), WebSocketMessageType.Binary, true, source.Token))
            .Callback <ArraySegment <byte>, WebSocketMessageType, bool, CancellationToken>(async(b, t, f, token) => {
                startCounts.Add(await activeSends.IncrementAsync());
                Thread.Sleep(10);
                endCounts.Add(await activeSends.DecrementAsync());
            })
            .Returns(Task.FromResult(true));
            await Task.WhenAll(StartSendAsyncTasks(source.Token));

            Assert.False(startCounts.Any(c => c != 1));
            Assert.False(endCounts.Any(c => c != 0));
        }
Ejemplo n.º 3
0
 public Item(string id, Modifier modifier, int count = 1)
 {
     Id       = id;
     Count    = count;
     Modifier = modifier;
 }
Ejemplo n.º 4
0
 public Item(string id, int count = 1)
 {
     Id    = id;
     Count = count;
 }