using System.Collections.Concurrent; using System.Text.Json; using backend.DeviceHub; using backend.Tools; namespace backend.tests; public class FakeDeviceChannel : IDeviceChannel, IDeviceClient { public List SentEnvelopes { get; } = new(); public List SentBinary { get; } = new(); public ConcurrentQueue PiToolReplies { get; } = new(); public Task SendEnvelopeAsync(T envelope, CancellationToken ct) where T : HubEnvelope { SentEnvelopes.Add(envelope); return Task.CompletedTask; } public Task SendBinaryAsync(ReadOnlyMemory bytes, CancellationToken ct) { SentBinary.Add(bytes.ToArray()); return Task.CompletedTask; } public Task 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); } }