public async Task TestWaitForChannelCreation()
        {
            var tcs               = new TaskCompletionSource <Channel>();
            var enumerator        = new CreateChannelEnumerable(packetService, tcs.Task, bobId, bobChannelId).GetAsyncEnumerator();
            ValueTask <bool> task = enumerator.MoveNextAsync();
            await Task.Delay(10).ConfigureAwait(false);

            Assert.IsFalse(task.IsCompleted);
            tcs.SetResult(new Channel());
            Assert.IsTrue(await task);
            Assert.IsNotNull(enumerator.Current);
        }
        public async Task TestAliceReturnConflict()
        {
            var enumerator = new CreateChannelEnumerable(packetService, Task.FromResult <Channel>(null), bobId, bobChannelId, tempChannelId).GetAsyncEnumerator();

            Assert.IsTrue(await enumerator.MoveNextAsync());
            var response = enumerator.Current as P2FCreateChannelResponse;

            Assert.IsNotNull(response, "The returned packet is not of type " + nameof(P2FCreateChannelResponse));
            Assert.AreEqual(tempChannelId, response.TempChannelId);
            Assert.AreEqual(CreateChannelStatus.AlreadyExists, response.StatusCode);
            Assert.IsFalse(await enumerator.MoveNextAsync());
        }
        public async Task TestAliceBroadcastSuccess()
        {
            var channel = new Channel {
                ChannelType = ChannelType.Direct, OwnerId = aliceId
            };
            var enumerator = new CreateChannelEnumerable(packetService, Task.FromResult(channel), bobId, bobChannelId).GetAsyncEnumerator();

            Assert.IsTrue(await enumerator.MoveNextAsync());
            var adc = enumerator.Current as P0ACreateChannel;

            Assert.IsNotNull(adc, "The returned packet is not of type " + nameof(P0ACreateChannel));
            Assert.AreEqual(bobChannelId, adc.ChannelId);
            Assert.AreEqual(ChannelType.AccountData, adc.ChannelType);
            Assert.IsTrue(await enumerator.MoveNextAsync());
            var response = enumerator.Current as P0ACreateChannel;

            Assert.IsNotNull(response, "The returned packet is not of type " + nameof(P0ACreateChannel));
            Assert.AreEqual(ChannelType.Direct, response.ChannelType);
            Assert.AreEqual(bobId, response.CounterpartId);
            Assert.IsFalse(await enumerator.MoveNextAsync());
        }
        public async Task TestBobBroadcastConflict()
        {
            var enumerator = new CreateChannelEnumerable(packetService, Task.FromResult <Channel>(null), aliceId, aliceChannelId).GetAsyncEnumerator();

            Assert.IsFalse(await enumerator.MoveNextAsync());
        }