33 dataProviderForSliceOutOfBoundsPythonAutoGenerated ,
44 // @ts -ignore
55} from "../fixtures/python-slices" ;
6- import { view } from "../../src" ;
6+ import { slice , view } from "../../src" ;
77
88describe . each ( [
99 ...dataProviderForSliceSubviewRead ( ) ,
@@ -76,6 +76,40 @@ describe.each([
7676 } ,
7777) ;
7878
79+
80+ describe . each ( [
81+ ...dataProviderForSliceSubviewRead ( ) ,
82+ ...dataProviderForSliceArraySubviewRead ( ) ,
83+ ] as Array < [ Array < number > , string | Array < number | undefined > , Array < number > ] > ) (
84+ "Array View Slice Array Subview Loc Read Test" ,
85+ (
86+ source : Array < number > ,
87+ config : string | Array < number | undefined > ,
88+ expected : Array < number > ,
89+ ) => {
90+ it ( "" , ( ) => {
91+ // Given
92+ const v = view ( source ) ;
93+ const slicedArray = v . subview ( slice ( config ) ) . loc [ ':' ] ;
94+
95+ expect ( slicedArray ) . toEqual ( expected ) ;
96+ expect ( slicedArray . length ) . toEqual ( expected . length ) ;
97+
98+ for ( let i = 0 ; i < slicedArray . length ; i ++ ) {
99+ expect ( slicedArray [ i ] ) . toBe ( expected [ i ] ) ;
100+ }
101+
102+ for ( let i = 0 ; i < v . length ; i ++ ) {
103+ expect ( v . loc [ i ] ) . toBe ( source [ i ] ) ;
104+ }
105+
106+ // And then
107+ expect ( v . toArray ( ) ) . toEqual ( source ) ;
108+ expect ( slicedArray ) . toEqual ( expected ) ;
109+ } ) ;
110+ } ,
111+ ) ;
112+
79113function dataProviderForSliceSubviewRead ( ) : Array < unknown > {
80114 return [
81115 [ [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] , '1:6' , [ 2 , 3 , 4 , 5 , 6 ] ] ,
@@ -129,6 +163,17 @@ function dataProviderForSliceSubviewRead(): Array<unknown> {
129163 ] ;
130164}
131165
166+ function dataProviderForSliceArraySubviewRead ( ) : Array < unknown > {
167+ return [
168+ [ [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] , [ 1 , 6 ] , [ 2 , 3 , 4 , 5 , 6 ] ] ,
169+ [ [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] , [ 1 , 6 , 1 ] , [ 2 , 3 , 4 , 5 , 6 ] ] ,
170+ [ [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] , [ 1 , 6 , 2 ] , [ 2 , 4 , 6 ] ] ,
171+ [ [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] , [ 2 , 8 ] , [ 3 , 4 , 5 , 6 , 7 , 8 ] ] ,
172+ [ [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] , [ 2 , 8 , 1 ] , [ 3 , 4 , 5 , 6 , 7 , 8 ] ] ,
173+ [ [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] , [ 2 , 8 , 2 ] , [ 3 , 5 , 7 ] ] ,
174+ ] ;
175+ }
176+
132177describe . each ( [
133178 ...dataProviderForSliceSubviewWrite ( ) ,
134179] as Array < [ Array < number > , string , Array < number > , Array < number > ] > ) (
@@ -153,6 +198,31 @@ describe.each([
153198 } ,
154199) ;
155200
201+ describe . each ( [
202+ ...dataProviderForSliceSubviewWrite ( ) ,
203+ ...dataProviderForSliceArraySubviewWrite ( ) ,
204+ ] as Array < [ Array < number > , string | Array < number | undefined > , Array < number > , Array < number > ] > ) (
205+ "Array View Slice Subview Loc Write Test" ,
206+ (
207+ source : Array < number > ,
208+ config : string | Array < number | undefined > ,
209+ toWrite : Array < number > ,
210+ expected : Array < number > ,
211+ ) => {
212+ it ( "" , ( ) => {
213+ // Given
214+ const v = view ( source ) ;
215+
216+ // When
217+ v . subview ( slice ( config ) ) . loc [ ':' ] = toWrite ;
218+
219+ // And then
220+ expect ( v . toArray ( ) ) . toEqual ( expected ) ;
221+ expect ( source ) . toEqual ( expected ) ;
222+ } ) ;
223+ } ,
224+ ) ;
225+
156226function dataProviderForSliceSubviewWrite ( ) : Array < unknown > {
157227 return [
158228 [ [ ] , ':' , [ ] , [ ] ] ,
@@ -173,3 +243,25 @@ function dataProviderForSliceSubviewWrite(): Array<unknown> {
173243 [ [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ] , '1:-1:2' , [ 77 , 88 , 99 ] , [ 1 , 77 , 3 , 88 , 5 , 99 , 7 , 8 ] ] ,
174244 ] ;
175245}
246+
247+ function dataProviderForSliceArraySubviewWrite ( ) : Array < unknown > {
248+ return [
249+ [ [ ] , [ ] , [ ] , [ ] ] ,
250+ [ [ ] , [ , ] , [ ] , [ ] ] ,
251+ [ [ 1 ] , [ , ] , [ 11 ] , [ 11 ] ] ,
252+ [ [ 1 , 2 , 3 ] , [ , ] , [ 2 , 4 , 6 ] , [ 2 , 4 , 6 ] ] ,
253+ [ [ 1 , 2 , 3 ] , [ 0 , ] , [ 2 , 4 , 6 ] , [ 2 , 4 , 6 ] ] ,
254+ [ [ 1 , 2 , 3 ] , [ 0 , 3 ] , [ 2 , 4 , 6 ] , [ 2 , 4 , 6 ] ] ,
255+ [ [ 1 , 2 , 3 ] , [ 0 , 3 ] , [ 2 , 4 , 6 ] , [ 2 , 4 , 6 ] ] ,
256+ [ [ 1 , 2 , 3 ] , [ 1 , ] , [ 22 , 33 ] , [ 1 , 22 , 33 ] ] ,
257+ [ [ 1 , 2 , 3 ] , [ , 2 ] , [ 11 , 22 ] , [ 11 , 22 , 3 ] ] ,
258+ [ [ 1 , 2 , 3 ] , [ , - 1 ] , [ 11 , 22 ] , [ 11 , 22 , 3 ] ] ,
259+ [ [ 1 , 2 , 3 , 4 , 5 , 6 ] , [ , , 2 ] , [ 77 , 88 , 99 ] , [ 77 , 2 , 88 , 4 , 99 , 6 ] ] ,
260+ [ [ 1 , 2 , 3 , 4 , 5 , 6 ] , [ , , - 2 ] , [ 77 , 88 , 99 ] , [ 1 , 99 , 3 , 88 , 5 , 77 ] ] ,
261+ [ [ 1 , 2 , 3 , 4 , 5 , 6 ] , [ 1 , , 2 ] , [ 77 , 88 , 99 ] , [ 1 , 77 , 3 , 88 , 5 , 99 ] ] ,
262+ [ [ 1 , 2 , 3 , 4 , 5 , 6 ] , [ - 2 , , - 2 ] , [ 77 , 88 , 99 ] , [ 99 , 2 , 88 , 4 , 77 , 6 ] ] ,
263+ [ [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ] , [ , - 2 , 2 ] , [ 77 , 88 , 99 ] , [ 77 , 2 , 88 , 4 , 99 , 6 , 7 , 8 ] ] ,
264+ [ [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ] , [ , 6 , 2 ] , [ 77 , 88 , 99 ] , [ 77 , 2 , 88 , 4 , 99 , 6 , 7 , 8 ] ] ,
265+ [ [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ] , [ 1 , - 1 , 2 ] , [ 77 , 88 , 99 ] , [ 1 , 77 , 3 , 88 , 5 , 99 , 7 , 8 ] ] ,
266+ ] ;
267+ }
0 commit comments