From 79d7ab9fe2843721ac9115bd552be1ae661d5c35 Mon Sep 17 00:00:00 2001 From: Adam Hathcock Date: Thu, 2 Jan 2025 09:40:26 +0000 Subject: [PATCH] fix build and add batch tests --- .../SizeBatchingChannelReader.cs | 10 ++++- .../Serialisation/BatchTests.cs | 44 +++++++++++++++++++ .../Serialisation/SimpleRoundTripTests.cs | 1 + 3 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 tests/Speckle.Sdk.Tests.Unit/Serialisation/BatchTests.cs diff --git a/src/Speckle.Sdk.Dependencies/Serialization/SizeBatchingChannelReader.cs b/src/Speckle.Sdk.Dependencies/Serialization/SizeBatchingChannelReader.cs index 6c161bee..0f66b49b 100644 --- a/src/Speckle.Sdk.Dependencies/Serialization/SizeBatchingChannelReader.cs +++ b/src/Speckle.Sdk.Dependencies/Serialization/SizeBatchingChannelReader.cs @@ -13,12 +13,18 @@ public class SizeBatchingChannelReader( int batchSize, bool singleReader, bool syncCont = false -) : BatchingChannelReader>(source, batchSize, singleReader, syncCont) +) : BatchingChannelReader>(x => new(x), source, batchSize, singleReader, syncCont) where T : IHasSize { protected override Batch CreateBatch(int capacity) => new(capacity); - protected override void TrimBatch(Batch batch) => batch.TrimExcess(); + protected override void TrimBatch(ref Batch batch, bool isVerifiedFull) + { + if (!isVerifiedFull) + { + batch.TrimExcess(); + } + } protected override void AddBatchItem(Batch batch, T item) => batch.Add(item); diff --git a/tests/Speckle.Sdk.Tests.Unit/Serialisation/BatchTests.cs b/tests/Speckle.Sdk.Tests.Unit/Serialisation/BatchTests.cs new file mode 100644 index 00000000..e994288d --- /dev/null +++ b/tests/Speckle.Sdk.Tests.Unit/Serialisation/BatchTests.cs @@ -0,0 +1,44 @@ +using NUnit.Framework; +using Shouldly; +using Speckle.Sdk.Serialisation.V2.Send; + +namespace Speckle.Sdk.Tests.Unit.Serialisation; + +[TestFixture] +public class BatchTests +{ + private class BatchItem : IHasSize + { + public BatchItem(int size) + { + Size = size; + } + + public int Size { get; } + } + + [Test] + public void TestBatchSize_Calc() + { + var batch = new Batch(4); + batch.Add(new BatchItem(1)); + batch.Size.ShouldBe(1); + batch.Add(new BatchItem(2)); + batch.Size.ShouldBe(3); + } + + [Test] + public void TestBatchSize_Trim() + { + var batch = new Batch(4); + batch.Add(new BatchItem(1)); + batch.Add(new BatchItem(2)); + batch.Size.ShouldBe(3); + + batch.Items.Capacity.ShouldBe(4); + batch.TrimExcess(); + + batch.Items.Capacity.ShouldBe(2); + batch.Size.ShouldBe(3); + } +} diff --git a/tests/Speckle.Sdk.Tests.Unit/Serialisation/SimpleRoundTripTests.cs b/tests/Speckle.Sdk.Tests.Unit/Serialisation/SimpleRoundTripTests.cs index 3efc054f..b9cd0183 100644 --- a/tests/Speckle.Sdk.Tests.Unit/Serialisation/SimpleRoundTripTests.cs +++ b/tests/Speckle.Sdk.Tests.Unit/Serialisation/SimpleRoundTripTests.cs @@ -8,6 +8,7 @@ namespace Speckle.Sdk.Tests.Unit.Serialisation; +[TestFixture] public class SimpleRoundTripTests { private IOperations _operations;