- Replace `Xylem.Common` namespace references with `TBF.Rig.RegisterReaders`. - Introduce `GenesisSmartReaderTest` and `FakeSerialDriver` for unit testing. - Revamp `FlowDirectionDetection` to support multiple channels. - Make constants in `StreamingDecoder` public for enhanced accessibility. - Update `AssemblyVersion` and `AssemblyFileVersion` to `3.9.3010.1`.
85 lines
2.0 KiB
C#
85 lines
2.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using TBF.Rig.RegisterReaders.GenesisRegReader.communication.Utils;
|
|
|
|
namespace TBFTests.Rig.RegisterReaders.GenesisRegReader.implementations
|
|
{
|
|
|
|
|
|
public sealed class FakeSerialDriver : ISerialDriver
|
|
{
|
|
private readonly Queue<string> _lines = new Queue<string>();
|
|
private bool _isOpen;
|
|
|
|
public int OpenCalls { get; private set; }
|
|
public int CloseCalls { get; private set; }
|
|
public int DiscardInCalls { get; private set; }
|
|
public int DiscardOutCalls { get; private set; }
|
|
|
|
public Encoding Encoding { get; set; } = Encoding.ASCII;
|
|
|
|
public int BytesToRead => _lines.Count > 0 ? 1 : 0;
|
|
public int BytesToWrite => 0;
|
|
|
|
public void EnqueueLine(string line) => _lines.Enqueue(line);
|
|
|
|
public bool IsOpen() => _isOpen;
|
|
|
|
public bool Open()
|
|
{
|
|
OpenCalls++;
|
|
_isOpen = true;
|
|
return true;
|
|
}
|
|
|
|
public void CloseConnection()
|
|
{
|
|
CloseCalls++;
|
|
_isOpen = false;
|
|
}
|
|
|
|
public void DiscardInBuffer()
|
|
{
|
|
DiscardInCalls++;
|
|
_lines.Clear();
|
|
}
|
|
|
|
public void DiscardOutBuffer()
|
|
{
|
|
DiscardOutCalls++;
|
|
}
|
|
|
|
public string ReadLine()
|
|
{
|
|
if (!_isOpen)
|
|
throw new InvalidOperationException("Port not open.");
|
|
|
|
if (_lines.Count == 0)
|
|
throw new TimeoutException();
|
|
|
|
return _lines.Dequeue();
|
|
}
|
|
|
|
public string ReadExisting()
|
|
{
|
|
if (!_isOpen)
|
|
throw new InvalidOperationException("Port not open.");
|
|
|
|
if (_lines.Count == 0)
|
|
return string.Empty;
|
|
|
|
return _lines.Dequeue();
|
|
}
|
|
|
|
public byte[] SendAndWait(byte[] request, int timeout)
|
|
{
|
|
return Array.Empty<byte>();
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
_isOpen = false;
|
|
}
|
|
}
|
|
} |