public void Allocate_UploadBuffer_CopyFrom_Range(Device device, int sourceOffset, int destinationOffset, int count)
    {
        using UploadBuffer <int> uploadBuffer = device.Get().AllocateUploadBuffer <int>(4096);

        new Random(42).NextBytes(uploadBuffer.Span.AsBytes());

        using ReadOnlyBuffer <int> readOnlyBuffer = device.Get().AllocateReadOnlyBuffer <int>(uploadBuffer.Length);

        readOnlyBuffer.CopyFrom(uploadBuffer, sourceOffset, destinationOffset, count);

        int[] result = readOnlyBuffer.ToArray(destinationOffset, count);

        Assert.AreEqual(result.Length, count);
        Assert.IsTrue(uploadBuffer.Span.Slice(sourceOffset, count).SequenceEqual(result));
    }
    public void Allocate_UploadBuffer_CopyFrom_Full(Device device)
    {
        using UploadBuffer <int> uploadBuffer = device.Get().AllocateUploadBuffer <int>(4096);

        new Random(42).NextBytes(uploadBuffer.Span.AsBytes());

        using ReadOnlyBuffer <int> readOnlyBuffer = device.Get().AllocateReadOnlyBuffer <int>(uploadBuffer.Length);

        readOnlyBuffer.CopyFrom(uploadBuffer);

        int[] result = readOnlyBuffer.ToArray();

        Assert.AreEqual(uploadBuffer.Length, result.Length);
        Assert.IsTrue(uploadBuffer.Span.SequenceEqual(result));
    }