示例#1
0
        public async Task When_ListeningAndSendingUnicastWithIPV6_Then_MessagesAreSentAndReceived()
        {
            var hostname    = Dns.GetHostName();
            var ipAddresses = await Dns.GetHostAddressesAsync(hostname);

            var address = ipAddresses.First(x => x.AddressFamily == AddressFamily.InterNetworkV6);

            using (var sender = new UnicastSacnSender(address))
            {
                using (var receiver = new UnicastSacnReceiver())
                {
                    DataPacket received = null;

                    receiver.OnDataPacketReceived += (sender, packet) =>
                    {
                        received = packet;
                    };
                    receiver.Listen(address);

                    var packet = new DataPacket();
                    packet.FramingLayer.SourceName = "Source name";
                    packet.FramingLayer.Universe   = 25;
                    packet.DMPLayer.PropertyValues = new byte[] { 1, 2, 3, 4 };

                    await sender.Send(packet);

                    await Task.Delay(250);

                    Assert.NotNull(received);
                }
            }
        }
        public async Task Given_ThePacketIsASynchronizationPacket_When_UnicastSendIsCalled_Then_ThePacketIsSent()
        {
            var expectedAddress = new IPAddress(new byte[] { 1, 2, 3, 4 });
            var packet          = new SynchronizationPacket();

            byte[] expectedBytes = new byte[packet.Length];
            packet.Write(expectedBytes);

            var udpWrapper = Mock.Of <IUdpWrapper>();
            var sender     = new UnicastSacnSender(udpWrapper, expectedAddress);
            await sender.Send(packet);

            Mock.Get(udpWrapper)
            .Verify(x => x.Send(
                        It.Is <IPEndPoint>(x => x.Address == expectedAddress && x.Port == 5568),
                        It.Is <ReadOnlyMemory <byte> >(x => x.ToArray().SequenceEqual(expectedBytes))
                        ));
        }