예제 #1
0
        public void Should_correctly_reserve_memory_when_buffer_grows_twice_as_large()
        {
            buffer.Write(1);
            buffer.Write(2);
            buffer.Position.Should().Be(8);

            memoryManager.Received(1).TryReserveBytes(4);
        }
예제 #2
0
        public void Should_reserve_current_capacity_in_memory_manager_when_growing_twice()
        {
            buffer.Write(Guid.NewGuid());
            buffer.Write(int.MaxValue);

            manager.ReceivedCalls().Should().HaveCount(1);
            manager.Received().TryReserveBytes(InitialSize);

            buffer.Write(Guid.NewGuid());

            manager.ReceivedCalls().Should().HaveCount(2);
            manager.Received().TryReserveBytes(InitialSize);
        }
예제 #3
0
        public void Should_respect_underlying_memory_manager(bool isMemoryAvailable, int amount)
        {
            underlyingMemoryManager.TryReserveBytes(0).ReturnsForAnyArgs(isMemoryAvailable);

            memoryManager.TryReserveBytes(1).Should().Be(isMemoryAvailable);
            underlyingMemoryManager.Received(1).TryReserveBytes(1);
        }
 public void Should_preallocate_initial_buffers_in_ctor()
 {
     memoryManager.Received(3).TryCreateBuffer(out _);
 }
예제 #5
0
 public void Should_control_memory_usage_with_memoryManager(bool canAllocate)
 {
     memoryManager.TryReserveBytes(0).ReturnsForAnyArgs(canAllocate);
     bufferPool.TryAcquire(out _).Should().Be(canAllocate);
     memoryManager.Received(1).TryReserveBytes(InitialBufferSize);
 }