@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,6 +3,16 @@ import { Nullable } from '@jamashita/anden-type';
3
3
  import { MutableSequence } from '../MutableSequence';
4
4
 
5
5
  describe('MutableSequence', () => {
6
+ describe('empty', () => {
7
+ it('does not return singleton instance', () => {
8
+ expect(MutableSequence.empty()).not.toBe(MutableSequence.empty());
9
+ });
10
+
11
+ it('always returns 0-size array', () => {
12
+ expect(MutableSequence.empty().isEmpty()).toBe(true);
13
+ });
14
+ });
15
+
6
16
  describe('of', () => {
7
17
  it('returns copied collection, does not use the same one', () => {
8
18
  const sequence: MutableSequence<MockValueObject<number>> = MutableSequence.ofArray([
@@ -45,16 +55,6 @@ describe('MutableSequence', () => {
45
55
  });
46
56
  });
47
57
 
48
- describe('empty', () => {
49
- it('does not return singleton instance', () => {
50
- expect(MutableSequence.empty()).not.toBe(MutableSequence.empty());
51
- });
52
-
53
- it('always returns 0-size array', () => {
54
- expect(MutableSequence.empty().isEmpty()).toBe(true);
55
- });
56
- });
57
-
58
58
  describe('add', () => {
59
59
  it('can extend mutably', () => {
60
60
  const value1: MockValueObject<number> = new MockValueObject(1);
@@ -88,101 +88,98 @@ describe('MutableSequence', () => {
88
88
  });
89
89
  });
90
90
 
91
- describe('set', () => {
92
- it('can be set the value into first position', () => {
93
- const value1: MockValueObject<number> = new MockValueObject(1);
94
- const value2: MockValueObject<number> = new MockValueObject(2);
95
- const value3: MockValueObject<number> = new MockValueObject(3);
96
- const value4: MockValueObject<number> = new MockValueObject(4);
97
-
91
+ describe('duplicate', () => {
92
+ it('returns shallow-copied instance', () => {
98
93
  const sequence1: MutableSequence<MockValueObject<number>> = MutableSequence.ofArray([
99
- value1,
100
- value2,
101
- value3
94
+ new MockValueObject(1),
95
+ new MockValueObject(2),
96
+ new MockValueObject(3),
97
+ new MockValueObject(2)
102
98
  ]);
103
- const sequence2: MutableSequence<MockValueObject<number>> = sequence1.set(0, value4);
99
+ const sequence2: MutableSequence<MockValueObject<number>> = sequence1.duplicate();
104
100
 
105
- expect(sequence1).toBe(sequence2);
106
- expect(sequence1.size()).toBe(3);
107
- expect(sequence2.get(0)).toBe(value4);
108
- expect(sequence2.get(1)).toBe(value2);
109
- expect(sequence2.get(2)).toBe(value3);
101
+ expect(sequence1.size()).toBe(sequence2.size());
102
+ expect(sequence1).not.toBe(sequence2);
103
+ sequence1.forEach((v: MockValueObject<number>, k: number) => {
104
+ expect(v).toBe(sequence2.get(k));
105
+ });
110
106
  });
107
+ });
111
108
 
112
- it('can be set the value into middle position', () => {
109
+ describe('filter', () => {
110
+ it('can remove match values', () => {
113
111
  const value1: MockValueObject<number> = new MockValueObject(1);
114
112
  const value2: MockValueObject<number> = new MockValueObject(2);
115
113
  const value3: MockValueObject<number> = new MockValueObject(3);
116
- const value4: MockValueObject<number> = new MockValueObject(4);
114
+ const value4: MockValueObject<number> = new MockValueObject(2);
115
+ const value5: MockValueObject<number> = new MockValueObject(5);
117
116
 
118
- const sequence1: MutableSequence<MockValueObject<number>> = MutableSequence.ofArray([
117
+ const sequence: MutableSequence<MockValueObject<number>> = MutableSequence.ofArray([
119
118
  value1,
120
119
  value2,
121
- value3
120
+ value3,
121
+ value4
122
122
  ]);
123
- const sequence2: MutableSequence<MockValueObject<number>> = sequence1.set(1, value4);
124
123
 
125
- expect(sequence1).toBe(sequence2);
126
- expect(sequence1.size()).toBe(3);
127
- expect(sequence2.get(0)).toBe(value1);
128
- expect(sequence2.get(1)).toBe(value4);
129
- expect(sequence2.get(2)).toBe(value3);
130
- });
124
+ const filtered1: MutableSequence<MockValueObject<number>> = sequence.filter((v: MockValueObject<number>) => {
125
+ return v.get() % 2 === 0;
126
+ });
127
+ const filtered2: MutableSequence<MockValueObject<number>> = sequence.filter((v: MockValueObject<number>) => {
128
+ return v === value4;
129
+ });
130
+ const filtered3: MutableSequence<MockValueObject<number>> = sequence.filter((v: MockValueObject<number>) => {
131
+ return v === value5;
132
+ });
131
133
 
132
- it('can be set the value into last position', () => {
133
- const value1: MockValueObject<number> = new MockValueObject(1);
134
- const value2: MockValueObject<number> = new MockValueObject(2);
135
- const value3: MockValueObject<number> = new MockValueObject(3);
136
- const value4: MockValueObject<number> = new MockValueObject(4);
134
+ expect(filtered1.size()).toBe(2);
135
+ expect(filtered1.get(0)).toBe(value2);
136
+ expect(filtered1.get(1)).toBe(value4);
137
+ expect(filtered2.size()).toBe(1);
138
+ expect(filtered2.get(0)).toBe(value4);
139
+ expect(filtered3.size()).toBe(0);
140
+ });
141
+ });
137
142
 
143
+ describe('isEmpty', () => {
144
+ it('returns true if the value size is 0', () => {
138
145
  const sequence1: MutableSequence<MockValueObject<number>> = MutableSequence.ofArray([
139
- value1,
140
- value2,
141
- value3
146
+ new MockValueObject(1),
147
+ new MockValueObject(2)
142
148
  ]);
143
- const sequence2: MutableSequence<MockValueObject<number>> = sequence1.set(2, value4);
144
-
145
- expect(sequence1).toBe(sequence2);
146
- expect(sequence1.size()).toBe(3);
147
- expect(sequence2.get(0)).toBe(value1);
148
- expect(sequence2.get(1)).toBe(value2);
149
- expect(sequence2.get(2)).toBe(value4);
150
- });
151
-
152
- it('returns itself when given key is less than 0', () => {
153
- const value: MockValueObject<number> = new MockValueObject(1);
154
-
155
- const sequence1: MutableSequence<MockValueObject<number>> = MutableSequence.ofArray([]);
156
- const beforeLength: number = sequence1.size();
157
-
158
- const sequence2: MutableSequence<MockValueObject<number>> = sequence1.set(-1, value);
149
+ const sequence2: MutableSequence<MockValueObject<number>> = MutableSequence.ofArray([]);
159
150
 
160
- expect(sequence1).toBe(sequence2);
161
- expect(sequence1.size()).toBe(beforeLength);
151
+ expect(sequence1.isEmpty()).toBe(false);
152
+ expect(sequence2.isEmpty()).toBe(true);
162
153
  });
154
+ });
163
155
 
164
- it('returns itself when given key is greater than sequence length', () => {
165
- const value: MockValueObject<number> = new MockValueObject(1);
166
-
167
- const sequence1: MutableSequence<MockValueObject<number>> = MutableSequence.ofArray([]);
168
- const beforeLength: number = sequence1.size();
169
-
170
- const sequence2: MutableSequence<MockValueObject<number>> = sequence1.set(300, value);
171
-
172
- expect(sequence1).toBe(sequence2);
173
- expect(sequence1.size()).toBe(beforeLength);
174
- });
156
+ describe('map', () => {
157
+ it('execute the mapper function and returns mapped Address immutably', () => {
158
+ const sequence1: MutableSequence<MockValueObject<number>> = MutableSequence.ofArray([
159
+ new MockValueObject(1),
160
+ new MockValueObject(2),
161
+ new MockValueObject(3)
162
+ ]);
163
+ const sequence2: MutableSequence<MockValueObject<string>> = sequence1.map(
164
+ (value: MockValueObject<number>): MockValueObject<string> => {
165
+ const num: number = value.get();
175
166
 
176
- it('returns itself when given key is not integer', () => {
177
- const value: MockValueObject<number> = new MockValueObject(1);
167
+ return new MockValueObject<string>(`${num ** 2}`);
168
+ }
169
+ );
178
170
 
179
- const sequence1: MutableSequence<MockValueObject<number>> = MutableSequence.ofArray([]);
180
- const beforeLength: number = sequence1.size();
171
+ expect(sequence1.size()).toBe(sequence2.size());
172
+ expect(sequence1).not.toBe(sequence2);
173
+ sequence2.forEach((v: MockValueObject<string>, k: number) => {
174
+ const value: Nullable<MockValueObject<number>> = sequence1.get(k);
181
175
 
182
- const sequence2: MutableSequence<MockValueObject<number>> = sequence1.set(0.9, value);
176
+ if (value === null) {
177
+ fail();
178
+ return;
179
+ }
183
180
 
184
- expect(sequence1).toBe(sequence2);
185
- expect(sequence1.size()).toBe(beforeLength);
181
+ expect(v.get()).toBe(`${value.get() ** 2}`);
182
+ });
186
183
  });
187
184
  });
188
185
 
@@ -285,80 +282,101 @@ describe('MutableSequence', () => {
285
282
  });
286
283
  });
287
284
 
288
- describe('isEmpty', () => {
289
- it('returns true if the value size is 0', () => {
285
+ describe('set', () => {
286
+ it('can be set the value into first position', () => {
287
+ const value1: MockValueObject<number> = new MockValueObject(1);
288
+ const value2: MockValueObject<number> = new MockValueObject(2);
289
+ const value3: MockValueObject<number> = new MockValueObject(3);
290
+ const value4: MockValueObject<number> = new MockValueObject(4);
291
+
290
292
  const sequence1: MutableSequence<MockValueObject<number>> = MutableSequence.ofArray([
291
- new MockValueObject(1),
292
- new MockValueObject(2)
293
+ value1,
294
+ value2,
295
+ value3
293
296
  ]);
294
- const sequence2: MutableSequence<MockValueObject<number>> = MutableSequence.ofArray([]);
297
+ const sequence2: MutableSequence<MockValueObject<number>> = sequence1.set(0, value4);
295
298
 
296
- expect(sequence1.isEmpty()).toBe(false);
297
- expect(sequence2.isEmpty()).toBe(true);
299
+ expect(sequence1).toBe(sequence2);
300
+ expect(sequence1.size()).toBe(3);
301
+ expect(sequence2.get(0)).toBe(value4);
302
+ expect(sequence2.get(1)).toBe(value2);
303
+ expect(sequence2.get(2)).toBe(value3);
298
304
  });
299
- });
300
305
 
301
- describe('map', () => {
302
- it('execute the mapper function and returns mapped Address immutably', () => {
306
+ it('can be set the value into middle position', () => {
307
+ const value1: MockValueObject<number> = new MockValueObject(1);
308
+ const value2: MockValueObject<number> = new MockValueObject(2);
309
+ const value3: MockValueObject<number> = new MockValueObject(3);
310
+ const value4: MockValueObject<number> = new MockValueObject(4);
311
+
303
312
  const sequence1: MutableSequence<MockValueObject<number>> = MutableSequence.ofArray([
304
- new MockValueObject(1),
305
- new MockValueObject(2),
306
- new MockValueObject(3)
313
+ value1,
314
+ value2,
315
+ value3
307
316
  ]);
308
- const sequence2: MutableSequence<MockValueObject<string>> = sequence1.map(
309
- (value: MockValueObject<number>): MockValueObject<string> => {
310
- const num: number = value.get();
311
-
312
- return new MockValueObject<string>(`${num ** 2}`);
313
- }
314
- );
315
-
316
- expect(sequence1.size()).toBe(sequence2.size());
317
- expect(sequence1).not.toBe(sequence2);
318
- sequence2.forEach((v: MockValueObject<string>, k: number) => {
319
- const value: Nullable<MockValueObject<number>> = sequence1.get(k);
320
-
321
- if (value === null) {
322
- fail();
323
- return;
324
- }
317
+ const sequence2: MutableSequence<MockValueObject<number>> = sequence1.set(1, value4);
325
318
 
326
- expect(v.get()).toBe(`${value.get() ** 2}`);
327
- });
319
+ expect(sequence1).toBe(sequence2);
320
+ expect(sequence1.size()).toBe(3);
321
+ expect(sequence2.get(0)).toBe(value1);
322
+ expect(sequence2.get(1)).toBe(value4);
323
+ expect(sequence2.get(2)).toBe(value3);
328
324
  });
329
- });
330
325
 
331
- describe('filter', () => {
332
- it('can remove match values', () => {
326
+ it('can be set the value into last position', () => {
333
327
  const value1: MockValueObject<number> = new MockValueObject(1);
334
328
  const value2: MockValueObject<number> = new MockValueObject(2);
335
329
  const value3: MockValueObject<number> = new MockValueObject(3);
336
- const value4: MockValueObject<number> = new MockValueObject(2);
337
- const value5: MockValueObject<number> = new MockValueObject(5);
330
+ const value4: MockValueObject<number> = new MockValueObject(4);
338
331
 
339
- const sequence: MutableSequence<MockValueObject<number>> = MutableSequence.ofArray([
332
+ const sequence1: MutableSequence<MockValueObject<number>> = MutableSequence.ofArray([
340
333
  value1,
341
334
  value2,
342
- value3,
343
- value4
335
+ value3
344
336
  ]);
337
+ const sequence2: MutableSequence<MockValueObject<number>> = sequence1.set(2, value4);
345
338
 
346
- const filtered1: MutableSequence<MockValueObject<number>> = sequence.filter((v: MockValueObject<number>) => {
347
- return v.get() % 2 === 0;
348
- });
349
- const filtered2: MutableSequence<MockValueObject<number>> = sequence.filter((v: MockValueObject<number>) => {
350
- return v === value4;
351
- });
352
- const filtered3: MutableSequence<MockValueObject<number>> = sequence.filter((v: MockValueObject<number>) => {
353
- return v === value5;
354
- });
339
+ expect(sequence1).toBe(sequence2);
340
+ expect(sequence1.size()).toBe(3);
341
+ expect(sequence2.get(0)).toBe(value1);
342
+ expect(sequence2.get(1)).toBe(value2);
343
+ expect(sequence2.get(2)).toBe(value4);
344
+ });
355
345
 
356
- expect(filtered1.size()).toBe(2);
357
- expect(filtered1.get(0)).toBe(value2);
358
- expect(filtered1.get(1)).toBe(value4);
359
- expect(filtered2.size()).toBe(1);
360
- expect(filtered2.get(0)).toBe(value4);
361
- expect(filtered3.size()).toBe(0);
346
+ it('returns itself when given key is less than 0', () => {
347
+ const value: MockValueObject<number> = new MockValueObject(1);
348
+
349
+ const sequence1: MutableSequence<MockValueObject<number>> = MutableSequence.ofArray([]);
350
+ const beforeLength: number = sequence1.size();
351
+
352
+ const sequence2: MutableSequence<MockValueObject<number>> = sequence1.set(-1, value);
353
+
354
+ expect(sequence1).toBe(sequence2);
355
+ expect(sequence1.size()).toBe(beforeLength);
356
+ });
357
+
358
+ it('returns itself when given key is greater than sequence length', () => {
359
+ const value: MockValueObject<number> = new MockValueObject(1);
360
+
361
+ const sequence1: MutableSequence<MockValueObject<number>> = MutableSequence.ofArray([]);
362
+ const beforeLength: number = sequence1.size();
363
+
364
+ const sequence2: MutableSequence<MockValueObject<number>> = sequence1.set(300, value);
365
+
366
+ expect(sequence1).toBe(sequence2);
367
+ expect(sequence1.size()).toBe(beforeLength);
368
+ });
369
+
370
+ it('returns itself when given key is not integer', () => {
371
+ const value: MockValueObject<number> = new MockValueObject(1);
372
+
373
+ const sequence1: MutableSequence<MockValueObject<number>> = MutableSequence.ofArray([]);
374
+ const beforeLength: number = sequence1.size();
375
+
376
+ const sequence2: MutableSequence<MockValueObject<number>> = sequence1.set(0.9, value);
377
+
378
+ expect(sequence1).toBe(sequence2);
379
+ expect(sequence1.size()).toBe(beforeLength);
362
380
  });
363
381
  });
364
382
 
@@ -411,22 +429,4 @@ describe('MutableSequence', () => {
411
429
  expect(sorted.get(3)?.get()).toBe(4);
412
430
  });
413
431
  });
414
-
415
- describe('duplicate', () => {
416
- it('returns shallow-copied instance', () => {
417
- const sequence1: MutableSequence<MockValueObject<number>> = MutableSequence.ofArray([
418
- new MockValueObject(1),
419
- new MockValueObject(2),
420
- new MockValueObject(3),
421
- new MockValueObject(2)
422
- ]);
423
- const sequence2: MutableSequence<MockValueObject<number>> = sequence1.duplicate();
424
-
425
- expect(sequence1.size()).toBe(sequence2.size());
426
- expect(sequence1).not.toBe(sequence2);
427
- sequence1.forEach((v: MockValueObject<number>, k: number) => {
428
- expect(v).toBe(sequence2.get(k));
429
- });
430
- });
431
- });
432
432
  });
package/src/index.ts CHANGED
@@ -1,4 +1,4 @@
1
- export * from './mock/MockSequence';
1
+ export * from './mock/index';
2
2
  export * from './ImmutableSequence';
3
3
  export * from './MutableSequence';
4
4
  export * from './ReadonlySequence';
@@ -0,0 +1 @@
1
+ export * from './MockSequence';