using System.Runtime.CompilerServices; using System.Text; using Speckle.Sdk.Dependencies.Serialization; using Speckle.Sdk.Serialisation.V2; using Speckle.Sdk.Transports; namespace Speckle.Sdk.Serialization.Tests; public class DummyReceiveServerObjectManager(Dictionary objects) : IServerObjectManager { public async IAsyncEnumerable<(string, string)> DownloadObjects( IReadOnlyList objectIds, IProgress? progress, [EnumeratorCancellation] CancellationToken cancellationToken ) { await Task.CompletedTask; foreach (var id in objectIds) { yield return (id, objects[id]); } } public async Task DownloadSingleObject( string objectId, IProgress? progress, CancellationToken cancellationToken ) { await Task.CompletedTask; return objects[objectId]; } public Task> HasObjects( IReadOnlyList objectIds, CancellationToken cancellationToken ) => throw new NotImplementedException(); public Task UploadObjects( IReadOnlyList objects, bool compressPayloads, IProgress? progress, CancellationToken cancellationToken ) { long totalBytes = 0; foreach (var item in objects) { totalBytes += Encoding.Default.GetByteCount(item.Json); } progress?.Report(new(ProgressEvent.UploadBytes, totalBytes, totalBytes)); return Task.CompletedTask; } }