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)) )); }
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)) )); }
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)); }
public Task Send(SynchronizationPacket packet) { return(SendInternal(MulticastAddressProvider.GetMulticastAddress(packet.FramingLayer.SynchronizationAddress), packet)); }