@@ -294,19 +294,22 @@ public void WrapSystemDrawingBitmap_FromBytes_WhenObserved()
294294            } 
295295        } 
296296
297-         [ Fact ] 
298-         public  unsafe  void  WrapMemory_Throws_OnTooLessWrongSize ( ) 
297+         [ Theory ] 
298+         [ InlineData ( 20 ,  5 ,  5 ) ] 
299+         [ InlineData ( 1023 ,  32 ,  32 ) ] 
300+         [ InlineData ( 65536 ,  65537 ,  65536 ) ] 
301+         public  unsafe  void  WrapMemory_Throws_OnTooLessWrongSize ( int  size ,  int  width ,  int  height ) 
299302        { 
300303            var  cfg  =  Configuration . CreateDefaultInstance ( ) ; 
301304            var  metaData  =  new  ImageMetadata ( ) ; 
302305
303-             var  array  =  new  Rgba32 [ 25 ] ; 
306+             var  array  =  new  Rgba32 [ size ] ; 
304307            Exception  thrownException  =  null ; 
305308            fixed ( void *  ptr  =  array ) 
306309            { 
307310                try 
308311                { 
309-                     using  var  image  =  Image . WrapMemory < Rgba32 > ( cfg ,  ptr ,  24 ,   5 ,   5 ,  metaData ) ; 
312+                     using  var  image  =  Image . WrapMemory < Rgba32 > ( cfg ,  ptr ,  size   *   sizeof ( Rgba32 ) ,   width ,   height ,  metaData ) ; 
310313                } 
311314                catch  ( Exception  e ) 
312315                { 
@@ -317,24 +320,30 @@ public unsafe void WrapMemory_Throws_OnTooLessWrongSize()
317320            Assert . IsType < ArgumentOutOfRangeException > ( thrownException ) ; 
318321        } 
319322
320-         [ Fact ] 
321-         public  unsafe  void  WrapMemory_FromPointer_CreatedImageIsCorrect ( ) 
323+         [ Theory ] 
324+         [ InlineData ( 25 ,  5 ,  5 ) ] 
325+         [ InlineData ( 26 ,  5 ,  5 ) ] 
326+         [ InlineData ( 2 ,  1 ,  1 ) ] 
327+         [ InlineData ( 1024 ,  32 ,  32 ) ] 
328+         [ InlineData ( 2048 ,  32 ,  32 ) ] 
329+         public  unsafe  void  WrapMemory_FromPointer_CreatedImageIsCorrect ( int  size ,  int  width ,  int  height ) 
322330        { 
323331            var  cfg  =  Configuration . CreateDefaultInstance ( ) ; 
324332            var  metaData  =  new  ImageMetadata ( ) ; 
325333
326-             var  array  =  new  Rgba32 [ 25 ] ; 
334+             var  array  =  new  Rgba32 [ size ] ; 
327335
328336            fixed ( void *  ptr  =  array ) 
329337            { 
330-                 using  ( var  image  =  Image . WrapMemory < Rgba32 > ( cfg ,  ptr ,  25 ,   5 ,   5 ,  metaData ) ) 
338+                 using  ( var  image  =  Image . WrapMemory < Rgba32 > ( cfg ,  ptr ,  size   *   sizeof ( Rgba32 ) ,   width ,   height ,  metaData ) ) 
331339                { 
332340                    Assert . True ( image . DangerousTryGetSinglePixelMemory ( out  Memory < Rgba32 >  imageMem ) ) ; 
333341                    Span < Rgba32 >  imageSpan  =  imageMem . Span ; 
342+                     Span < Rgba32 >  sourceSpan  =  array . AsSpan ( 0 ,  width  *  height ) ; 
334343                    ref  Rgba32  pixel0  =  ref  imageSpan [ 0 ] ; 
335-                     Assert . True ( Unsafe . AreSame ( ref  array [ 0 ] ,  ref  pixel0 ) ) ; 
344+                     Assert . True ( Unsafe . AreSame ( ref  sourceSpan [ 0 ] ,  ref  pixel0 ) ) ; 
336345                    ref  Rgba32  pixel_1  =  ref  imageSpan [ imageSpan . Length  -  1 ] ; 
337-                     Assert . True ( Unsafe . AreSame ( ref  array [ array . Length  -  1 ] ,  ref  pixel_1 ) ) ; 
346+                     Assert . True ( Unsafe . AreSame ( ref  sourceSpan [ sourceSpan . Length  -  1 ] ,  ref  pixel_1 ) ) ; 
338347
339348                    Assert . Equal ( cfg ,  image . Configuration ) ; 
340349                    Assert . Equal ( metaData ,  image . Metadata ) ; 
@@ -395,6 +404,7 @@ public unsafe void WrapSystemDrawingBitmap_FromPointer()
395404        [ InlineData ( 0 ,  5 ,  5 ) ] 
396405        [ InlineData ( 20 ,  5 ,  5 ) ] 
397406        [ InlineData ( 1023 ,  32 ,  32 ) ] 
407+         [ InlineData ( 65536 ,  65537 ,  65536 ) ] 
398408        public  void  WrapMemory_MemoryOfT_InvalidSize ( int  size ,  int  height ,  int  width ) 
399409        { 
400410            var  array  =  new  Rgba32 [ size ] ; 
@@ -430,6 +440,7 @@ private class TestMemoryOwner<T> : IMemoryOwner<T>
430440        [ InlineData ( 0 ,  5 ,  5 ) ] 
431441        [ InlineData ( 20 ,  5 ,  5 ) ] 
432442        [ InlineData ( 1023 ,  32 ,  32 ) ] 
443+         [ InlineData ( 65536 ,  65537 ,  65536 ) ] 
433444        public  void  WrapMemory_IMemoryOwnerOfT_InvalidSize ( int  size ,  int  height ,  int  width ) 
434445        { 
435446            var  array  =  new  Rgba32 [ size ] ; 
@@ -476,6 +487,7 @@ public void WrapMemory_IMemoryOwnerOfT_ValidSize(int size, int height, int width
476487        [ InlineData ( 0 ,  5 ,  5 ) ] 
477488        [ InlineData ( 20 ,  5 ,  5 ) ] 
478489        [ InlineData ( 1023 ,  32 ,  32 ) ] 
490+         [ InlineData ( 65536 ,  65537 ,  65536 ) ] 
479491        public  void  WrapMemory_IMemoryOwnerOfByte_InvalidSize ( int  size ,  int  height ,  int  width ) 
480492        { 
481493            var  array  =  new  byte [ size  *  Unsafe . SizeOf < Rgba32 > ( ) ] ; 
@@ -523,6 +535,7 @@ public void WrapMemory_IMemoryOwnerOfByte_ValidSize(int size, int height, int wi
523535        [ InlineData ( 0 ,  5 ,  5 ) ] 
524536        [ InlineData ( 20 ,  5 ,  5 ) ] 
525537        [ InlineData ( 1023 ,  32 ,  32 ) ] 
538+         [ InlineData ( 65536 ,  65537 ,  65536 ) ] 
526539        public  void  WrapMemory_MemoryOfByte_InvalidSize ( int  size ,  int  height ,  int  width ) 
527540        { 
528541            var  array  =  new  byte [ size  *  Unsafe . SizeOf < Rgba32 > ( ) ] ; 
0 commit comments