public void CopyToFloatBuffer_ShouldReturnFloatArray_When_BufferSizeIsLargeEnough()
        {
            using (var imageFrame = new ImageFrame(ImageFormat.Types.Format.Vec32F1, 10, 10))
            {
                var normalBuffer = new float[100];
                var largeBuffer  = new float[120];
                imageFrame.CopyToBuffer(normalBuffer);
                imageFrame.CopyToBuffer(largeBuffer);

                Assert.IsEmpty(normalBuffer.Where((x, i) => Math.Abs(x - largeBuffer[i]) > 1e-9));
            }
        }
        public void CopyToUshortBuffer_ShouldReturnUshortArray_When_BufferSizeIsLargeEnough()
        {
            using (var imageFrame = new ImageFrame(ImageFormat.Types.Format.Gray16, 10, 10))
            {
                var normalBuffer = new ushort[100];
                var largeBuffer  = new ushort[120];
                imageFrame.CopyToBuffer(normalBuffer);
                imageFrame.CopyToBuffer(largeBuffer);

                Assert.IsEmpty(normalBuffer.Where((x, i) => x != largeBuffer[i]));
            }
        }
        public void CopyToFloatBuffer_ShouldThrowException_When_BufferSizeIsTooSmall()
        {
            using (var imageFrame = new ImageFrame(ImageFormat.Types.Format.Vec32F1, 10, 10))
            {
#pragma warning disable IDE0058
                Assert.Throws <MediaPipeException>(() => { imageFrame.CopyToBuffer(new float[99]); });
#pragma warning restore IDE0058
            }
        }
        public void CopyToFloatBuffer_ShouldThrowException_When_BufferDepthIsWrong()
        {
            using (var imageFrame = new ImageFrame(ImageFormat.Types.Format.Gray8, 10, 10))
            {
#pragma warning disable IDE0058
                Assert.Throws <MediaPipeException>(() => { imageFrame.CopyToBuffer(new float[100]); });
#pragma warning restore IDE0058
            }
        }
 public void SetToZero_ShouldSetZeroToAllBytes()
 {
     using (var imageFrame = new ImageFrame(ImageFormat.Types.Format.Gray8, 10, 10))
     {
         imageFrame.SetToZero();
         var bytes = new byte[100];
         imageFrame.CopyToBuffer(bytes);
         Assert.True(bytes.All((x) => x == 0));
     }
 }
        public void Ctor_ShouldInstantiateImageFrame_When_CalledWithPixelData()
        {
            var pixelData = new NativeArray <byte>(32, Allocator.Temp, NativeArrayOptions.UninitializedMemory);
            var srcBytes  = new byte[] {
                0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
                16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
            };

            pixelData.CopyFrom(srcBytes);

            using (var imageFrame = new ImageFrame(ImageFormat.Types.Format.Sbgra, 4, 2, 16, pixelData))
            {
                Assert.AreEqual(4, imageFrame.Width());
                Assert.AreEqual(2, imageFrame.Height());
                Assert.False(imageFrame.IsEmpty());

                var bytes = new byte[32];
                imageFrame.CopyToBuffer(bytes);
                Assert.IsEmpty(bytes.Where((x, i) => x != srcBytes[i]));
            }
        }