@simplysm/core-common 13.0.75 → 13.0.77
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/README.md +64 -21
- package/dist/extensions/arr-ext.d.ts +1 -1
- package/dist/extensions/arr-ext.d.ts.map +1 -1
- package/dist/extensions/arr-ext.helpers.d.ts +8 -0
- package/dist/extensions/arr-ext.helpers.d.ts.map +1 -1
- package/dist/extensions/arr-ext.helpers.js +65 -0
- package/dist/extensions/arr-ext.helpers.js.map +2 -2
- package/dist/extensions/arr-ext.js +16 -124
- package/dist/extensions/arr-ext.js.map +2 -2
- package/dist/extensions/arr-ext.types.d.ts +40 -32
- package/dist/extensions/arr-ext.types.d.ts.map +1 -1
- package/dist/extensions/map-ext.js.map +1 -1
- package/dist/extensions/set-ext.js.map +1 -1
- package/dist/features/event-emitter.d.ts +4 -4
- package/dist/features/event-emitter.d.ts.map +1 -1
- package/dist/features/event-emitter.js.map +1 -1
- package/dist/features/serial-queue.js +2 -2
- package/dist/features/serial-queue.js.map +1 -1
- package/dist/index.d.ts +13 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -13
- package/dist/index.js.map +1 -1
- package/dist/types/date-only.js +2 -2
- package/dist/types/date-only.js.map +1 -1
- package/dist/types/date-time.js +2 -2
- package/dist/types/date-time.js.map +1 -1
- package/dist/types/time.js +2 -2
- package/dist/types/time.js.map +1 -1
- package/dist/types/uuid.d.ts +2 -2
- package/dist/types/uuid.d.ts.map +1 -1
- package/dist/types/uuid.js +1 -1
- package/dist/types/uuid.js.map +1 -1
- package/dist/utils/bytes.d.ts +10 -10
- package/dist/utils/bytes.d.ts.map +1 -1
- package/dist/utils/bytes.js +10 -10
- package/dist/utils/bytes.js.map +1 -1
- package/dist/utils/date-format.d.ts +1 -1
- package/dist/utils/date-format.d.ts.map +1 -1
- package/dist/utils/date-format.js +2 -2
- package/dist/utils/date-format.js.map +1 -1
- package/dist/utils/error.d.ts +1 -1
- package/dist/utils/error.d.ts.map +1 -1
- package/dist/utils/error.js +2 -2
- package/dist/utils/error.js.map +1 -1
- package/dist/utils/json.d.ts +4 -2
- package/dist/utils/json.d.ts.map +1 -1
- package/dist/utils/json.js +9 -9
- package/dist/utils/json.js.map +1 -1
- package/dist/utils/num.d.ts +10 -10
- package/dist/utils/num.d.ts.map +1 -1
- package/dist/utils/num.js +11 -11
- package/dist/utils/num.js.map +1 -1
- package/dist/utils/obj.d.ts +40 -40
- package/dist/utils/obj.d.ts.map +1 -1
- package/dist/utils/obj.js +102 -99
- package/dist/utils/obj.js.map +1 -1
- package/dist/utils/path.d.ts +3 -3
- package/dist/utils/path.d.ts.map +1 -1
- package/dist/utils/path.js +6 -6
- package/dist/utils/path.js.map +1 -1
- package/dist/utils/primitive.d.ts +1 -1
- package/dist/utils/primitive.d.ts.map +1 -1
- package/dist/utils/primitive.js +2 -2
- package/dist/utils/primitive.js.map +1 -1
- package/dist/utils/str.d.ts +16 -16
- package/dist/utils/str.d.ts.map +1 -1
- package/dist/utils/str.js +16 -16
- package/dist/utils/str.js.map +1 -1
- package/dist/utils/transferable.d.ts +3 -3
- package/dist/utils/transferable.d.ts.map +1 -1
- package/dist/utils/transferable.js +10 -10
- package/dist/utils/transferable.js.map +1 -1
- package/dist/utils/wait.d.ts +2 -2
- package/dist/utils/wait.d.ts.map +1 -1
- package/dist/utils/wait.js +5 -5
- package/dist/utils/wait.js.map +1 -1
- package/dist/utils/xml.d.ts +2 -2
- package/dist/utils/xml.d.ts.map +1 -1
- package/dist/utils/xml.js +4 -4
- package/dist/utils/xml.js.map +1 -1
- package/dist/{zip/sd-zip.d.ts → utils/zip.d.ts} +1 -1
- package/dist/utils/zip.d.ts.map +1 -0
- package/dist/{zip/sd-zip.js → utils/zip.js} +1 -1
- package/dist/{zip/sd-zip.js.map → utils/zip.js.map} +1 -1
- package/package.json +3 -3
- package/src/extensions/arr-ext.helpers.ts +86 -0
- package/src/extensions/arr-ext.ts +22 -170
- package/src/extensions/arr-ext.types.ts +76 -48
- package/src/extensions/map-ext.ts +3 -3
- package/src/extensions/set-ext.ts +2 -2
- package/src/features/event-emitter.ts +6 -6
- package/src/features/serial-queue.ts +2 -2
- package/src/index.ts +16 -16
- package/src/types/date-only.ts +2 -2
- package/src/types/date-time.ts +2 -2
- package/src/types/time.ts +2 -2
- package/src/types/uuid.ts +2 -2
- package/src/utils/bytes.ts +15 -15
- package/src/utils/date-format.ts +1 -1
- package/src/utils/error.ts +1 -1
- package/src/utils/json.ts +9 -7
- package/src/utils/num.ts +15 -15
- package/src/utils/obj.ts +119 -116
- package/src/utils/path.ts +3 -3
- package/src/utils/primitive.ts +1 -1
- package/src/utils/str.ts +16 -16
- package/src/utils/transferable.ts +9 -9
- package/src/utils/wait.ts +3 -3
- package/src/utils/xml.ts +2 -2
- package/tests/extensions/array-extension.spec.ts +7 -149
- package/tests/extensions/map-extension.spec.ts +0 -30
- package/tests/extensions/set-extension.spec.ts +0 -7
- package/tests/types/date-only.spec.ts +0 -105
- package/tests/types/date-time.spec.ts +0 -145
- package/tests/types/lazy-gc-map.spec.ts +0 -86
- package/tests/types/time.spec.ts +0 -131
- package/tests/types/uuid.spec.ts +4 -4
- package/tests/utils/bytes-utils.spec.ts +42 -75
- package/tests/utils/date-format.spec.ts +89 -112
- package/tests/utils/debounce-queue.spec.ts +3 -49
- package/tests/utils/json.spec.ts +61 -147
- package/tests/utils/number.spec.ts +41 -62
- package/tests/utils/object.spec.ts +120 -139
- package/tests/utils/path.spec.ts +19 -27
- package/tests/utils/primitive.spec.ts +12 -12
- package/tests/utils/sd-event-emitter.spec.ts +0 -27
- package/tests/utils/serial-queue.spec.ts +0 -60
- package/tests/utils/string.spec.ts +66 -82
- package/tests/utils/template-strings.spec.ts +0 -9
- package/tests/utils/transferable.spec.ts +55 -119
- package/tests/utils/wait.spec.ts +10 -32
- package/tests/utils/xml.spec.ts +25 -25
- package/tests/{zip/sd-zip.spec.ts → utils/zip.spec.ts} +0 -17
- package/dist/zip/sd-zip.d.ts.map +0 -1
- /package/src/{zip/sd-zip.ts → utils/zip.ts} +0 -0
|
@@ -48,22 +48,6 @@ describe("DateTime", () => {
|
|
|
48
48
|
expect(dt.day).toBe(29);
|
|
49
49
|
expect(dt.isValid).toBe(true);
|
|
50
50
|
});
|
|
51
|
-
|
|
52
|
-
it("non-leap year February 29th auto-adjusts to March 1st (JS Date behavior)", () => {
|
|
53
|
-
const dt = new DateTime(2023, 2, 29);
|
|
54
|
-
|
|
55
|
-
expect(dt.year).toBe(2023);
|
|
56
|
-
expect(dt.month).toBe(3);
|
|
57
|
-
expect(dt.day).toBe(1);
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
it("invalid month (13) auto-adjusts to next year January 1st (JS Date behavior)", () => {
|
|
61
|
-
const dt = new DateTime(2024, 13, 1);
|
|
62
|
-
|
|
63
|
-
expect(dt.year).toBe(2025);
|
|
64
|
-
expect(dt.month).toBe(1);
|
|
65
|
-
expect(dt.day).toBe(1);
|
|
66
|
-
});
|
|
67
51
|
});
|
|
68
52
|
|
|
69
53
|
describe("parse()", () => {
|
|
@@ -219,42 +203,9 @@ describe("DateTime", () => {
|
|
|
219
203
|
expect(result.month).toBe(11);
|
|
220
204
|
expect(result.day).toBe(15);
|
|
221
205
|
});
|
|
222
|
-
|
|
223
|
-
it("setMonth(25) returns January 2 years later", () => {
|
|
224
|
-
const dt = new DateTime(2024, 6, 15);
|
|
225
|
-
const result = dt.setMonth(25);
|
|
226
|
-
|
|
227
|
-
expect(result.year).toBe(2026);
|
|
228
|
-
expect(result.month).toBe(1);
|
|
229
|
-
expect(result.day).toBe(15);
|
|
230
|
-
});
|
|
231
|
-
|
|
232
|
-
it("setMonth(-13) returns November 2 years earlier", () => {
|
|
233
|
-
const dt = new DateTime(2024, 6, 15);
|
|
234
|
-
const result = dt.setMonth(-13);
|
|
235
|
-
|
|
236
|
-
expect(result.year).toBe(2022);
|
|
237
|
-
expect(result.month).toBe(11);
|
|
238
|
-
expect(result.day).toBe(15);
|
|
239
|
-
});
|
|
240
206
|
});
|
|
241
207
|
|
|
242
208
|
describe("Arithmetic Methods", () => {
|
|
243
|
-
it("addYears", () => {
|
|
244
|
-
const dt1 = new DateTime(2024, 3, 15);
|
|
245
|
-
const dt2 = dt1.addYears(2);
|
|
246
|
-
|
|
247
|
-
expect(dt2.year).toBe(2026);
|
|
248
|
-
expect(dt1.year).toBe(2024); // original unchanged
|
|
249
|
-
});
|
|
250
|
-
|
|
251
|
-
it("addMonths", () => {
|
|
252
|
-
const dt1 = new DateTime(2024, 3, 15);
|
|
253
|
-
const dt2 = dt1.addMonths(3);
|
|
254
|
-
|
|
255
|
-
expect(dt2.month).toBe(6);
|
|
256
|
-
});
|
|
257
|
-
|
|
258
209
|
it("addDays", () => {
|
|
259
210
|
const dt1 = new DateTime(2024, 3, 15);
|
|
260
211
|
const dt2 = dt1.addDays(20);
|
|
@@ -263,13 +214,6 @@ describe("DateTime", () => {
|
|
|
263
214
|
expect(dt2.day).toBe(4);
|
|
264
215
|
});
|
|
265
216
|
|
|
266
|
-
it("addHours", () => {
|
|
267
|
-
const dt1 = new DateTime(2024, 3, 15, 10);
|
|
268
|
-
const dt2 = dt1.addHours(5);
|
|
269
|
-
|
|
270
|
-
expect(dt2.hour).toBe(15);
|
|
271
|
-
});
|
|
272
|
-
|
|
273
217
|
it("addMinutes", () => {
|
|
274
218
|
const dt1 = new DateTime(2024, 3, 15, 10, 30);
|
|
275
219
|
const dt2 = dt1.addMinutes(45);
|
|
@@ -277,76 +221,6 @@ describe("DateTime", () => {
|
|
|
277
221
|
expect(dt2.hour).toBe(11);
|
|
278
222
|
expect(dt2.minute).toBe(15);
|
|
279
223
|
});
|
|
280
|
-
|
|
281
|
-
it("addSeconds", () => {
|
|
282
|
-
const dt1 = new DateTime(2024, 3, 15, 10, 30, 45);
|
|
283
|
-
const dt2 = dt1.addSeconds(30);
|
|
284
|
-
|
|
285
|
-
expect(dt2.minute).toBe(31);
|
|
286
|
-
expect(dt2.second).toBe(15);
|
|
287
|
-
});
|
|
288
|
-
|
|
289
|
-
it("addMilliseconds", () => {
|
|
290
|
-
const dt1 = new DateTime(2024, 3, 15, 10, 30, 45, 500);
|
|
291
|
-
const dt2 = dt1.addMilliseconds(600);
|
|
292
|
-
|
|
293
|
-
expect(dt2.second).toBe(46);
|
|
294
|
-
expect(dt2.millisecond).toBe(100);
|
|
295
|
-
});
|
|
296
|
-
});
|
|
297
|
-
|
|
298
|
-
//#region tick comparison
|
|
299
|
-
|
|
300
|
-
describe("tick comparison", () => {
|
|
301
|
-
it("same datetime has same tick", () => {
|
|
302
|
-
const dt1 = new DateTime(2025, 3, 15, 10, 30, 45, 123);
|
|
303
|
-
const dt2 = new DateTime(2025, 3, 15, 10, 30, 45, 123);
|
|
304
|
-
|
|
305
|
-
expect(dt1.tick).toBe(dt2.tick);
|
|
306
|
-
});
|
|
307
|
-
|
|
308
|
-
it("different datetime has different tick", () => {
|
|
309
|
-
const dt1 = new DateTime(2025, 3, 15, 10, 30, 45, 123);
|
|
310
|
-
const dt2 = new DateTime(2025, 3, 15, 10, 30, 45, 124);
|
|
311
|
-
|
|
312
|
-
expect(dt1.tick).not.toBe(dt2.tick);
|
|
313
|
-
});
|
|
314
|
-
|
|
315
|
-
it("can compare datetime order using tick", () => {
|
|
316
|
-
const dt1 = new DateTime(2025, 1, 1, 0, 0, 0);
|
|
317
|
-
const dt2 = new DateTime(2025, 6, 15, 12, 30, 0);
|
|
318
|
-
const dt3 = new DateTime(2025, 12, 31, 23, 59, 59);
|
|
319
|
-
|
|
320
|
-
expect(dt1.tick).toBeLessThan(dt2.tick);
|
|
321
|
-
expect(dt2.tick).toBeLessThan(dt3.tick);
|
|
322
|
-
});
|
|
323
|
-
|
|
324
|
-
it("can compare millisecond precision", () => {
|
|
325
|
-
const dt1 = new DateTime(2025, 3, 15, 10, 30, 45, 0);
|
|
326
|
-
const dt2 = new DateTime(2025, 3, 15, 10, 30, 45, 1);
|
|
327
|
-
|
|
328
|
-
expect(dt2.tick - dt1.tick).toBe(1);
|
|
329
|
-
});
|
|
330
|
-
});
|
|
331
|
-
|
|
332
|
-
//#endregion
|
|
333
|
-
|
|
334
|
-
describe("timezoneOffsetMinutes", () => {
|
|
335
|
-
it("returns current timezone offset", () => {
|
|
336
|
-
const dt = new DateTime(2024, 3, 15, 10, 30, 45);
|
|
337
|
-
const expected = new Date().getTimezoneOffset() * -1;
|
|
338
|
-
|
|
339
|
-
expect(dt.timezoneOffsetMinutes).toBe(expected);
|
|
340
|
-
});
|
|
341
|
-
});
|
|
342
|
-
|
|
343
|
-
describe("dayOfWeek", () => {
|
|
344
|
-
it("returns day of week (Sun~Sat: 0~6)", () => {
|
|
345
|
-
// 2024-03-15 is Friday (5)
|
|
346
|
-
const dt = new DateTime(2024, 3, 15);
|
|
347
|
-
|
|
348
|
-
expect(dt.dayOfWeek).toBe(5);
|
|
349
|
-
});
|
|
350
224
|
});
|
|
351
225
|
|
|
352
226
|
describe("isValid", () => {
|
|
@@ -359,25 +233,6 @@ describe("DateTime", () => {
|
|
|
359
233
|
const dt = new DateTime(NaN);
|
|
360
234
|
expect(dt.isValid).toBe(false);
|
|
361
235
|
});
|
|
362
|
-
|
|
363
|
-
it("default constructor is valid datetime", () => {
|
|
364
|
-
const dt = new DateTime();
|
|
365
|
-
expect(dt.isValid).toBe(true);
|
|
366
|
-
});
|
|
367
|
-
});
|
|
368
|
-
|
|
369
|
-
describe("toFormatString()", () => {
|
|
370
|
-
it("yyyy-MM-dd format", () => {
|
|
371
|
-
const dt = new DateTime(2024, 3, 5);
|
|
372
|
-
|
|
373
|
-
expect(dt.toFormatString("yyyy-MM-dd")).toBe("2024-03-05");
|
|
374
|
-
});
|
|
375
|
-
|
|
376
|
-
it("HH:mm:ss format", () => {
|
|
377
|
-
const dt = new DateTime(2024, 3, 5, 9, 5, 3);
|
|
378
|
-
|
|
379
|
-
expect(dt.toFormatString("HH:mm:ss")).toBe("09:05:03");
|
|
380
|
-
});
|
|
381
236
|
});
|
|
382
237
|
|
|
383
238
|
describe("toString()", () => {
|
|
@@ -13,27 +13,6 @@ describe("LazyGcMap", () => {
|
|
|
13
13
|
//#region Basic Map operations
|
|
14
14
|
|
|
15
15
|
describe("Basic Map operations", () => {
|
|
16
|
-
it("Stores and retrieves values with set/get", () => {
|
|
17
|
-
const map = new LazyGcMap<string, number>({
|
|
18
|
-
gcInterval: 1000,
|
|
19
|
-
expireTime: 5000,
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
map.set("key1", 100);
|
|
23
|
-
expect(map.get("key1")).toBe(100);
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
it("Checks key existence with has", () => {
|
|
27
|
-
const map = new LazyGcMap<string, number>({
|
|
28
|
-
gcInterval: 1000,
|
|
29
|
-
expireTime: 5000,
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
map.set("key1", 100);
|
|
33
|
-
expect(map.has("key1")).toBe(true);
|
|
34
|
-
expect(map.has("key2")).toBe(false);
|
|
35
|
-
});
|
|
36
|
-
|
|
37
16
|
it("Deletes values with delete", () => {
|
|
38
17
|
const map = new LazyGcMap<string, number>({
|
|
39
18
|
gcInterval: 1000,
|
|
@@ -61,30 +40,6 @@ describe("LazyGcMap", () => {
|
|
|
61
40
|
expect(map.has("key1")).toBe(false);
|
|
62
41
|
expect(map.has("key2")).toBe(false);
|
|
63
42
|
});
|
|
64
|
-
|
|
65
|
-
it("Gets size with size property", () => {
|
|
66
|
-
const map = new LazyGcMap<string, number>({
|
|
67
|
-
gcInterval: 1000,
|
|
68
|
-
expireTime: 5000,
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
expect(map.size).toBe(0);
|
|
72
|
-
map.set("key1", 100);
|
|
73
|
-
expect(map.size).toBe(1);
|
|
74
|
-
map.set("key2", 200);
|
|
75
|
-
expect(map.size).toBe(2);
|
|
76
|
-
map.delete("key1");
|
|
77
|
-
expect(map.size).toBe(1);
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
it("Returns undefined for non-existent keys", () => {
|
|
81
|
-
const map = new LazyGcMap<string, number>({
|
|
82
|
-
gcInterval: 1000,
|
|
83
|
-
expireTime: 5000,
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
expect(map.get("nonexistent")).toBe(undefined);
|
|
87
|
-
});
|
|
88
43
|
});
|
|
89
44
|
|
|
90
45
|
//#endregion
|
|
@@ -493,22 +448,6 @@ describe("LazyGcMap", () => {
|
|
|
493
448
|
expect(map.get("key2")).toBe(200);
|
|
494
449
|
});
|
|
495
450
|
|
|
496
|
-
it("clear is safe to call multiple times", () => {
|
|
497
|
-
const map = new LazyGcMap<string, number>({
|
|
498
|
-
gcInterval: 1000,
|
|
499
|
-
expireTime: 5000,
|
|
500
|
-
});
|
|
501
|
-
|
|
502
|
-
map.set("key1", 100);
|
|
503
|
-
|
|
504
|
-
// Safe to call multiple times
|
|
505
|
-
map.clear();
|
|
506
|
-
map.clear();
|
|
507
|
-
map.clear();
|
|
508
|
-
|
|
509
|
-
expect(map.size).toBe(0);
|
|
510
|
-
});
|
|
511
|
-
|
|
512
451
|
it("GC works normally after clear", async () => {
|
|
513
452
|
const map = new LazyGcMap<string, number>({
|
|
514
453
|
gcInterval: 100,
|
|
@@ -529,31 +468,6 @@ describe("LazyGcMap", () => {
|
|
|
529
468
|
|
|
530
469
|
//#endregion
|
|
531
470
|
|
|
532
|
-
//#region SharedArrayBuffer support
|
|
533
|
-
|
|
534
|
-
describe("SharedArrayBuffer support", () => {
|
|
535
|
-
it("Can use SharedArrayBuffer as value", () => {
|
|
536
|
-
// SharedArrayBuffer may be disabled for security in some environments
|
|
537
|
-
if (typeof SharedArrayBuffer === "undefined") {
|
|
538
|
-
expect(true).toBe(true); // Skip if not supported
|
|
539
|
-
return;
|
|
540
|
-
}
|
|
541
|
-
|
|
542
|
-
const map = new LazyGcMap<string, SharedArrayBuffer>({
|
|
543
|
-
gcInterval: 1000,
|
|
544
|
-
expireTime: 5000,
|
|
545
|
-
});
|
|
546
|
-
|
|
547
|
-
const buffer = new SharedArrayBuffer(16);
|
|
548
|
-
map.set("key1", buffer);
|
|
549
|
-
|
|
550
|
-
expect(map.get("key1")).toBe(buffer);
|
|
551
|
-
expect(map.get("key1")?.byteLength).toBe(16);
|
|
552
|
-
});
|
|
553
|
-
});
|
|
554
|
-
|
|
555
|
-
//#endregion
|
|
556
|
-
|
|
557
471
|
//#region Iterator
|
|
558
472
|
|
|
559
473
|
describe("Iterator", () => {
|
package/tests/types/time.spec.ts
CHANGED
|
@@ -193,123 +193,8 @@ describe("Time", () => {
|
|
|
193
193
|
|
|
194
194
|
//#endregion
|
|
195
195
|
|
|
196
|
-
//#region Getters
|
|
197
|
-
|
|
198
|
-
describe("Getters", () => {
|
|
199
|
-
it("Returns hour", () => {
|
|
200
|
-
const time = new Time(15, 30, 45, 123);
|
|
201
|
-
expect(time.hour).toBe(15);
|
|
202
|
-
});
|
|
203
|
-
|
|
204
|
-
it("Returns minute", () => {
|
|
205
|
-
const time = new Time(15, 30, 45, 123);
|
|
206
|
-
expect(time.minute).toBe(30);
|
|
207
|
-
});
|
|
208
|
-
|
|
209
|
-
it("Returns second", () => {
|
|
210
|
-
const time = new Time(15, 30, 45, 123);
|
|
211
|
-
expect(time.second).toBe(45);
|
|
212
|
-
});
|
|
213
|
-
|
|
214
|
-
it("Returns millisecond", () => {
|
|
215
|
-
const time = new Time(15, 30, 45, 123);
|
|
216
|
-
expect(time.millisecond).toBe(123);
|
|
217
|
-
});
|
|
218
|
-
|
|
219
|
-
it("Returns tick", () => {
|
|
220
|
-
const time = new Time(15, 30, 45, 123);
|
|
221
|
-
const expectedTick = (15 * 60 * 60 + 30 * 60 + 45) * 1000 + 123;
|
|
222
|
-
expect(time.tick).toBe(expectedTick);
|
|
223
|
-
});
|
|
224
|
-
});
|
|
225
|
-
|
|
226
|
-
//#endregion
|
|
227
|
-
|
|
228
|
-
//#region tick comparison
|
|
229
|
-
|
|
230
|
-
describe("tick comparison", () => {
|
|
231
|
-
it("Same times have same tick", () => {
|
|
232
|
-
const t1 = new Time(10, 30, 45, 123);
|
|
233
|
-
const t2 = new Time(10, 30, 45, 123);
|
|
234
|
-
|
|
235
|
-
expect(t1.tick).toBe(t2.tick);
|
|
236
|
-
});
|
|
237
|
-
|
|
238
|
-
it("Different times have different ticks", () => {
|
|
239
|
-
const t1 = new Time(10, 30, 45, 123);
|
|
240
|
-
const t2 = new Time(10, 30, 45, 124);
|
|
241
|
-
|
|
242
|
-
expect(t1.tick).not.toBe(t2.tick);
|
|
243
|
-
});
|
|
244
|
-
|
|
245
|
-
it("Can compare time order by tick", () => {
|
|
246
|
-
const t1 = new Time(0, 0, 0);
|
|
247
|
-
const t2 = new Time(12, 30, 0);
|
|
248
|
-
const t3 = new Time(23, 59, 59);
|
|
249
|
-
|
|
250
|
-
expect(t1.tick).toBeLessThan(t2.tick);
|
|
251
|
-
expect(t2.tick).toBeLessThan(t3.tick);
|
|
252
|
-
});
|
|
253
|
-
|
|
254
|
-
it("Millisecond precision comparison is possible", () => {
|
|
255
|
-
const t1 = new Time(10, 30, 45, 0);
|
|
256
|
-
const t2 = new Time(10, 30, 45, 1);
|
|
257
|
-
|
|
258
|
-
expect(t2.tick - t1.tick).toBe(1);
|
|
259
|
-
});
|
|
260
|
-
|
|
261
|
-
it("Can calculate time difference by tick", () => {
|
|
262
|
-
const t1 = new Time(10, 0, 0);
|
|
263
|
-
const t2 = new Time(11, 0, 0);
|
|
264
|
-
|
|
265
|
-
// 1 hour = 3600000ms
|
|
266
|
-
expect(t2.tick - t1.tick).toBe(3600000);
|
|
267
|
-
});
|
|
268
|
-
});
|
|
269
|
-
|
|
270
|
-
//#endregion
|
|
271
|
-
|
|
272
196
|
//#region setX methods (immutable)
|
|
273
197
|
|
|
274
|
-
describe("setHour()", () => {
|
|
275
|
-
it("Returns new instance with hour changed", () => {
|
|
276
|
-
const time = new Time(15, 30, 45, 123);
|
|
277
|
-
const newTime = time.setHour(20);
|
|
278
|
-
|
|
279
|
-
expect(newTime.hour).toBe(20);
|
|
280
|
-
expect(newTime.minute).toBe(30);
|
|
281
|
-
expect(newTime.second).toBe(45);
|
|
282
|
-
expect(newTime.millisecond).toBe(123);
|
|
283
|
-
expect(time.hour).toBe(15); // original immutable
|
|
284
|
-
});
|
|
285
|
-
});
|
|
286
|
-
|
|
287
|
-
describe("setMinute()", () => {
|
|
288
|
-
it("Returns new instance with minute changed", () => {
|
|
289
|
-
const time = new Time(15, 30, 45, 123);
|
|
290
|
-
const newTime = time.setMinute(50);
|
|
291
|
-
|
|
292
|
-
expect(newTime.hour).toBe(15);
|
|
293
|
-
expect(newTime.minute).toBe(50);
|
|
294
|
-
expect(newTime.second).toBe(45);
|
|
295
|
-
expect(newTime.millisecond).toBe(123);
|
|
296
|
-
expect(time.minute).toBe(30); // original immutable
|
|
297
|
-
});
|
|
298
|
-
});
|
|
299
|
-
|
|
300
|
-
describe("setSecond()", () => {
|
|
301
|
-
it("Returns new instance with second changed", () => {
|
|
302
|
-
const time = new Time(15, 30, 45, 123);
|
|
303
|
-
const newTime = time.setSecond(55);
|
|
304
|
-
|
|
305
|
-
expect(newTime.hour).toBe(15);
|
|
306
|
-
expect(newTime.minute).toBe(30);
|
|
307
|
-
expect(newTime.second).toBe(55);
|
|
308
|
-
expect(newTime.millisecond).toBe(123);
|
|
309
|
-
expect(time.second).toBe(45); // original immutable
|
|
310
|
-
});
|
|
311
|
-
});
|
|
312
|
-
|
|
313
198
|
describe("setMillisecond()", () => {
|
|
314
199
|
it("Returns new instance with millisecond changed", () => {
|
|
315
200
|
const time = new Time(15, 30, 45, 123);
|
|
@@ -495,22 +380,6 @@ describe("Time", () => {
|
|
|
495
380
|
//#region isValid
|
|
496
381
|
|
|
497
382
|
describe("isValid", () => {
|
|
498
|
-
it("Valid time returns true", () => {
|
|
499
|
-
const time = new Time(15, 30, 45);
|
|
500
|
-
expect(time.isValid).toBe(true);
|
|
501
|
-
});
|
|
502
|
-
|
|
503
|
-
it("Default constructor is valid time", () => {
|
|
504
|
-
const time = new Time();
|
|
505
|
-
expect(time.isValid).toBe(true);
|
|
506
|
-
});
|
|
507
|
-
|
|
508
|
-
it("Time created with tick is valid", () => {
|
|
509
|
-
const tick = (15 * 60 * 60 + 30 * 60 + 45) * 1000;
|
|
510
|
-
const time = new Time(tick);
|
|
511
|
-
expect(time.isValid).toBe(true);
|
|
512
|
-
});
|
|
513
|
-
|
|
514
383
|
it("Time created with NaN tick has isValid false", () => {
|
|
515
384
|
const time = new Time(NaN);
|
|
516
385
|
expect(time.isValid).toBe(false);
|
package/tests/types/uuid.spec.ts
CHANGED
|
@@ -2,9 +2,9 @@ import { describe, it, expect } from "vitest";
|
|
|
2
2
|
import { Uuid } from "@simplysm/core-common";
|
|
3
3
|
|
|
4
4
|
describe("Uuid", () => {
|
|
5
|
-
describe("
|
|
5
|
+
describe("generate()", () => {
|
|
6
6
|
it("Generates valid UUID v4 format", () => {
|
|
7
|
-
const uuid = Uuid.
|
|
7
|
+
const uuid = Uuid.generate();
|
|
8
8
|
const str = uuid.toString();
|
|
9
9
|
|
|
10
10
|
// UUID v4 format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
|
|
@@ -12,8 +12,8 @@ describe("Uuid", () => {
|
|
|
12
12
|
});
|
|
13
13
|
|
|
14
14
|
it("Generates new UUID each time", () => {
|
|
15
|
-
const uuid1 = Uuid.
|
|
16
|
-
const uuid2 = Uuid.
|
|
15
|
+
const uuid1 = Uuid.generate();
|
|
16
|
+
const uuid2 = Uuid.generate();
|
|
17
17
|
|
|
18
18
|
expect(uuid1.toString()).not.toBe(uuid2.toString());
|
|
19
19
|
});
|