public async Task Given_ThePacketIsASynchronizationPacket_When_MulticastSendIPV4IsCalled_Then_ThePacketIsSent()
		{
			var expectedUniverse = (UInt16)1234;
			var packet = new SynchronizationPacket();
			packet.FramingLayer.SynchronizationAddress = expectedUniverse;
			byte[] expectedBytes = new byte[packet.Length];
			packet.Write(expectedBytes);

			var expectedIP = IPAddress.Parse("127.0.0.1");

			var udpWrapper = Mock.Of<IUdpWrapper>();
			var addressProvider = Mock.Of<ISacnMulticastAddressProvider>(x =>
				x.GetMulticastAddress(
					It.Is<UInt16>(universe => universe == expectedUniverse)
				) == expectedIP

			);
			var sender = new TestMulticastSacnSender(udpWrapper, addressProvider);
			await sender.Send(packet);

			Mock.Get(udpWrapper)
				.Verify(x => x.Send(
					It.Is<IPEndPoint>(x => x.Address == expectedIP && x.Port == 5568),
					It.Is<ReadOnlyMemory<byte>>(x => x.ToArray().SequenceEqual(expectedBytes))
				));
		}
Example #2
0
        public void SynchronizingString_ThatIsNotReferenceEqual_Test()
        {
            var sourceGameWorld = new NotifyPropertyChangedTestGameWorld {
                RandomIntProperty = 5
            };

            // Concatenating 1 to make sure the string is a new object
            sourceGameWorld.Players.Add("player1", new NotifyPropertyChangedTestPlayer {
                Name = "sameString" + 1, Health = 100, Level = 30
            });

            var SourceSynchronizerRoot = new SourceSynchronizerRoot(sourceGameWorld);

            var TargetSynchronizerRoot = new TargetSynchronizerRoot <NotifyPropertyChangedTestGameWorld>(SourceSynchronizerRoot.WriteFullAndDispose());

            sourceGameWorld.Players.Add("player2", new NotifyPropertyChangedTestPlayer {
                Name = "sameString" + 1, Health = 44, Level = 1337
            });
            SynchronizationPacket writeChangesAndDispose = SourceSynchronizerRoot.WriteChangesAndDispose();

            TargetSynchronizerRoot.Read(writeChangesAndDispose.SetTick(TimeSpan.Zero));

            NotifyPropertyChangedTestGameWorld targetGameWorld = TargetSynchronizerRoot.Reference;

            AssertExtension.AssertCloneEqual(sourceGameWorld, targetGameWorld);
        }
        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))
                        ));
        }
Example #4
0
        public void When_WriteIsCalled_Then_TheDataIsCorrect()
        {
            byte[] CID            = Enumerable.Range(1, 12).Select(x => (byte)x).ToArray();
            byte   sequenceNumber = 124;

            SynchronizationPacket packet = new SynchronizationPacket();

            packet.RootLayer.CID = CID;
            packet.FramingLayer.SequenceNumber = sequenceNumber;

            var expectedBytes = GetSynchronizationPacket(CID, sequenceNumber);

            using var owner = MemoryPool <byte> .Shared.Rent(packet.Length);

            var bytes = owner.Memory.Span.Slice(0, packet.Length);

            packet.Write(bytes);

            Assert.Equal(expectedBytes.ToArray(), bytes.ToArray());
        }
        public async Task When_ASynchronizationPacketIsReceived_Then_TheEventIsTriggered()
        {
            var udpWrapper = Mock.Of <IUdpWrapper>();
            var server     = new TestSacnReceiver(udpWrapper);

            server.Listen(IPAddress.Any);
            SynchronizationPacket receivedPacket = null;

            server.OnSynchronizationPacketReceived += (object sender, SynchronizationPacket packet) =>
            {
                receivedPacket = packet;
            };

            byte[] CID            = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
            byte   sequenceNumber = 43;

            var buffer = SynchronizationPacketTests.GetSynchronizationPacket(CID, sequenceNumber).ToArray();

            Mock.Get(udpWrapper).Raise(x => x.OnPacketReceived += null, null, new UdpReceiveResult(buffer, new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1234)));

            await Task.Delay(250);

            Assert.NotNull(receivedPacket);
        }
 public Task Send(SynchronizationPacket packet)
 {
     return(SendInternal(RemoteHost, packet));
 }
Example #7
0
 public Task Send(SynchronizationPacket packet)
 {
     return(SendInternal(MulticastAddressProvider.GetMulticastAddress(packet.FramingLayer.SynchronizationAddress), packet));
 }