Exemple #1
0
        internal void Non_Generic_Wait_Invocation_Creates_Valid_Wait(MessageCode.Server code, string token, int?timeout)
        {
            var key = new WaitKey(code, token);

            using (var waiter = new Waiter())
            {
                Task task = waiter.Wait(key, timeout);

                var waits = waiter.GetProperty <ConcurrentDictionary <WaitKey, ConcurrentQueue <PendingWait> > >("Waits");
                waits.TryGetValue(key, out var queue);
                queue.TryPeek(out var wait);

                try
                {
                    Assert.IsType <Task <object> >(task);
                    Assert.NotNull(task);
                    Assert.Equal(TaskStatus.WaitingForActivation, task.Status);

                    Assert.NotEmpty(waits);
                    Assert.Single(waits);

                    Assert.NotNull(queue);
                    Assert.Single(queue);

                    if (timeout != null)
                    {
                        Assert.Equal(timeout, wait.Timeout);
                    }
                }
                finally
                {
                    wait.Dispose();
                }
            }
        }
        public void Handles_IntegerResponse_Messages(MessageCode.Server code)
        {
            int value  = new Random().Next();
            int?result = null;

            var(handler, mocks) = GetFixture();

            mocks.Waiter.Setup(m => m.Complete(It.IsAny <WaitKey>(), It.IsAny <int>()))
            .Callback <WaitKey, int>((key, response) => result = response);

            var msg = new MessageBuilder()
                      .WriteCode(code)
                      .WriteInteger(value)
                      .Build();

            handler.HandleMessage(null, msg);

            Assert.Equal(value, result);
        }
Exemple #3
0
        public void Handles_IntegerResponse_Messages(MessageCode.Server code)
        {
            int value  = new Random().Next();
            int?result = null;

            var waiter = new Mock <IWaiter>();

            waiter.Setup(m => m.Complete(It.IsAny <WaitKey>(), It.IsAny <int>()))
            .Callback <WaitKey, int>((key, response) => result = response);

            var msg = new MessageBuilder()
                      .WriteCode(code)
                      .WriteInteger(value)
                      .Build();

            using (var s = new SoulseekClient("127.0.0.1", 1, waiter: waiter.Object))
            {
                s.InvokeMethod("ServerConnection_MessageRead", null, msg);

                Assert.Equal(value, result);
            }
        }
Exemple #4
0
 /// <summary>
 ///     Sets the message code.
 /// </summary>
 /// <param name="code">The desired message code.</param>
 /// <returns>This MessageBuilder.</returns>
 public MessageBuilder WriteCode(MessageCode.Server code)
 {
     return(WriteCode(BitConverter.GetBytes((int)code)));
 }