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.
88 lines
3.4 KiB
C#
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());
|
|
}
|
|
}
|
|
}
|