public void When_WriteIsCalled_Then_TheDataIsCorrect()
        {
            string sourceName     = "My source name";
            byte   priority       = 134;
            UInt16 syncAddress    = 1023;
            byte   sequenceNumber = 135;
            byte   options        = 0;
            UInt16 universe       = 1953;

            var framingLayer = new DataPacketFramingLayer()
            {
                SourceName             = sourceName,
                Priority               = priority,
                SynchronizationAddress = syncAddress,
                SequenceNumber         = sequenceNumber,
                Options  = options,
                Universe = universe
            };

            var expectedBytes = GetDataPacketFramingLayer(sourceName, priority, syncAddress, sequenceNumber, options, universe);

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

            var actualBytes = owner.Memory.Span.Slice(0, DataPacketFramingLayer.Length);

            framingLayer.Write(actualBytes, 0);
            Assert.Equal(expectedBytes.ToArray(), actualBytes.ToArray());
        }
Esempio n. 2
0
        public static Span <byte> GetDataPacket(byte[] CID, string sourceName, UInt16 universe, byte[] properties)
        {
            var rootLayer = new RootLayer
            {
                CID    = CID,
                Vector = RootLayerVector.VECTOR_ROOT_E131_DATA
            };

            var framingLayer = new DataPacketFramingLayer
            {
                SourceName = sourceName,
                Universe   = universe
            };

            var dmpLayer = new DMPLayer
            {
                PropertyValues = properties
            };

            int totalLength = dmpLayer.Length + DataPacketFramingLayer.Length + RootLayer.Length;

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

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

            rootLayer.Write(bytes, (UInt16)(DataPacketFramingLayer.Length + dmpLayer.Length));
            framingLayer.Write(bytes.Slice(RootLayer.Length), dmpLayer.Length);
            dmpLayer.Write(bytes.Slice(RootLayer.Length + DataPacketFramingLayer.Length));

            return(bytes);
        }
        public void Given_TheDataIsCorrect_When_ParseIsCalled_Then_TheDataIsParsedAsExpected()
        {
            var    expectedVector         = FramingLayerVector.VECTOR_E131_DATA_PACKET;
            byte   expectedPriority       = 27;
            UInt16 expectedSyncAddress    = 25;
            byte   expectedSequenceNumber = 127;
            bool   previewData            = true;
            bool   streamTerminated       = true;
            bool   forceSynchronization   = true;
            byte   expectedOptions        = 0b0000_1110;
            UInt16 universe           = 258;
            string expectedSourceName = "This is the source name";

            var bytes = GetDataPacketFramingLayer(expectedSourceName, expectedPriority, expectedSyncAddress, expectedSequenceNumber, expectedOptions, universe);

            var framingLayer = DataPacketFramingLayer.Parse(bytes.ToArray());

            Assert.Equal(expectedVector, framingLayer.Vector);
            Assert.Equal(expectedPriority, framingLayer.Priority);
            Assert.Equal(expectedSyncAddress, framingLayer.SynchronizationAddress);
            Assert.Equal(expectedSequenceNumber, framingLayer.SequenceNumber);
            Assert.Equal(previewData, framingLayer.PreviewData);
            Assert.Equal(streamTerminated, framingLayer.StreamTerminated);
            Assert.Equal(forceSynchronization, framingLayer.ForceSynchronization);
            Assert.Equal(expectedOptions, framingLayer.Options);
            Assert.Equal(universe, framingLayer.Universe);
        }
Esempio n. 4
0
 public DataPacket()
 {
     RootLayer = new RootLayer
     {
         Vector = RootLayerVector.VECTOR_ROOT_E131_DATA
     };
     FramingLayer = new DataPacketFramingLayer();
     DMPLayer     = new DMPLayer();
 }
        public void When_TheOptionsFlagsAreSet_Then_TheResultsAreAsExpected(bool forceSynchronization, bool streamTerminated, bool previewData, byte expectedOptions)
        {
            DataPacketFramingLayer framingLayer = new DataPacketFramingLayer();

            framingLayer.ForceSynchronization = forceSynchronization;
            framingLayer.StreamTerminated     = streamTerminated;
            framingLayer.PreviewData          = previewData;

            Assert.Equal(expectedOptions, framingLayer.Options);
        }
Esempio n. 6
0
        public static DataPacket Parse(ReadOnlySpan <byte> bytes, RootLayer rootLayer, DataPacketFramingLayer framingLayer)
        {
            DataPacket dataPacket = new DataPacket
            {
                RootLayer    = rootLayer,
                FramingLayer = framingLayer,
                DMPLayer     = DMPLayer.Parse(bytes)
            };

            return(dataPacket);
        }
        public void When_TheUniverseIsTooHigh_Then_AnExceptionIsThrown()
        {
            var framingLayer = new DataPacketFramingLayer();

            Assert.Throws <ArgumentOutOfRangeException>(() => framingLayer.Universe = Constants.Universe_MaxValue + 1);
        }