tbf/TBFTests/Rig/RegisterReaders/AllyReader/AllyReaderCfgTest.cs
Michal Buzik c71fe75446 Ally iPerl initial - reader,test method, unit test
Add AllyReader and AllyCalibration support with tests: Introduce new register readers, calibration methods, and comprehensive unit tests for integration and functionality validation. Update project files accordingly.
2026-08-18 10:01:02 +02:00

88 lines
3.4 KiB
C#

using System.Collections.Generic;
using System.IO;
using Common;
using JetBrains.Annotations;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using TBF.Rig.RegisterReaders.AllyReader;
namespace TBFTests.Rig.RegisterReaders.AllyReader
{
[TestClass]
[TestSubject(typeof(AllyReaderCfg))]
public class AllyReaderCfgTest
{
[TestMethod]
public void DefaultConfig_ContainsExpectedCommunicationSettings()
{
AllyReaderCfg config = CreateConfig();
Assert.AreEqual(1, config.CommandComPortNr);
Assert.AreEqual(2400, config.CommandBaudRate);
Assert.AreEqual(2, config.OptoComPortNr);
Assert.AreEqual(9600, config.OptoBaudRate);
Assert.AreEqual(AllyMeterSize.AutoDetect, config.ConfiguredMeterSize);
Assert.AreEqual(1000D, config.MeterPulsesPerLiter);
Assert.AreEqual(6, config.ParamsCount());
}
[TestMethod]
public void MeterSizeParameter_OffersOnlySupportedAllySizes()
{
ICollection<string> values = CreateConfig().ParamValues(4);
Assert.AreEqual(5, values.Count);
CollectionAssert.Contains((System.Collections.ICollection)values, AllyMeterSize.FiveEighths.ToString());
CollectionAssert.Contains((System.Collections.ICollection)values, AllyMeterSize.OneInch.ToString());
}
[TestMethod]
public void ValidateAndUpdateParameters_ValidValues_UpdateConfiguration()
{
AllyReaderCfg config = CreateConfig();
string message;
Assert.IsTrue(config.ValidateParam(0, "7", out message));
Assert.IsTrue(config.ValidateParam(4, AllyMeterSize.OneInch.ToString(), out message));
Assert.IsTrue(config.ValidateParam(5, "2000", out message));
Assert.IsFalse(config.ValidateParam(4, "Unsupported", out message));
Assert.AreEqual(CfgUpdateFlags.RestartRqrd, config.UpdateParam(0, "7"));
config.UpdateParam(4, AllyMeterSize.OneInch.ToString());
config.UpdateParam(5, "2000");
Assert.AreEqual(7, config.CommandComPortNr);
Assert.AreEqual(AllyMeterSize.OneInch, config.ConfiguredMeterSize);
Assert.AreEqual(2000D, config.MeterPulsesPerLiter);
}
[TestMethod]
public void Serializer_RoundTrip_PreservesReaderSettings()
{
AllyReaderCfg source = CreateConfig();
source.CommandComPortNr = 8;
source.ConfiguredMeterSize = AllyMeterSize.ThreeQuarterLong;
source.MeterPulsesPerLiter = 1234D;
string xml;
using (StringWriter writer = new StringWriter())
{
source.GetSerializer().Serialize(writer, source);
xml = writer.ToString();
}
AllyReaderCfg restored;
using (StringReader reader = new StringReader(xml))
restored = (AllyReaderCfg)AllyReaderCfg.Serializer.Deserialize(reader);
Assert.AreEqual(8, restored.CommandComPortNr);
Assert.AreEqual(AllyMeterSize.ThreeQuarterLong, restored.ConfiguredMeterSize);
Assert.AreEqual(1234D, restored.MeterPulsesPerLiter);
}
private static AllyReaderCfg CreateConfig()
{
return new AllyReaderCfg(new TBF.Rig.RegisterReaders.AllyReader.Factory());
}
}
}