public void PortValueSingleEncoder_Decode_Short(string dataAsString, byte expectedPortId, PortModeInformationDataType expectedDataType, short[] expectedData) => PortValueSingleEncoder_Decode <short>(dataAsString, expectedPortId, expectedDataType, expectedData);
private void PortValueSingleEncoder_Decode <T>(string dataAsString, byte expectedPortId, PortModeInformationDataType expectedDataType, T[] expectedData) { var knowledge = new ProtocolKnowledge(); var serviceProvider = new ServiceCollection() .AddPoweredUp() .BuildServiceProvider(); KnowledgeManager.ApplyDynamicProtocolKnowledge(new HubAttachedIOForAttachedDeviceMessage(0x63, DeviceType.TechnicMediumHubTiltSensor, new Version("0.0.0.1"), new Version("0.0.0.1")) { HubId = 0 }, knowledge, serviceProvider.GetService <IDeviceFactory>()); // arrange var data = BytesStringUtil.StringToData(dataAsString); // act var message = MessageEncoder.Decode(data, knowledge) as PortValueSingleMessage; // assert Assert.Collection(message.Data, d => { Assert.Equal(d.PortId, expectedPortId); Assert.Equal(d.DataType, expectedDataType); if (d is PortValueData <T> actual) { Assert.Collection(actual.InputValues, expectedData.Cast <T>().Select <T, Action <T> >(expected => actual => Assert.Equal(expected, actual)).ToArray()); } } ); }
public void PortModeInformationEncoder_Decode_ValueFormat(string data, byte expectedPort, byte expectedMode, PortModeInformationType expectedType, byte expectedNr, PortModeInformationDataType expectedDataType, byte expectedFigures, byte expectedDecimals) { var message = Decode <PortModeInformationForValueFormatMessage>(data); // assert DefaultAsserts(expectedPort, expectedMode, expectedType, message); Assert.Equal(expectedNr, message.NumberOfDatasets); Assert.Equal(expectedDataType, message.DatasetType); Assert.Equal(expectedFigures, message.TotalFigures); Assert.Equal(expectedDecimals, message.Decimals); }