public void Check_Data_To_Int32_Conversion(byte[] value, DataConverter.Endianness endianness, int target)
        {
            // Act
            var actual = DataConverter.ToInt32(value, endianness);

            // Assert
            Assert.AreEqual(actual, target);
        }
        public void Check_Data_To_UInt64_Conversion(byte[] value, DataConverter.Endianness endianness, ulong target)
        {
            // Act
            var actual = DataConverter.ToUInt64(value, endianness);

            // Assert
            Assert.AreEqual(actual, target);
        }
        public void Check_UInt64_To_Data_Conversion(ulong value, DataConverter.Endianness endianness, byte[] target)
        {
            // Act
            var actual = DataConverter.ToBytes(value, endianness);

            // Assert
            Assert.AreEqual(actual, target);
        }
        [TestCase(DataConverter.Endianness.BigEndian, (ushort)50, (ushort)50)]           // Value is smaller than limit → Value will be used.
        public void Check_If_Limit_Is_Respected_When_Reading(DataConverter.Endianness endianness, ushort value, ushort target)
        {
            // Arrange
            var             limit = (uint)100;
            INumericPlcItem numericItem;

            if (endianness == DataConverter.Endianness.LittleEndian)
            {
                numericItem = new UInt16PlcItem(0, 0);
            }
            else
            {
                numericItem = new WordPlcItem(0, 0);
            }
            Func <string, IPlcItem <byte[]> > flexiblePlcItemFactory = name => new BytesPlcItem(0, 1, true, new byte[0], name);
            var dynamicPlcItem = new DynamicPlcItem <byte[]>(numericItem, flexiblePlcItemFactory, 1, limit);

            // Act
            numericItem.Value = value;

            // Assert
            Assert.That(numericItem.Value, Is.EqualTo(target));
            Assert.That(dynamicPlcItem.FlexiblePlcItem.Value, Has.Length.EqualTo(target));
        }
 /// <summary>
 /// Applies the <see cref="UInt64"/> value to the <paramref name="data"/>.
 /// </summary>
 /// <param name="data"> The extended <see cref="byte"/> array. </param>
 /// <param name="bytePosition"> The starting position at where to apply <paramref name="value"/>. </param>
 /// <param name="value"> The value to apply. </param>
 /// <param name="endianness"> The <see cref="DataConverter.Endianness"/> used when converting the value. </param>
 /// <returns> The same <paramref name="data"/> instance. </returns>
 public static byte[] ApplyValue(this byte[] data, ushort bytePosition, UInt64 value, DataConverter.Endianness endianness)
 => data.ApplyValue(bytePosition, DataConverter.ToBytes(value, endianness));