@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.
Files changed (61) hide show
  1. package/dist/cjs/ASequence.d.ts +3 -3
  2. package/dist/cjs/ASequence.d.ts.map +1 -1
  3. package/dist/cjs/ASequence.js +10 -20
  4. package/dist/cjs/ASequence.js.map +1 -1
  5. package/dist/cjs/ImmutableSequence.d.ts +2 -2
  6. package/dist/cjs/ImmutableSequence.d.ts.map +1 -1
  7. package/dist/cjs/ImmutableSequence.js +6 -6
  8. package/dist/cjs/ImmutableSequence.js.map +1 -1
  9. package/dist/cjs/MutableSequence.d.ts +2 -2
  10. package/dist/cjs/MutableSequence.d.ts.map +1 -1
  11. package/dist/cjs/MutableSequence.js +2 -2
  12. package/dist/cjs/MutableSequence.js.map +1 -1
  13. package/dist/cjs/ReadonlySequence.d.ts +2 -2
  14. package/dist/cjs/ReadonlySequence.d.ts.map +1 -1
  15. package/dist/cjs/Sequence.d.ts +2 -2
  16. package/dist/cjs/Sequence.d.ts.map +1 -1
  17. package/dist/cjs/index.d.ts +1 -1
  18. package/dist/cjs/index.d.ts.map +1 -1
  19. package/dist/cjs/index.js +1 -1
  20. package/dist/cjs/index.js.map +1 -1
  21. package/dist/cjs/mock/index.d.ts +2 -0
  22. package/dist/cjs/mock/index.d.ts.map +1 -0
  23. package/dist/cjs/mock/index.js +18 -0
  24. package/dist/cjs/mock/index.js.map +1 -0
  25. package/dist/esm/ASequence.d.ts +3 -3
  26. package/dist/esm/ASequence.d.ts.map +1 -1
  27. package/dist/esm/ASequence.js +10 -20
  28. package/dist/esm/ASequence.js.map +1 -1
  29. package/dist/esm/ImmutableSequence.d.ts +2 -2
  30. package/dist/esm/ImmutableSequence.d.ts.map +1 -1
  31. package/dist/esm/ImmutableSequence.js +6 -6
  32. package/dist/esm/ImmutableSequence.js.map +1 -1
  33. package/dist/esm/MutableSequence.d.ts +2 -2
  34. package/dist/esm/MutableSequence.d.ts.map +1 -1
  35. package/dist/esm/MutableSequence.js +2 -2
  36. package/dist/esm/MutableSequence.js.map +1 -1
  37. package/dist/esm/ReadonlySequence.d.ts +2 -2
  38. package/dist/esm/ReadonlySequence.d.ts.map +1 -1
  39. package/dist/esm/Sequence.d.ts +2 -2
  40. package/dist/esm/Sequence.d.ts.map +1 -1
  41. package/dist/esm/index.d.ts +1 -1
  42. package/dist/esm/index.d.ts.map +1 -1
  43. package/dist/esm/index.js +1 -1
  44. package/dist/esm/index.js.map +1 -1
  45. package/dist/esm/mock/index.d.ts +2 -0
  46. package/dist/esm/mock/index.d.ts.map +1 -0
  47. package/dist/esm/mock/index.js +2 -0
  48. package/dist/esm/mock/index.js.map +1 -0
  49. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  50. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  51. package/package.json +6 -7
  52. package/src/ASequence.ts +12 -26
  53. package/src/ImmutableSequence.ts +3 -3
  54. package/src/MutableSequence.ts +3 -3
  55. package/src/ReadonlySequence.ts +2 -2
  56. package/src/Sequence.ts +2 -2
  57. package/src/__tests__/ASequence.spec.ts +151 -151
  58. package/src/__tests__/ImmutableSequence.spec.ts +167 -167
  59. package/src/__tests__/MutableSequence.spec.ts +154 -154
  60. package/src/index.ts +1 -1
  61. 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('isEmpty', () => {
76
- it('returns true if the values does not exist', () => {
77
- const sequence1: MockSequence<MockValueObject<number>> = new MockSequence([
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
- expect(sequence1.isEmpty()).toBe(false);
84
- expect(sequence2.isEmpty()).toBe(true);
34
+ const sequence: MockSequence<MockValueObject<number>> = new MockSequence([value]);
35
+
36
+ expect(sequence.equals(sequence)).toBe(true);
85
37
  });
86
- });
87
38
 
88
- describe('forEach', () => {
89
- it('calls back as much as the size of set', () => {
90
- const sequence: MockSequence<MockValueObject<number>> = new MockSequence([
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
- expect(sequence.size()).toBe(3);
97
- sequence.forEach((value: MockValueObject<number>, index: number) => {
98
- expect(sequence.get(index)).toBe(value);
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
- describe('find', () => {
104
- it('returns the first found value', () => {
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 sequence: MockSequence<MockValueObject<number>> = new MockSequence([
111
- value1,
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
- const found1: Nullable<MockValueObject<number>> = sequence.find((v: MockValueObject<number>) => {
118
- return v.get() === 1;
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
- expect(found1).toBe(value1);
131
- expect(found2).toBe(value2);
132
- expect(found3).toBe(value2);
133
- expect(found4).toBeNull();
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>> = [