public void Check_FromData()
        {
            var target = new byte[] { 50, 40, 30, 20, 10, Byte.MaxValue, Byte.MinValue };

            var item = new DynamicBytesPlcItem(new UInt16PlcItem(dataBlock: 0, position: 0), "DynamicBytes");

            // Check: Data → Bytes
            ((IPlcItem)item).Value.TransferValuesFrom(target);
            Assert.True(target.SequenceEqual(item.Value));
            Assert.True(target.SequenceEqual((byte[])((IPlcItem)item).Value));
            Assert.AreEqual((ushort)target.Length, ((UInt16PlcItem)item.LengthPlcItem).Value);
        }
        public void Check_Clone()
        {
            var item  = new DynamicBytesPlcItem(new UInt16PlcItem(dataBlock: 0, position: 0), "DynamicBytes");
            var clone = item.Clone();

            // Check equality (Equals is overriden).
            Assert.AreEqual(item, clone);

            // Check the value.
            Assert.True(item.Value == clone.Value);

            // Check if both items are different references.
            Assert.False(Object.ReferenceEquals(item, clone));
        }
        public void Check_ToData()
        {
            var target = new byte[] { Byte.MinValue, Byte.MaxValue, 10, 20, 30, 40, 50 };

            var item = new DynamicBytesPlcItem(new UInt16PlcItem(dataBlock: 0, position: 0), "DynamicBytes");

            Assert.AreEqual(0, ((UInt16PlcItem)item.LengthPlcItem).Value);
            Assert.True(new byte[0].SequenceEqual(item.Value));

            // Check: Bytes → Data
            item.Value = target;
            Assert.True(target.SequenceEqual(item.Value));
            Assert.True(target.SequenceEqual((byte[])((IPlcItem)item).Value));
            Assert.AreEqual((ushort)target.Length, ((UInt16PlcItem)item.LengthPlcItem).Value);
        }