@jamashita/lluvia-sequence 2.7.0 → 2.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/ASequence.d.ts +3 -3
- package/dist/cjs/ASequence.d.ts.map +1 -1
- package/dist/cjs/ASequence.js +10 -20
- package/dist/cjs/ASequence.js.map +1 -1
- package/dist/cjs/ImmutableSequence.d.ts +2 -2
- package/dist/cjs/ImmutableSequence.d.ts.map +1 -1
- package/dist/cjs/ImmutableSequence.js +6 -6
- package/dist/cjs/ImmutableSequence.js.map +1 -1
- package/dist/cjs/MutableSequence.d.ts +2 -2
- package/dist/cjs/MutableSequence.d.ts.map +1 -1
- package/dist/cjs/MutableSequence.js +2 -2
- package/dist/cjs/MutableSequence.js.map +1 -1
- package/dist/cjs/ReadonlySequence.d.ts +2 -2
- package/dist/cjs/ReadonlySequence.d.ts.map +1 -1
- package/dist/cjs/Sequence.d.ts +2 -2
- package/dist/cjs/Sequence.d.ts.map +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/mock/index.d.ts +2 -0
- package/dist/cjs/mock/index.d.ts.map +1 -0
- package/dist/cjs/mock/index.js +18 -0
- package/dist/cjs/mock/index.js.map +1 -0
- package/dist/esm/ASequence.d.ts +3 -3
- package/dist/esm/ASequence.d.ts.map +1 -1
- package/dist/esm/ASequence.js +10 -20
- package/dist/esm/ASequence.js.map +1 -1
- package/dist/esm/ImmutableSequence.d.ts +2 -2
- package/dist/esm/ImmutableSequence.d.ts.map +1 -1
- package/dist/esm/ImmutableSequence.js +6 -6
- package/dist/esm/ImmutableSequence.js.map +1 -1
- package/dist/esm/MutableSequence.d.ts +2 -2
- package/dist/esm/MutableSequence.d.ts.map +1 -1
- package/dist/esm/MutableSequence.js +2 -2
- package/dist/esm/MutableSequence.js.map +1 -1
- package/dist/esm/ReadonlySequence.d.ts +2 -2
- package/dist/esm/ReadonlySequence.d.ts.map +1 -1
- package/dist/esm/Sequence.d.ts +2 -2
- package/dist/esm/Sequence.d.ts.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/mock/index.d.ts +2 -0
- package/dist/esm/mock/index.d.ts.map +1 -0
- package/dist/esm/mock/index.js +2 -0
- package/dist/esm/mock/index.js.map +1 -0
- package/dist/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +6 -7
- package/src/ASequence.ts +12 -26
- package/src/ImmutableSequence.ts +3 -3
- package/src/MutableSequence.ts +3 -3
- package/src/ReadonlySequence.ts +2 -2
- package/src/Sequence.ts +2 -2
- package/src/__tests__/ASequence.spec.ts +151 -151
- package/src/__tests__/ImmutableSequence.spec.ts +167 -167
- package/src/__tests__/MutableSequence.spec.ts +154 -154
- package/src/index.ts +1 -1
- package/src/mock/index.ts +1 -0
@@ -3,51 +3,6 @@ import { Nullable, Predicate } from '@jamashita/anden-type';
|
|
3
3
|
import { MockSequence } from '../mock/MockSequence';
|
4
4
|
|
5
5
|
describe('ASequence', () => {
|
6
|
-
describe('iterator', () => {
|
7
|
-
it('returns [number, MockValueObject<number>]', () => {
|
8
|
-
const sequence: MockSequence<MockValueObject<number>> = new MockSequence([
|
9
|
-
new MockValueObject(1),
|
10
|
-
new MockValueObject(2)
|
11
|
-
]);
|
12
|
-
|
13
|
-
let i: number = 0;
|
14
|
-
|
15
|
-
for (const value of sequence) {
|
16
|
-
expect(value[0]).toBe(i);
|
17
|
-
expect(value[1].get()).toBe(sequence.get(i)?.get());
|
18
|
-
i++;
|
19
|
-
}
|
20
|
-
});
|
21
|
-
});
|
22
|
-
|
23
|
-
describe('get', () => {
|
24
|
-
it('returns value at the correct key', () => {
|
25
|
-
const values: Array<MockValueObject<number>> = [
|
26
|
-
new MockValueObject(1),
|
27
|
-
new MockValueObject(2),
|
28
|
-
new MockValueObject(3)
|
29
|
-
];
|
30
|
-
|
31
|
-
const sequence: MockSequence<MockValueObject<number>> = new MockSequence(values);
|
32
|
-
|
33
|
-
expect(sequence.size()).toBe(values.length);
|
34
|
-
for (let i: number = 0; i < sequence.size(); i++) {
|
35
|
-
expect(sequence.get(i)).toBe(values[i]);
|
36
|
-
}
|
37
|
-
});
|
38
|
-
|
39
|
-
it('returns null at incorrect keys', () => {
|
40
|
-
const sequence: MockSequence<MockValueObject<number>> = new MockSequence([
|
41
|
-
new MockValueObject(1),
|
42
|
-
new MockValueObject(2),
|
43
|
-
new MockValueObject(3)
|
44
|
-
]);
|
45
|
-
|
46
|
-
expect(sequence.get(-1)).toBeNull();
|
47
|
-
expect(sequence.get(3)).toBeNull();
|
48
|
-
});
|
49
|
-
});
|
50
|
-
|
51
6
|
describe('contains', () => {
|
52
7
|
it('returns false if the value does not exist', () => {
|
53
8
|
const value1: MockValueObject<number> = new MockValueObject(1);
|
@@ -72,65 +27,49 @@ describe('ASequence', () => {
|
|
72
27
|
});
|
73
28
|
});
|
74
29
|
|
75
|
-
describe('
|
76
|
-
it('returns true
|
77
|
-
const
|
78
|
-
new MockValueObject(1),
|
79
|
-
new MockValueObject(2)
|
80
|
-
]);
|
81
|
-
const sequence2: MockSequence<MockValueObject<number>> = new MockSequence([]);
|
30
|
+
describe('equals', () => {
|
31
|
+
it('returns true when the same instance given', () => {
|
32
|
+
const value: MockValueObject<number> = new MockValueObject(1);
|
82
33
|
|
83
|
-
|
84
|
-
|
34
|
+
const sequence: MockSequence<MockValueObject<number>> = new MockSequence([value]);
|
35
|
+
|
36
|
+
expect(sequence.equals(sequence)).toBe(true);
|
85
37
|
});
|
86
|
-
});
|
87
38
|
|
88
|
-
|
89
|
-
|
90
|
-
const
|
91
|
-
new MockValueObject(1),
|
92
|
-
new MockValueObject(2),
|
93
|
-
new MockValueObject(3)
|
94
|
-
]);
|
39
|
+
it('returns false if the size is different', () => {
|
40
|
+
const value1: MockValueObject<number> = new MockValueObject(1);
|
41
|
+
const value2: MockValueObject<number> = new MockValueObject(2);
|
95
42
|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
43
|
+
const sequence1: MockSequence<MockValueObject<number>> = new MockSequence([value1]);
|
44
|
+
const sequence2: MockSequence<MockValueObject<number>> = new MockSequence([value1, value2]);
|
45
|
+
|
46
|
+
expect(sequence1.equals(sequence2)).toBe(false);
|
100
47
|
});
|
101
|
-
});
|
102
48
|
|
103
|
-
|
104
|
-
|
49
|
+
it('returns false when the different class instance given', () => {
|
50
|
+
const sequence: MockSequence<MockValueObject<number>> = new MockSequence([]);
|
51
|
+
|
52
|
+
expect(sequence.equals(new MockValueObject('mock'))).toBe(false);
|
53
|
+
});
|
54
|
+
|
55
|
+
it('returns true even if the order is different', () => {
|
105
56
|
const value1: MockValueObject<number> = new MockValueObject(1);
|
106
57
|
const value2: MockValueObject<number> = new MockValueObject(2);
|
107
|
-
const value3: MockValueObject<number> = new MockValueObject(3);
|
108
|
-
const value4: MockValueObject<number> = new MockValueObject(4);
|
109
58
|
|
110
|
-
const
|
111
|
-
|
112
|
-
value2,
|
113
|
-
value3,
|
114
|
-
value4
|
115
|
-
]);
|
59
|
+
const sequence1: MockSequence<MockValueObject<number>> = new MockSequence([value2, value1]);
|
60
|
+
const sequence2: MockSequence<MockValueObject<number>> = new MockSequence([value1, value2]);
|
116
61
|
|
117
|
-
|
118
|
-
|
119
|
-
});
|
120
|
-
const found2: Nullable<MockValueObject<number>> = sequence.find((v: MockValueObject<number>) => {
|
121
|
-
return v.get() === 2;
|
122
|
-
});
|
123
|
-
const found3: Nullable<MockValueObject<number>> = sequence.find((v: MockValueObject<number>) => {
|
124
|
-
return v.get() % 2 === 0;
|
125
|
-
});
|
126
|
-
const found4: Nullable<MockValueObject<number>> = sequence.find((v: MockValueObject<number>) => {
|
127
|
-
return v.get() > 1000;
|
128
|
-
});
|
62
|
+
expect(sequence1.equals(sequence2)).toBe(false);
|
63
|
+
});
|
129
64
|
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
65
|
+
it('returns true if the length is the same and the sequence is the same', () => {
|
66
|
+
const value1: MockValueObject<number> = new MockValueObject(1);
|
67
|
+
const value2: MockValueObject<number> = new MockValueObject(2);
|
68
|
+
|
69
|
+
const sequence1: MockSequence<MockValueObject<number>> = new MockSequence([value1, value2]);
|
70
|
+
const sequence2: MockSequence<MockValueObject<number>> = new MockSequence([value1, value2]);
|
71
|
+
|
72
|
+
expect(sequence1.equals(sequence2)).toBe(true);
|
134
73
|
});
|
135
74
|
});
|
136
75
|
|
@@ -214,6 +153,113 @@ describe('ASequence', () => {
|
|
214
153
|
});
|
215
154
|
});
|
216
155
|
|
156
|
+
describe('find', () => {
|
157
|
+
it('returns the first found value', () => {
|
158
|
+
const value1: MockValueObject<number> = new MockValueObject(1);
|
159
|
+
const value2: MockValueObject<number> = new MockValueObject(2);
|
160
|
+
const value3: MockValueObject<number> = new MockValueObject(3);
|
161
|
+
const value4: MockValueObject<number> = new MockValueObject(4);
|
162
|
+
|
163
|
+
const sequence: MockSequence<MockValueObject<number>> = new MockSequence([
|
164
|
+
value1,
|
165
|
+
value2,
|
166
|
+
value3,
|
167
|
+
value4
|
168
|
+
]);
|
169
|
+
|
170
|
+
const found1: Nullable<MockValueObject<number>> = sequence.find((v: MockValueObject<number>) => {
|
171
|
+
return v.get() === 1;
|
172
|
+
});
|
173
|
+
const found2: Nullable<MockValueObject<number>> = sequence.find((v: MockValueObject<number>) => {
|
174
|
+
return v.get() === 2;
|
175
|
+
});
|
176
|
+
const found3: Nullable<MockValueObject<number>> = sequence.find((v: MockValueObject<number>) => {
|
177
|
+
return v.get() % 2 === 0;
|
178
|
+
});
|
179
|
+
const found4: Nullable<MockValueObject<number>> = sequence.find((v: MockValueObject<number>) => {
|
180
|
+
return v.get() > 1000;
|
181
|
+
});
|
182
|
+
|
183
|
+
expect(found1).toBe(value1);
|
184
|
+
expect(found2).toBe(value2);
|
185
|
+
expect(found3).toBe(value2);
|
186
|
+
expect(found4).toBeNull();
|
187
|
+
});
|
188
|
+
});
|
189
|
+
|
190
|
+
describe('forEach', () => {
|
191
|
+
it('calls back as much as the size of set', () => {
|
192
|
+
const sequence: MockSequence<MockValueObject<number>> = new MockSequence([
|
193
|
+
new MockValueObject(1),
|
194
|
+
new MockValueObject(2),
|
195
|
+
new MockValueObject(3)
|
196
|
+
]);
|
197
|
+
|
198
|
+
expect(sequence.size()).toBe(3);
|
199
|
+
sequence.forEach((value: MockValueObject<number>, index: number) => {
|
200
|
+
expect(sequence.get(index)).toBe(value);
|
201
|
+
});
|
202
|
+
});
|
203
|
+
});
|
204
|
+
|
205
|
+
describe('get', () => {
|
206
|
+
it('returns value at the correct key', () => {
|
207
|
+
const values: Array<MockValueObject<number>> = [
|
208
|
+
new MockValueObject(1),
|
209
|
+
new MockValueObject(2),
|
210
|
+
new MockValueObject(3)
|
211
|
+
];
|
212
|
+
|
213
|
+
const sequence: MockSequence<MockValueObject<number>> = new MockSequence(values);
|
214
|
+
|
215
|
+
expect(sequence.size()).toBe(values.length);
|
216
|
+
for (let i: number = 0; i < sequence.size(); i++) {
|
217
|
+
expect(sequence.get(i)).toBe(values[i]);
|
218
|
+
}
|
219
|
+
});
|
220
|
+
|
221
|
+
it('returns null at incorrect keys', () => {
|
222
|
+
const sequence: MockSequence<MockValueObject<number>> = new MockSequence([
|
223
|
+
new MockValueObject(1),
|
224
|
+
new MockValueObject(2),
|
225
|
+
new MockValueObject(3)
|
226
|
+
]);
|
227
|
+
|
228
|
+
expect(sequence.get(-1)).toBeNull();
|
229
|
+
expect(sequence.get(3)).toBeNull();
|
230
|
+
});
|
231
|
+
});
|
232
|
+
|
233
|
+
describe('isEmpty', () => {
|
234
|
+
it('returns true if the values does not exist', () => {
|
235
|
+
const sequence1: MockSequence<MockValueObject<number>> = new MockSequence([
|
236
|
+
new MockValueObject(1),
|
237
|
+
new MockValueObject(2)
|
238
|
+
]);
|
239
|
+
const sequence2: MockSequence<MockValueObject<number>> = new MockSequence([]);
|
240
|
+
|
241
|
+
expect(sequence1.isEmpty()).toBe(false);
|
242
|
+
expect(sequence2.isEmpty()).toBe(true);
|
243
|
+
});
|
244
|
+
});
|
245
|
+
|
246
|
+
describe('iterator', () => {
|
247
|
+
it('returns [number, MockValueObject<number>]', () => {
|
248
|
+
const sequence: MockSequence<MockValueObject<number>> = new MockSequence([
|
249
|
+
new MockValueObject(1),
|
250
|
+
new MockValueObject(2)
|
251
|
+
]);
|
252
|
+
|
253
|
+
let i: number = 0;
|
254
|
+
|
255
|
+
for (const value of sequence) {
|
256
|
+
expect(value[0]).toBe(i);
|
257
|
+
expect(value[1].get()).toBe(sequence.get(i)?.get());
|
258
|
+
i++;
|
259
|
+
}
|
260
|
+
});
|
261
|
+
});
|
262
|
+
|
217
263
|
describe('reduce', () => {
|
218
264
|
it('throws TypeError when array size is 0 and initialValue is undefined', () => {
|
219
265
|
const sequence: MockSequence<MockValueObject<number>> = new MockSequence([]);
|
@@ -301,64 +347,6 @@ describe('ASequence', () => {
|
|
301
347
|
});
|
302
348
|
});
|
303
349
|
|
304
|
-
describe('equals', () => {
|
305
|
-
it('returns true when the same instance given', () => {
|
306
|
-
const value: MockValueObject<number> = new MockValueObject(1);
|
307
|
-
|
308
|
-
const sequence: MockSequence<MockValueObject<number>> = new MockSequence([value]);
|
309
|
-
|
310
|
-
expect(sequence.equals(sequence)).toBe(true);
|
311
|
-
});
|
312
|
-
|
313
|
-
it('returns false if the size is different', () => {
|
314
|
-
const value1: MockValueObject<number> = new MockValueObject(1);
|
315
|
-
const value2: MockValueObject<number> = new MockValueObject(2);
|
316
|
-
|
317
|
-
const sequence1: MockSequence<MockValueObject<number>> = new MockSequence([value1]);
|
318
|
-
const sequence2: MockSequence<MockValueObject<number>> = new MockSequence([value1, value2]);
|
319
|
-
|
320
|
-
expect(sequence1.equals(sequence2)).toBe(false);
|
321
|
-
});
|
322
|
-
|
323
|
-
it('returns false when the different class instance given', () => {
|
324
|
-
const sequence: MockSequence<MockValueObject<number>> = new MockSequence([]);
|
325
|
-
|
326
|
-
expect(sequence.equals(new MockValueObject('mock'))).toBe(false);
|
327
|
-
});
|
328
|
-
|
329
|
-
it('returns true even if the order is different', () => {
|
330
|
-
const value1: MockValueObject<number> = new MockValueObject(1);
|
331
|
-
const value2: MockValueObject<number> = new MockValueObject(2);
|
332
|
-
|
333
|
-
const sequence1: MockSequence<MockValueObject<number>> = new MockSequence([value2, value1]);
|
334
|
-
const sequence2: MockSequence<MockValueObject<number>> = new MockSequence([value1, value2]);
|
335
|
-
|
336
|
-
expect(sequence1.equals(sequence2)).toBe(false);
|
337
|
-
});
|
338
|
-
|
339
|
-
it('returns true if the length is the same and the sequence is the same', () => {
|
340
|
-
const value1: MockValueObject<number> = new MockValueObject(1);
|
341
|
-
const value2: MockValueObject<number> = new MockValueObject(2);
|
342
|
-
|
343
|
-
const sequence1: MockSequence<MockValueObject<number>> = new MockSequence([value1, value2]);
|
344
|
-
const sequence2: MockSequence<MockValueObject<number>> = new MockSequence([value1, value2]);
|
345
|
-
|
346
|
-
expect(sequence1.equals(sequence2)).toBe(true);
|
347
|
-
});
|
348
|
-
});
|
349
|
-
|
350
|
-
describe('toString', () => {
|
351
|
-
it('returns concatenated string', () => {
|
352
|
-
const sequence: MockSequence<MockValueObject<number>> = new MockSequence([
|
353
|
-
new MockValueObject(1),
|
354
|
-
new MockValueObject(2),
|
355
|
-
new MockValueObject(3)
|
356
|
-
]);
|
357
|
-
|
358
|
-
expect(sequence.toString()).toBe('1, 2, 3');
|
359
|
-
});
|
360
|
-
});
|
361
|
-
|
362
350
|
describe('toArray', () => {
|
363
351
|
it('returns its retaining shallow-copied array', () => {
|
364
352
|
const values: Array<MockValueObject<number>> = [
|
@@ -381,6 +369,18 @@ describe('ASequence', () => {
|
|
381
369
|
});
|
382
370
|
});
|
383
371
|
|
372
|
+
describe('toString', () => {
|
373
|
+
it('returns concatenated string', () => {
|
374
|
+
const sequence: MockSequence<MockValueObject<number>> = new MockSequence([
|
375
|
+
new MockValueObject(1),
|
376
|
+
new MockValueObject(2),
|
377
|
+
new MockValueObject(3)
|
378
|
+
]);
|
379
|
+
|
380
|
+
expect(sequence.toString()).toBe('1, 2, 3');
|
381
|
+
});
|
382
|
+
});
|
383
|
+
|
384
384
|
describe('values', () => {
|
385
385
|
it('returns its retaining values', () => {
|
386
386
|
const values: Array<MockValueObject<number>> = [
|