public void ConvertToBoolArray_Roundtrips(int boolArraySize) { var bools = new bool[boolArraySize]; var bytes = new byte[boolArraySize]; var random = new Random(); for (int i = 0; i < bools.Length; ++i) { bools[i] = random.Next() % 2 == 0; } var toS7Converter = ConverterFactory.GetToPlcConverter <bool[]>(); var fromS7Converter = ConverterFactory.GetFromPlcConverter <bool[]>(); int length = toS7Converter(bools, bools.Length, bytes); bool[]? actual = null; fromS7Converter(ref actual, bytes, boolArraySize); Assert.Equal(boolArraySize, actual !.Length); for (int i = 0; i < boolArraySize; ++i) { Assert.Equal(bools[i], actual[i]); } }
public DataBlockDataItem() : this(ConverterFactory.GetToPlcConverter <TValue>(), ConverterFactory.GetFromPlcConverter <TValue>(), ConversionHelper.GetElementSize <TValue>()) { if (typeof(TValue) == typeof(bool)) { variableType = VariableType.Bit; transportSize = TransportSize.Bit; } else { variableType = VariableType.Byte; transportSize = TransportSize.Byte; } }
public void ConvertToFloat(float value) { var bytes = BitConverter.GetBytes(value); if (BitConverter.IsLittleEndian) { Array.Reverse(bytes); } var converter = ConverterFactory.GetFromPlcConverter <float>(); float result = default; converter(ref result, bytes, sizeof(float)); Assert.Equal(value, result); }
public void ConvertToLong(long value) { var bytes = BitConverter.GetBytes(value); if (BitConverter.IsLittleEndian) { Array.Reverse(bytes); } var converter = ConverterFactory.GetFromPlcConverter <long>(); long result = default; converter(ref result, bytes, sizeof(long)); Assert.Equal(value, result); }
public void ConvertToEnumOfInt(EnumOfInt value) { var bytes = BitConverter.GetBytes((int)value); if (BitConverter.IsLittleEndian) { Array.Reverse(bytes); } var converter = ConverterFactory.GetFromPlcConverter <EnumOfInt>(); EnumOfInt result = default; converter(ref result, bytes, sizeof(int)); Assert.Equal(value, result); }
public void ConvertToFloatArray(float[] value) { var bytes = value.SelectMany(v => { var b = BitConverter.GetBytes(v); if (BitConverter.IsLittleEndian) { Array.Reverse(b); } return(b); }).ToArray(); var converter = ConverterFactory.GetFromPlcConverter <float[]>(); var result = new float[value.Length]; converter(ref result, bytes, value.Length); Assert.Equal(value, result); }