33 lines
1.0 KiB
C#
33 lines
1.0 KiB
C#
using System.Collections.Concurrent;
|
|
using System.Text.Json;
|
|
using backend.DeviceHub;
|
|
using backend.Tools;
|
|
|
|
namespace backend.tests;
|
|
|
|
public class FakeDeviceChannel : IDeviceChannel, IDeviceClient
|
|
{
|
|
public List<HubEnvelope> SentEnvelopes { get; } = new();
|
|
public List<byte[]> SentBinary { get; } = new();
|
|
public ConcurrentQueue<JsonElement> PiToolReplies { get; } = new();
|
|
|
|
public Task SendEnvelopeAsync<T>(T envelope, CancellationToken ct) where T : HubEnvelope
|
|
{
|
|
SentEnvelopes.Add(envelope);
|
|
return Task.CompletedTask;
|
|
}
|
|
|
|
public Task SendBinaryAsync(ReadOnlyMemory<byte> bytes, CancellationToken ct)
|
|
{
|
|
SentBinary.Add(bytes.ToArray());
|
|
return Task.CompletedTask;
|
|
}
|
|
|
|
public Task<JsonElement> CallPiToolAsync(string name, JsonElement args, CancellationToken ct)
|
|
{
|
|
if (PiToolReplies.TryDequeue(out var reply))
|
|
return Task.FromResult(reply);
|
|
return Task.FromResult(JsonDocument.Parse("""{"ok":true}""").RootElement);
|
|
}
|
|
}
|