BatchStreamTests.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Threading.Tasks.Dataflow;
  4. using Avalonia.Rendering.Composition.Transport;
  5. using Xunit;
  6. namespace Avalonia.Base.UnitTests.Composition;
  7. public class BatchStreamTests
  8. {
  9. [Fact]
  10. public void BatchStreamCorrectlyWritesAndReadsData()
  11. {
  12. var data = new BatchStreamData();
  13. var memPool = new BatchStreamMemoryPool(100, _ => { });
  14. var objPool = new BatchStreamObjectPool<object>(10, _ => { });
  15. var guids = new List<Guid>();
  16. var objects = new List<object>();
  17. for (var c = 0; c < 453; c++)
  18. {
  19. guids.Add(Guid.NewGuid());
  20. objects.Add(new object());
  21. }
  22. using (var writer = new BatchStreamWriter(data, memPool, objPool))
  23. {
  24. foreach(var guid in guids)
  25. writer.Write(guid);
  26. foreach (var obj in objects)
  27. writer.WriteObject(obj);
  28. }
  29. using (var reader = new BatchStreamReader(data, memPool, objPool))
  30. {
  31. foreach (var guid in guids)
  32. Assert.Equal(guid, reader.Read<Guid>());
  33. foreach (var obj in objects)
  34. Assert.Equal(obj, reader.ReadObject());
  35. }
  36. }
  37. }