@@ -833,6 +833,229 @@ public void Copy_ObjectArray_WithIndices()
833833 Assert . AreEqual ( 4L , dest [ 4 ] ) ;
834834 }
835835
836+ #region Copy (Array-Span overloads)
837+
838+ [ Test , LuceneNetSpecific ]
839+ public void Copy_Int32Array_Span ( )
840+ {
841+ int [ ] source = { 1 , 2 , 3 , 4 , 5 } ;
842+ Span < int > dest = new int [ 5 ] ;
843+ Arrays . Copy ( source , dest , source . Length ) ;
844+ Assert . AreEqual ( 1 , dest [ 0 ] ) ;
845+ Assert . AreEqual ( 2 , dest [ 1 ] ) ;
846+ Assert . AreEqual ( 3 , dest [ 2 ] ) ;
847+ Assert . AreEqual ( 4 , dest [ 3 ] ) ;
848+ Assert . AreEqual ( 5 , dest [ 4 ] ) ;
849+ }
850+
851+ [ Test , LuceneNetSpecific ]
852+ public void Copy_ObjectArray_Span ( )
853+ {
854+ object [ ] source = { 1 , 2f , 3d , 4L , new object ( ) } ;
855+ Span < object > dest = new object [ 5 ] ;
856+ Arrays . Copy ( source , dest , source . Length ) ;
857+ Assert . AreEqual ( 1 , dest [ 0 ] ) ;
858+ Assert . AreEqual ( 2f , dest [ 1 ] ) ;
859+ Assert . AreEqual ( 3d , dest [ 2 ] ) ;
860+ Assert . AreEqual ( 4L , dest [ 3 ] ) ;
861+ Assert . IsNotNull ( dest [ 4 ] ) ;
862+ }
863+
864+ [ Test , LuceneNetSpecific ]
865+ public void Copy_Int32Array_Span_Partial ( )
866+ {
867+ int [ ] source = { 1 , 2 , 3 , 4 , 5 } ;
868+ Span < int > dest = new int [ 3 ] ;
869+ Arrays . Copy ( source , dest , dest . Length ) ;
870+ Assert . AreEqual ( 1 , dest [ 0 ] ) ;
871+ Assert . AreEqual ( 2 , dest [ 1 ] ) ;
872+ Assert . AreEqual ( 3 , dest [ 2 ] ) ;
873+ }
874+
875+ [ Test , LuceneNetSpecific ]
876+ public void Copy_ObjectArray_Span_Partial ( )
877+ {
878+ object [ ] source = { 1 , 2f , 3d , 4L , new object ( ) } ;
879+ Span < object > dest = new object [ 3 ] ;
880+ Arrays . Copy ( source , dest , dest . Length ) ;
881+ Assert . AreEqual ( 1 , dest [ 0 ] ) ;
882+ Assert . AreEqual ( 2f , dest [ 1 ] ) ;
883+ Assert . AreEqual ( 3d , dest [ 2 ] ) ;
884+ }
885+
886+ [ Test , LuceneNetSpecific ]
887+ public void Copy_Int32Array_Span_WithIndices ( )
888+ {
889+ int [ ] source = { 1 , 2 , 3 , 4 , 5 } ;
890+ Span < int > dest = new int [ 5 ] ;
891+ Arrays . Copy ( source , 1 , dest , 2 , 3 ) ;
892+ Assert . AreEqual ( 2 , dest [ 2 ] ) ;
893+ Assert . AreEqual ( 3 , dest [ 3 ] ) ;
894+ Assert . AreEqual ( 4 , dest [ 4 ] ) ;
895+ }
896+
897+ [ Test , LuceneNetSpecific ]
898+ public void Copy_ObjectArray_Span_WithIndices ( )
899+ {
900+ object [ ] source = { 1 , 2f , 3d , 4L , new object ( ) } ;
901+ Span < object > dest = new object [ 5 ] ;
902+ Arrays . Copy ( source , 1 , dest , 2 , 3 ) ;
903+ Assert . AreEqual ( 2f , dest [ 2 ] ) ;
904+ Assert . AreEqual ( 3d , dest [ 3 ] ) ;
905+ Assert . AreEqual ( 4L , dest [ 4 ] ) ;
906+ }
907+
908+ #endregion Copy (Array-Span overloads)
909+
910+ #region Copy (ReadOnlySpan-Array overloads)
911+
912+ [ Test , LuceneNetSpecific ]
913+ public void Copy_ReadOnlySpan_Int32Array ( )
914+ {
915+ ReadOnlySpan < int > source = stackalloc int [ ] { 1 , 2 , 3 , 4 , 5 } ;
916+ int [ ] dest = new int [ 5 ] ;
917+ Arrays . Copy ( source , dest , source . Length ) ;
918+ Assert . AreEqual ( 1 , dest [ 0 ] ) ;
919+ Assert . AreEqual ( 2 , dest [ 1 ] ) ;
920+ Assert . AreEqual ( 3 , dest [ 2 ] ) ;
921+ Assert . AreEqual ( 4 , dest [ 3 ] ) ;
922+ Assert . AreEqual ( 5 , dest [ 4 ] ) ;
923+ }
924+
925+ [ Test , LuceneNetSpecific ]
926+ public void Copy_ReadOnlySpan_ObjectArray ( )
927+ {
928+ ReadOnlySpan < object > source = new object [ ] { 1 , 2f , 3d , 4L , new object ( ) } ;
929+ object [ ] dest = new object [ 5 ] ;
930+ Arrays . Copy ( source , dest , source . Length ) ;
931+ Assert . AreEqual ( 1 , dest [ 0 ] ) ;
932+ Assert . AreEqual ( 2f , dest [ 1 ] ) ;
933+ Assert . AreEqual ( 3d , dest [ 2 ] ) ;
934+ Assert . AreEqual ( 4L , dest [ 3 ] ) ;
935+ Assert . IsNotNull ( dest [ 4 ] ) ;
936+ }
937+
938+ [ Test , LuceneNetSpecific ]
939+ public void Copy_ReadOnlySpan_Int32Array_Partial ( )
940+ {
941+ ReadOnlySpan < int > source = stackalloc int [ ] { 1 , 2 , 3 , 4 , 5 } ;
942+ int [ ] dest = new int [ 3 ] ;
943+ Arrays . Copy ( source , dest , dest . Length ) ;
944+ Assert . AreEqual ( 1 , dest [ 0 ] ) ;
945+ Assert . AreEqual ( 2 , dest [ 1 ] ) ;
946+ Assert . AreEqual ( 3 , dest [ 2 ] ) ;
947+ }
948+
949+ [ Test , LuceneNetSpecific ]
950+ public void Copy_ReadOnlySpan_ObjectArray_Partial ( )
951+ {
952+ ReadOnlySpan < object > source = new object [ ] { 1 , 2f , 3d , 4L , new object ( ) } ;
953+ object [ ] dest = new object [ 3 ] ;
954+ Arrays . Copy ( source , dest , dest . Length ) ;
955+ Assert . AreEqual ( 1 , dest [ 0 ] ) ;
956+ Assert . AreEqual ( 2f , dest [ 1 ] ) ;
957+ Assert . AreEqual ( 3d , dest [ 2 ] ) ;
958+ }
959+
960+ [ Test , LuceneNetSpecific ]
961+ public void Copy_ReadOnlySpan_Int32Array_WithIndices ( )
962+ {
963+ ReadOnlySpan < int > source = stackalloc int [ ] { 1 , 2 , 3 , 4 , 5 } ;
964+ int [ ] dest = new int [ 5 ] ;
965+ Arrays . Copy ( source , 1 , dest , 2 , 3 ) ;
966+ Assert . AreEqual ( 2 , dest [ 2 ] ) ;
967+ Assert . AreEqual ( 3 , dest [ 3 ] ) ;
968+ Assert . AreEqual ( 4 , dest [ 4 ] ) ;
969+ }
970+
971+ [ Test , LuceneNetSpecific ]
972+ public void Copy_ReadOnlySpan_ObjectArray_WithIndices ( )
973+ {
974+ ReadOnlySpan < object > source = new object [ ] { 1 , 2f , 3d , 4L , new object ( ) } ;
975+ object [ ] dest = new object [ 5 ] ;
976+ Arrays . Copy ( source , 1 , dest , 2 , 3 ) ;
977+ Assert . AreEqual ( 2f , dest [ 2 ] ) ;
978+ Assert . AreEqual ( 3d , dest [ 3 ] ) ;
979+ Assert . AreEqual ( 4L , dest [ 4 ] ) ;
980+ }
981+
982+ #endregion Copy (ReadOnlySpan-Array overloads)
983+
984+ #region Copy (ReadOnlySpan-Span overloads)
985+
986+
987+ [ Test , LuceneNetSpecific ]
988+ public void Copy_Int32_ReadOnlySpan_Span ( )
989+ {
990+ ReadOnlySpan < int > source = stackalloc int [ ] { 1 , 2 , 3 , 4 , 5 } ;
991+ Span < int > dest = stackalloc int [ 5 ] ;
992+ Arrays . Copy ( source , dest , source . Length ) ;
993+ Assert . AreEqual ( 1 , dest [ 0 ] ) ;
994+ Assert . AreEqual ( 2 , dest [ 1 ] ) ;
995+ Assert . AreEqual ( 3 , dest [ 2 ] ) ;
996+ Assert . AreEqual ( 4 , dest [ 3 ] ) ;
997+ Assert . AreEqual ( 5 , dest [ 4 ] ) ;
998+ }
999+
1000+ [ Test , LuceneNetSpecific ]
1001+ public void Copy_Object_ReadOnlySpan_Span ( )
1002+ {
1003+ ReadOnlySpan < object > source = new object [ ] { 1 , 2f , 3d , 4L , new object ( ) } ;
1004+ Span < object > dest = new object [ 5 ] ;
1005+ Arrays . Copy ( source , dest , source . Length ) ;
1006+ Assert . AreEqual ( 1 , dest [ 0 ] ) ;
1007+ Assert . AreEqual ( 2f , dest [ 1 ] ) ;
1008+ Assert . AreEqual ( 3d , dest [ 2 ] ) ;
1009+ Assert . AreEqual ( 4L , dest [ 3 ] ) ;
1010+ Assert . IsNotNull ( dest [ 4 ] ) ;
1011+ }
1012+
1013+ [ Test , LuceneNetSpecific ]
1014+ public void Copy_Int32_ReadOnlySpan_Span_Partial ( )
1015+ {
1016+ ReadOnlySpan < int > source = stackalloc int [ ] { 1 , 2 , 3 , 4 , 5 } ;
1017+ Span < int > dest = stackalloc int [ 3 ] ;
1018+ Arrays . Copy ( source , dest , dest . Length ) ;
1019+ Assert . AreEqual ( 1 , dest [ 0 ] ) ;
1020+ Assert . AreEqual ( 2 , dest [ 1 ] ) ;
1021+ Assert . AreEqual ( 3 , dest [ 2 ] ) ;
1022+ }
1023+
1024+ [ Test , LuceneNetSpecific ]
1025+ public void Copy_Object_ReadOnlySpan_Span_Partial ( )
1026+ {
1027+ ReadOnlySpan < object > source = new object [ ] { 1 , 2f , 3d , 4L , new object ( ) } ;
1028+ Span < object > dest = new object [ 3 ] ;
1029+ Arrays . Copy ( source , dest , dest . Length ) ;
1030+ Assert . AreEqual ( 1 , dest [ 0 ] ) ;
1031+ Assert . AreEqual ( 2f , dest [ 1 ] ) ;
1032+ Assert . AreEqual ( 3d , dest [ 2 ] ) ;
1033+ }
1034+
1035+ [ Test , LuceneNetSpecific ]
1036+ public void Copy_Int32_ReadOnlySpan_Span_WithIndices ( )
1037+ {
1038+ ReadOnlySpan < int > source = stackalloc int [ ] { 1 , 2 , 3 , 4 , 5 } ;
1039+ Span < int > dest = stackalloc int [ 5 ] ;
1040+ Arrays . Copy ( source , 1 , dest , 2 , 3 ) ;
1041+ Assert . AreEqual ( 2 , dest [ 2 ] ) ;
1042+ Assert . AreEqual ( 3 , dest [ 3 ] ) ;
1043+ Assert . AreEqual ( 4 , dest [ 4 ] ) ;
1044+ }
1045+
1046+ [ Test , LuceneNetSpecific ]
1047+ public void Copy_Object_ReadOnlySpan_Span_WithIndices ( )
1048+ {
1049+ ReadOnlySpan < object > source = new object [ ] { 1 , 2f , 3d , 4L , new object ( ) } ;
1050+ Span < object > dest = new object [ 5 ] ;
1051+ Arrays . Copy ( source , 1 , dest , 2 , 3 ) ;
1052+ Assert . AreEqual ( 2f , dest [ 2 ] ) ;
1053+ Assert . AreEqual ( 3d , dest [ 3 ] ) ;
1054+ Assert . AreEqual ( 4L , dest [ 4 ] ) ;
1055+ }
1056+
1057+ #endregion Copy (ReadOnlySpan-Span overloads)
1058+
8361059 [ Test , LuceneNetSpecific ]
8371060 public void CopyOf_Int32Array ( )
8381061 {
0 commit comments