@lowentry/utils 1.25.3 → 2.0.3
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/LICENSE +23 -0
- package/README.md +0 -2
- package/dist/src/LeTypes.d.ts +73 -0
- package/dist/src/LeTypes.d.ts.map +1 -0
- package/dist/src/LeTypes.js +235 -0
- package/dist/src/LeTypes.js.map +1 -0
- package/dist/src/LeUtils.d.ts +745 -0
- package/dist/src/LeUtils.d.ts.map +1 -0
- package/dist/src/LeUtils.js +3168 -0
- package/dist/src/LeUtils.js.map +1 -0
- package/dist/src/classes/EventEmitter.d.ts +51 -0
- package/dist/src/classes/EventEmitter.d.ts.map +1 -0
- package/dist/src/classes/EventEmitter.js +94 -0
- package/dist/src/classes/EventEmitter.js.map +1 -0
- package/dist/src/classes/LinkedList.d.ts +35 -0
- package/dist/src/classes/LinkedList.d.ts.map +1 -0
- package/dist/src/classes/LinkedList.js +99 -0
- package/dist/src/classes/LinkedList.js.map +1 -0
- package/dist/src/classes/SerializableMap.d.ts +14 -0
- package/dist/src/classes/SerializableMap.d.ts.map +1 -0
- package/dist/src/classes/SerializableMap.js +27 -0
- package/dist/src/classes/SerializableMap.js.map +1 -0
- package/dist/src/classes/TreeSet.d.ts +123 -0
- package/dist/src/classes/TreeSet.d.ts.map +1 -0
- package/dist/src/classes/TreeSet.js +210 -0
- package/dist/src/classes/TreeSet.js.map +1 -0
- package/dist/src/index.d.ts +148 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +13 -0
- package/dist/src/index.js.map +1 -0
- package/dist/tests/CustomClasses.test.d.ts +2 -0
- package/dist/tests/CustomClasses.test.d.ts.map +1 -0
- package/dist/tests/CustomClasses.test.js +138 -0
- package/dist/tests/CustomClasses.test.js.map +1 -0
- package/dist/tests/LeClasses.EventEmitter.test.d.ts +2 -0
- package/dist/tests/LeClasses.EventEmitter.test.d.ts.map +1 -0
- package/dist/tests/LeClasses.EventEmitter.test.js +39 -0
- package/dist/tests/LeClasses.EventEmitter.test.js.map +1 -0
- package/dist/tests/LeClasses.LinkedList.test.d.ts +2 -0
- package/dist/tests/LeClasses.LinkedList.test.d.ts.map +1 -0
- package/dist/tests/LeClasses.LinkedList.test.js +36 -0
- package/dist/tests/LeClasses.LinkedList.test.js.map +1 -0
- package/dist/tests/LeClasses.SerializableMap.test.d.ts +2 -0
- package/dist/tests/LeClasses.SerializableMap.test.d.ts.map +1 -0
- package/dist/tests/LeClasses.SerializableMap.test.js +25 -0
- package/dist/tests/LeClasses.SerializableMap.test.js.map +1 -0
- package/dist/tests/LeClasses.TreeSet.test.d.ts +2 -0
- package/dist/tests/LeClasses.TreeSet.test.d.ts.map +1 -0
- package/dist/tests/LeClasses.TreeSet.test.js +28 -0
- package/dist/tests/LeClasses.TreeSet.test.js.map +1 -0
- package/dist/tests/LeTypes.ARRAY.test.d.ts +2 -0
- package/dist/tests/LeTypes.ARRAY.test.d.ts.map +1 -0
- package/dist/tests/LeTypes.ARRAY.test.js +103 -0
- package/dist/tests/LeTypes.ARRAY.test.js.map +1 -0
- package/dist/tests/LeTypes.BOOL.test.d.ts +2 -0
- package/dist/tests/LeTypes.BOOL.test.d.ts.map +1 -0
- package/dist/tests/LeTypes.BOOL.test.js +138 -0
- package/dist/tests/LeTypes.BOOL.test.js.map +1 -0
- package/dist/tests/LeTypes.FLOAT.test.d.ts +2 -0
- package/dist/tests/LeTypes.FLOAT.test.d.ts.map +1 -0
- package/dist/tests/LeTypes.FLOAT.test.js +120 -0
- package/dist/tests/LeTypes.FLOAT.test.js.map +1 -0
- package/dist/tests/LeTypes.FLOAT_ANY.test.d.ts +2 -0
- package/dist/tests/LeTypes.FLOAT_ANY.test.d.ts.map +1 -0
- package/dist/tests/LeTypes.FLOAT_ANY.test.js +47 -0
- package/dist/tests/LeTypes.FLOAT_ANY.test.js.map +1 -0
- package/dist/tests/LeTypes.INT.test.d.ts +2 -0
- package/dist/tests/LeTypes.INT.test.d.ts.map +1 -0
- package/dist/tests/LeTypes.INT.test.js +80 -0
- package/dist/tests/LeTypes.INT.test.js.map +1 -0
- package/dist/tests/LeTypes.INT_ANY.test.d.ts +2 -0
- package/dist/tests/LeTypes.INT_ANY.test.d.ts.map +1 -0
- package/dist/tests/LeTypes.INT_ANY.test.js +37 -0
- package/dist/tests/LeTypes.INT_ANY.test.js.map +1 -0
- package/dist/tests/LeTypes.ISSET.test.d.ts +2 -0
- package/dist/tests/LeTypes.ISSET.test.d.ts.map +1 -0
- package/dist/tests/LeTypes.ISSET.test.js +113 -0
- package/dist/tests/LeTypes.ISSET.test.js.map +1 -0
- package/dist/tests/LeTypes.IS_ARRAY.test.d.ts +2 -0
- package/dist/tests/LeTypes.IS_ARRAY.test.d.ts.map +1 -0
- package/dist/tests/LeTypes.IS_ARRAY.test.js +81 -0
- package/dist/tests/LeTypes.IS_ARRAY.test.js.map +1 -0
- package/dist/tests/LeTypes.IS_OBJECT.test.d.ts +2 -0
- package/dist/tests/LeTypes.IS_OBJECT.test.d.ts.map +1 -0
- package/dist/tests/LeTypes.IS_OBJECT.test.js +98 -0
- package/dist/tests/LeTypes.IS_OBJECT.test.js.map +1 -0
- package/dist/tests/LeTypes.LAX.test.d.ts +2 -0
- package/dist/tests/LeTypes.LAX.test.d.ts.map +1 -0
- package/dist/tests/LeTypes.LAX.test.js +89 -0
- package/dist/tests/LeTypes.LAX.test.js.map +1 -0
- package/dist/tests/LeTypes.OBJECT.test.d.ts +2 -0
- package/dist/tests/LeTypes.OBJECT.test.d.ts.map +1 -0
- package/dist/tests/LeTypes.OBJECT.test.js +81 -0
- package/dist/tests/LeTypes.OBJECT.test.js.map +1 -0
- package/dist/tests/LeTypes.STRING.test.d.ts +2 -0
- package/dist/tests/LeTypes.STRING.test.d.ts.map +1 -0
- package/dist/tests/LeTypes.STRING.test.js +204 -0
- package/dist/tests/LeTypes.STRING.test.js.map +1 -0
- package/dist/tests/LeTypes.STRING_ANY.test.d.ts +2 -0
- package/dist/tests/LeTypes.STRING_ANY.test.d.ts.map +1 -0
- package/dist/tests/LeTypes.STRING_ANY.test.js +58 -0
- package/dist/tests/LeTypes.STRING_ANY.test.js.map +1 -0
- package/dist/tests/LeUtils.clone.test.d.ts +2 -0
- package/dist/tests/LeUtils.clone.test.d.ts.map +1 -0
- package/dist/tests/LeUtils.clone.test.js +180 -0
- package/dist/tests/LeUtils.clone.test.js.map +1 -0
- package/dist/tests/LeUtils.collections.test.d.ts +2 -0
- package/dist/tests/LeUtils.collections.test.d.ts.map +1 -0
- package/dist/tests/LeUtils.collections.test.js +149 -0
- package/dist/tests/LeUtils.collections.test.js.map +1 -0
- package/dist/tests/LeUtils.comparison.test.d.ts +2 -0
- package/dist/tests/LeUtils.comparison.test.d.ts.map +1 -0
- package/dist/tests/LeUtils.comparison.test.js +125 -0
- package/dist/tests/LeUtils.comparison.test.js.map +1 -0
- package/dist/tests/LeUtils.contains.test.d.ts +2 -0
- package/dist/tests/LeUtils.contains.test.d.ts.map +1 -0
- package/dist/tests/LeUtils.contains.test.js +52 -0
- package/dist/tests/LeUtils.contains.test.js.map +1 -0
- package/dist/tests/LeUtils.each.test.d.ts +2 -0
- package/dist/tests/LeUtils.each.test.d.ts.map +1 -0
- package/dist/tests/LeUtils.each.test.js +267 -0
- package/dist/tests/LeUtils.each.test.js.map +1 -0
- package/dist/tests/LeUtils.eachAsync.test.d.ts +2 -0
- package/dist/tests/LeUtils.eachAsync.test.d.ts.map +1 -0
- package/dist/tests/LeUtils.eachAsync.test.js +80 -0
- package/dist/tests/LeUtils.eachAsync.test.js.map +1 -0
- package/dist/tests/LeUtils.encoding.test.d.ts +2 -0
- package/dist/tests/LeUtils.encoding.test.d.ts.map +1 -0
- package/dist/tests/LeUtils.encoding.test.js +45 -0
- package/dist/tests/LeUtils.encoding.test.js.map +1 -0
- package/dist/tests/LeUtils.equals.test.d.ts +2 -0
- package/dist/tests/LeUtils.equals.test.d.ts.map +1 -0
- package/dist/tests/LeUtils.equals.test.js +328 -0
- package/dist/tests/LeUtils.equals.test.js.map +1 -0
- package/dist/tests/LeUtils.flatten.test.d.ts +2 -0
- package/dist/tests/LeUtils.flatten.test.d.ts.map +1 -0
- package/dist/tests/LeUtils.flatten.test.js +30 -0
- package/dist/tests/LeUtils.flatten.test.js.map +1 -0
- package/dist/tests/LeUtils.misc.test.d.ts +2 -0
- package/dist/tests/LeUtils.misc.test.d.ts.map +1 -0
- package/dist/tests/LeUtils.misc.test.js +50 -0
- package/dist/tests/LeUtils.misc.test.js.map +1 -0
- package/dist/tests/LeUtils.misc2.test.d.ts +2 -0
- package/dist/tests/LeUtils.misc2.test.d.ts.map +1 -0
- package/dist/tests/LeUtils.misc2.test.js +58 -0
- package/dist/tests/LeUtils.misc2.test.js.map +1 -0
- package/dist/tests/LeUtils.newlyAdded.test.d.ts +2 -0
- package/dist/tests/LeUtils.newlyAdded.test.d.ts.map +1 -0
- package/dist/tests/LeUtils.newlyAdded.test.js +121 -0
- package/dist/tests/LeUtils.newlyAdded.test.js.map +1 -0
- package/dist/tests/LeUtils.strings.test.d.ts +2 -0
- package/dist/tests/LeUtils.strings.test.d.ts.map +1 -0
- package/dist/tests/LeUtils.strings.test.js +125 -0
- package/dist/tests/LeUtils.strings.test.js.map +1 -0
- package/dist/tests/LeUtils.timing.test.d.ts +2 -0
- package/dist/tests/LeUtils.timing.test.d.ts.map +1 -0
- package/dist/tests/LeUtils.timing.test.js +72 -0
- package/dist/tests/LeUtils.timing.test.js.map +1 -0
- package/dist/tests/LeUtils.transactional.test.d.ts +2 -0
- package/dist/tests/LeUtils.transactional.test.d.ts.map +1 -0
- package/dist/tests/LeUtils.transactional.test.js +39 -0
- package/dist/tests/LeUtils.transactional.test.js.map +1 -0
- package/dist/tests/setup.d.ts +2 -0
- package/dist/tests/setup.d.ts.map +1 -0
- package/dist/tests/setup.js +6 -0
- package/dist/tests/setup.js.map +1 -0
- package/dist/vitest.config.d.ts +3 -0
- package/dist/vitest.config.d.ts.map +1 -0
- package/dist/vitest.config.js +21 -0
- package/dist/vitest.config.js.map +1 -0
- package/package.json +52 -53
- package/api-extractor.json +0 -43
- package/index.d.ts +0 -454
- package/index.js +0 -4160
- package/index.js.map +0 -1
- package/src/LeTypes.js +0 -254
- package/src/LeUtils.js +0 -3611
- package/src/classes/EventEmitter.js +0 -124
- package/src/classes/LinkedList.js +0 -145
- package/src/classes/SerializableMap.js +0 -17
- package/src/classes/TreeSet.js +0 -235
- package/src/index.js +0 -6
- package/tsconfig.d.ts +0 -1
- package/tsconfig.json +0 -39
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { FLOAT_ANY } from '../src/LeTypes';
|
|
3
|
+
describe('FLOAT_ANY() - Happy Path', () => {
|
|
4
|
+
it('returns first number', () => {
|
|
5
|
+
expect(FLOAT_ANY(1.5, 2.5)).toBe(1.5);
|
|
6
|
+
});
|
|
7
|
+
it('skips null, returns first valid', () => {
|
|
8
|
+
expect(FLOAT_ANY(null, 3.14, 2.71)).toBe(3.14);
|
|
9
|
+
});
|
|
10
|
+
it('skips undefined, returns first valid', () => {
|
|
11
|
+
expect(FLOAT_ANY(undefined, 10.1, 20.2)).toBe(10.1);
|
|
12
|
+
});
|
|
13
|
+
it('converts string to float', () => {
|
|
14
|
+
expect(FLOAT_ANY('1.23', 4.56)).toBe(1.23);
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
describe('FLOAT_ANY() - Negative Inputs', () => {
|
|
18
|
+
it('returns 0 when all null', () => {
|
|
19
|
+
expect(FLOAT_ANY(null, null)).toBe(0);
|
|
20
|
+
});
|
|
21
|
+
it('returns 0 when no arguments', () => {
|
|
22
|
+
expect(FLOAT_ANY()).toBe(0);
|
|
23
|
+
});
|
|
24
|
+
it('returns 0 when all NaN', () => {
|
|
25
|
+
expect(FLOAT_ANY(NaN, NaN)).toBe(0);
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
describe('FLOAT_ANY() - Edge Cases', () => {
|
|
29
|
+
it('uses first valid even if zero', () => {
|
|
30
|
+
// Legacy: returns first non-nullish, FLOAT(0) is 0
|
|
31
|
+
expect(FLOAT_ANY(null, 0, 123)).toBe(0);
|
|
32
|
+
});
|
|
33
|
+
it('uses first valid even if negative', () => {
|
|
34
|
+
expect(FLOAT_ANY(-1.5, 2.5)).toBe(-1.5);
|
|
35
|
+
});
|
|
36
|
+
it('returns Infinity if first valid', () => {
|
|
37
|
+
expect(FLOAT_ANY(Infinity, 123)).toBe(Infinity);
|
|
38
|
+
});
|
|
39
|
+
it('returns 0 for NaN string', () => {
|
|
40
|
+
// Legacy: FLOAT('abc') returns 0, but FLOAT_ANY skips NaN results, so it returns 456
|
|
41
|
+
expect(FLOAT_ANY(null, 'abc', 456)).toBe(456);
|
|
42
|
+
});
|
|
43
|
+
it('converts single-element array if first valid', () => {
|
|
44
|
+
expect(FLOAT_ANY([1.23], 4.56)).toBe(1.23);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=LeTypes.FLOAT_ANY.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LeTypes.FLOAT_ANY.test.js","sourceRoot":"","sources":["../../tests/LeTypes.FLOAT_ANY.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LeTypes.INT.test.d.ts","sourceRoot":"","sources":["../../tests/LeTypes.INT.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { INT } from '../src/index';
|
|
3
|
+
/**
|
|
4
|
+
* INT() - Baseline Tests
|
|
5
|
+
* Old behavior: Math.round(FLOAT(value))
|
|
6
|
+
*/
|
|
7
|
+
describe('INT() - Happy Path', () => {
|
|
8
|
+
it('returns integer unchanged', () => {
|
|
9
|
+
expect(INT(123)).toBe(123);
|
|
10
|
+
});
|
|
11
|
+
it('rounds float to integer', () => {
|
|
12
|
+
expect(INT(123.7)).toBe(124);
|
|
13
|
+
expect(INT(123.4)).toBe(123);
|
|
14
|
+
expect(INT(123.5)).toBe(124);
|
|
15
|
+
});
|
|
16
|
+
it('converts string number to integer', () => {
|
|
17
|
+
expect(INT('123')).toBe(123);
|
|
18
|
+
});
|
|
19
|
+
it('converts and rounds float string', () => {
|
|
20
|
+
expect(INT('123.7')).toBe(124);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
describe('INT() - Negative Inputs', () => {
|
|
24
|
+
it('returns 0 for null', () => {
|
|
25
|
+
expect(INT(null)).toBe(0);
|
|
26
|
+
});
|
|
27
|
+
it('returns 0 for undefined', () => {
|
|
28
|
+
expect(INT(undefined)).toBe(0);
|
|
29
|
+
});
|
|
30
|
+
it('returns 0 for non-numeric string', () => {
|
|
31
|
+
expect(INT('hello')).toBe(0);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
describe('INT() - Negative Numbers', () => {
|
|
35
|
+
it('handles negative integer', () => {
|
|
36
|
+
expect(INT(-456)).toBe(-456);
|
|
37
|
+
});
|
|
38
|
+
it('rounds negative float', () => {
|
|
39
|
+
expect(INT(-123.7)).toBe(-124);
|
|
40
|
+
expect(INT(-123.4)).toBe(-123);
|
|
41
|
+
expect(INT(-123.5)).toBe(-123); // Math.round rounds towards positive infinity
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
describe('INT() - Boundary Values', () => {
|
|
45
|
+
it('returns 0 for NaN', () => {
|
|
46
|
+
expect(INT(NaN)).toBe(0);
|
|
47
|
+
});
|
|
48
|
+
it('returns Infinity for Infinity (rounds to Infinity)', () => {
|
|
49
|
+
expect(INT(Infinity)).toBe(Infinity);
|
|
50
|
+
});
|
|
51
|
+
it('returns -Infinity for -Infinity', () => {
|
|
52
|
+
expect(INT(-Infinity)).toBe(-Infinity);
|
|
53
|
+
});
|
|
54
|
+
it('handles Number.MAX_VALUE', () => {
|
|
55
|
+
expect(INT(Number.MAX_VALUE)).toBe(Number.MAX_VALUE);
|
|
56
|
+
});
|
|
57
|
+
it('handles -0', () => {
|
|
58
|
+
expect(INT(-0)).toBe(-0);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
describe('INT() - Edge Cases', () => {
|
|
62
|
+
it('rounds 0.5 up', () => {
|
|
63
|
+
expect(INT(0.5)).toBe(1);
|
|
64
|
+
});
|
|
65
|
+
it('rounds -0.5 towards positive infinity', () => {
|
|
66
|
+
expect(INT(-0.5)).toBe(-0); // Math.round(-0.5) = -0
|
|
67
|
+
});
|
|
68
|
+
it('handles very large float', () => {
|
|
69
|
+
expect(INT(999999999999.9)).toBe(1000000000000);
|
|
70
|
+
});
|
|
71
|
+
it('converts Symbol description to int if possible', () => {
|
|
72
|
+
expect(INT(Symbol('123'))).toBe(123);
|
|
73
|
+
expect(INT(Symbol('test'))).toBe(0);
|
|
74
|
+
});
|
|
75
|
+
it('converts BigInt to number', () => {
|
|
76
|
+
expect(INT(BigInt(123))).toBe(123);
|
|
77
|
+
expect(INT(BigInt(Number.MAX_SAFE_INTEGER) + 1n)).toBe(Number.MAX_SAFE_INTEGER);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
//# sourceMappingURL=LeTypes.INT.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LeTypes.INT.test.js","sourceRoot":"","sources":["../../tests/LeTypes.INT.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LeTypes.INT_ANY.test.d.ts","sourceRoot":"","sources":["../../tests/LeTypes.INT_ANY.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { INT_ANY } from '../src/LeTypes';
|
|
3
|
+
describe('INT_ANY() - Happy Path', () => {
|
|
4
|
+
it('returns first integer', () => {
|
|
5
|
+
expect(INT_ANY(10, 20)).toBe(10);
|
|
6
|
+
});
|
|
7
|
+
it('rounds first float', () => {
|
|
8
|
+
expect(INT_ANY(10.6, 20)).toBe(11);
|
|
9
|
+
});
|
|
10
|
+
it('skips null, returns first valid', () => {
|
|
11
|
+
expect(INT_ANY(null, 42)).toBe(42);
|
|
12
|
+
});
|
|
13
|
+
it('converts and rounds string', () => {
|
|
14
|
+
expect(INT_ANY('42.4', 99)).toBe(42);
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
describe('INT_ANY() - Negative Inputs', () => {
|
|
18
|
+
it('returns 0 when all null', () => {
|
|
19
|
+
expect(INT_ANY(null, null)).toBe(0);
|
|
20
|
+
});
|
|
21
|
+
it('returns 0 when no arguments', () => {
|
|
22
|
+
expect(INT_ANY()).toBe(0);
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
describe('INT_ANY() - Edge Cases', () => {
|
|
26
|
+
it('uses zero if first valid', () => {
|
|
27
|
+
expect(INT_ANY(null, 0, 999)).toBe(0);
|
|
28
|
+
});
|
|
29
|
+
it('rounds negative', () => {
|
|
30
|
+
expect(INT_ANY(-10.6, -20)).toBe(-11);
|
|
31
|
+
});
|
|
32
|
+
it('rounds -0.5 to 0 (Math.round behavior)', () => {
|
|
33
|
+
// Math.round(-0.5) is -0. We ensure it's numerically 0.
|
|
34
|
+
expect(INT_ANY(-0.5)).toBeCloseTo(0);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=LeTypes.INT_ANY.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LeTypes.INT_ANY.test.js","sourceRoot":"","sources":["../../tests/LeTypes.INT_ANY.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAC,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAC,OAAO,EAAC,MAAM,gBAAgB,CAAC;AAEvC,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IAEvC,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAEhC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAE7B,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAE1C,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAErC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAE5C,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QAElC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QAEtC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IAEvC,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAEnC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAE1B,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAEjD,wDAAwD;QACxD,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LeTypes.ISSET.test.d.ts","sourceRoot":"","sources":["../../tests/LeTypes.ISSET.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { ISSET } from '../src/index';
|
|
3
|
+
/**
|
|
4
|
+
* ISSET() - Baseline Tests
|
|
5
|
+
*
|
|
6
|
+
* Old behavior: Returns true if value is not undefined and not null
|
|
7
|
+
* Formula: (typeof value !== 'undefined') && (value !== null)
|
|
8
|
+
*/
|
|
9
|
+
describe('ISSET() - Happy Path', () => {
|
|
10
|
+
it('returns true for string', () => {
|
|
11
|
+
expect(ISSET('hello')).toBe(true);
|
|
12
|
+
});
|
|
13
|
+
it('returns true for number', () => {
|
|
14
|
+
expect(ISSET(123)).toBe(true);
|
|
15
|
+
});
|
|
16
|
+
it('returns true for boolean', () => {
|
|
17
|
+
expect(ISSET(true)).toBe(true);
|
|
18
|
+
expect(ISSET(false)).toBe(true);
|
|
19
|
+
});
|
|
20
|
+
it('returns true for object', () => {
|
|
21
|
+
expect(ISSET({})).toBe(true);
|
|
22
|
+
});
|
|
23
|
+
it('returns true for array', () => {
|
|
24
|
+
expect(ISSET([])).toBe(true);
|
|
25
|
+
});
|
|
26
|
+
it('returns true for function', () => {
|
|
27
|
+
expect(ISSET(() => { })).toBe(true);
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
describe('ISSET() - Negative Inputs', () => {
|
|
31
|
+
it('returns false for null', () => {
|
|
32
|
+
expect(ISSET(null)).toBe(false);
|
|
33
|
+
});
|
|
34
|
+
it('returns false for undefined', () => {
|
|
35
|
+
expect(ISSET(undefined)).toBe(false);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
describe('ISSET() - Empty Values', () => {
|
|
39
|
+
it('returns true for empty string', () => {
|
|
40
|
+
expect(ISSET('')).toBe(true);
|
|
41
|
+
});
|
|
42
|
+
it('returns true for zero', () => {
|
|
43
|
+
expect(ISSET(0)).toBe(true);
|
|
44
|
+
});
|
|
45
|
+
it('returns true for empty array', () => {
|
|
46
|
+
expect(ISSET([])).toBe(true);
|
|
47
|
+
});
|
|
48
|
+
it('returns true for empty object', () => {
|
|
49
|
+
expect(ISSET({})).toBe(true);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
describe('ISSET() - Boundary Values', () => {
|
|
53
|
+
it('returns true for NaN', () => {
|
|
54
|
+
expect(ISSET(NaN)).toBe(true);
|
|
55
|
+
});
|
|
56
|
+
it('returns true for Infinity', () => {
|
|
57
|
+
expect(ISSET(Infinity)).toBe(true);
|
|
58
|
+
});
|
|
59
|
+
it('returns true for -Infinity', () => {
|
|
60
|
+
expect(ISSET(-Infinity)).toBe(true);
|
|
61
|
+
});
|
|
62
|
+
it('returns true for -0', () => {
|
|
63
|
+
expect(ISSET(-0)).toBe(true);
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
describe('ISSET() - Edge Cases', () => {
|
|
67
|
+
it('returns true for Symbol', () => {
|
|
68
|
+
expect(ISSET(Symbol('test'))).toBe(true);
|
|
69
|
+
});
|
|
70
|
+
it('returns true for BigInt', () => {
|
|
71
|
+
expect(ISSET(BigInt(123))).toBe(true);
|
|
72
|
+
});
|
|
73
|
+
it('returns true for Date', () => {
|
|
74
|
+
expect(ISSET(new Date())).toBe(true);
|
|
75
|
+
});
|
|
76
|
+
it('returns true for RegExp', () => {
|
|
77
|
+
expect(ISSET(/test/)).toBe(true);
|
|
78
|
+
});
|
|
79
|
+
it('returns true for Error', () => {
|
|
80
|
+
expect(ISSET(new Error('test'))).toBe(true);
|
|
81
|
+
});
|
|
82
|
+
it('returns true for Map', () => {
|
|
83
|
+
expect(ISSET(new Map())).toBe(true);
|
|
84
|
+
});
|
|
85
|
+
it('returns true for Set', () => {
|
|
86
|
+
expect(ISSET(new Set())).toBe(true);
|
|
87
|
+
});
|
|
88
|
+
it('returns true for WeakMap', () => {
|
|
89
|
+
expect(ISSET(new WeakMap())).toBe(true);
|
|
90
|
+
});
|
|
91
|
+
it('returns true for WeakSet', () => {
|
|
92
|
+
expect(ISSET(new WeakSet())).toBe(true);
|
|
93
|
+
});
|
|
94
|
+
it('returns true for Promise', () => {
|
|
95
|
+
expect(ISSET(Promise.resolve())).toBe(true);
|
|
96
|
+
});
|
|
97
|
+
it('returns true for TypedArray', () => {
|
|
98
|
+
expect(ISSET(new Uint8Array([1, 2, 3]))).toBe(true);
|
|
99
|
+
});
|
|
100
|
+
it('returns true for ArrayBuffer', () => {
|
|
101
|
+
expect(ISSET(new ArrayBuffer(10))).toBe(true);
|
|
102
|
+
});
|
|
103
|
+
it('returns true for frozen object', () => {
|
|
104
|
+
expect(ISSET(Object.freeze({}))).toBe(true);
|
|
105
|
+
});
|
|
106
|
+
it('returns true for sealed object', () => {
|
|
107
|
+
expect(ISSET(Object.seal({}))).toBe(true);
|
|
108
|
+
});
|
|
109
|
+
it('returns true for object with null prototype', () => {
|
|
110
|
+
expect(ISSET(Object.create(null))).toBe(true);
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
//# sourceMappingURL=LeTypes.ISSET.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LeTypes.ISSET.test.js","sourceRoot":"","sources":["../../tests/LeTypes.ISSET.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LeTypes.IS_ARRAY.test.d.ts","sourceRoot":"","sources":["../../tests/LeTypes.IS_ARRAY.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { IS_ARRAY } from '../src/index';
|
|
3
|
+
/**
|
|
4
|
+
* IS_ARRAY() - Baseline Tests
|
|
5
|
+
* Old behavior: Array.isArray(value)
|
|
6
|
+
*/
|
|
7
|
+
describe('IS_ARRAY() - Happy Path', () => {
|
|
8
|
+
it('returns true for array', () => {
|
|
9
|
+
expect(IS_ARRAY([1, 2, 3])).toBe(true);
|
|
10
|
+
});
|
|
11
|
+
it('returns true for empty array', () => {
|
|
12
|
+
expect(IS_ARRAY([])).toBe(true);
|
|
13
|
+
});
|
|
14
|
+
it('returns false for typed array', () => {
|
|
15
|
+
expect(IS_ARRAY(new Uint8Array([1, 2]))).toBe(false);
|
|
16
|
+
});
|
|
17
|
+
it('returns true for array created with Array()', () => {
|
|
18
|
+
expect(IS_ARRAY(Array(5))).toBe(true);
|
|
19
|
+
});
|
|
20
|
+
it('returns true for array created with Array.from()', () => {
|
|
21
|
+
expect(IS_ARRAY(Array.from({ length: 3 }))).toBe(true);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
describe('IS_ARRAY() - Negative Inputs', () => {
|
|
25
|
+
it('returns false for null', () => {
|
|
26
|
+
expect(IS_ARRAY(null)).toBe(false);
|
|
27
|
+
});
|
|
28
|
+
it('returns false for undefined', () => {
|
|
29
|
+
expect(IS_ARRAY(undefined)).toBe(false);
|
|
30
|
+
});
|
|
31
|
+
it('returns false for object', () => {
|
|
32
|
+
expect(IS_ARRAY({})).toBe(false);
|
|
33
|
+
});
|
|
34
|
+
it('returns false for string', () => {
|
|
35
|
+
expect(IS_ARRAY('array')).toBe(false);
|
|
36
|
+
});
|
|
37
|
+
it('returns false for number', () => {
|
|
38
|
+
expect(IS_ARRAY(123)).toBe(false);
|
|
39
|
+
});
|
|
40
|
+
it('returns false for boolean', () => {
|
|
41
|
+
expect(IS_ARRAY(true)).toBe(false);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
describe('IS_ARRAY() - Edge Cases', () => {
|
|
45
|
+
it('returns false for array-like object', () => {
|
|
46
|
+
const arrayLike = { 0: 'a', 1: 'b', length: 2 };
|
|
47
|
+
expect(IS_ARRAY(arrayLike)).toBe(false);
|
|
48
|
+
});
|
|
49
|
+
it('returns false for arguments object', () => {
|
|
50
|
+
function test(..._args) {
|
|
51
|
+
// eslint-disable-next-line prefer-rest-params
|
|
52
|
+
expect(IS_ARRAY(arguments)).toBe(false);
|
|
53
|
+
}
|
|
54
|
+
test(1, 2, 3);
|
|
55
|
+
});
|
|
56
|
+
it('returns true for sparse array', () => {
|
|
57
|
+
expect(IS_ARRAY([1, , 3])).toBe(true);
|
|
58
|
+
});
|
|
59
|
+
it('returns true for array with holes', () => {
|
|
60
|
+
const arr = new Array(5);
|
|
61
|
+
expect(IS_ARRAY(arr)).toBe(true);
|
|
62
|
+
});
|
|
63
|
+
it('returns true for frozen array', () => {
|
|
64
|
+
expect(IS_ARRAY(Object.freeze([1, 2]))).toBe(true);
|
|
65
|
+
});
|
|
66
|
+
it('returns true for sealed array', () => {
|
|
67
|
+
expect(IS_ARRAY(Object.seal([1, 2]))).toBe(true);
|
|
68
|
+
});
|
|
69
|
+
it('returns false for Map', () => {
|
|
70
|
+
expect(IS_ARRAY(new Map())).toBe(false);
|
|
71
|
+
});
|
|
72
|
+
it('returns false for Set', () => {
|
|
73
|
+
expect(IS_ARRAY(new Set())).toBe(false);
|
|
74
|
+
});
|
|
75
|
+
it('returns true for Array subclass', () => {
|
|
76
|
+
class MyArray extends Array {
|
|
77
|
+
}
|
|
78
|
+
expect(IS_ARRAY(new MyArray())).toBe(true);
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
//# sourceMappingURL=LeTypes.IS_ARRAY.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LeTypes.IS_ARRAY.test.js","sourceRoot":"","sources":["../../tests/LeTypes.IS_ARRAY.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LeTypes.IS_OBJECT.test.d.ts","sourceRoot":"","sources":["../../tests/LeTypes.IS_OBJECT.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { IS_OBJECT } from '../src/index';
|
|
3
|
+
/**
|
|
4
|
+
* IS_OBJECT() - Baseline Tests
|
|
5
|
+
* Old behavior: (typeof value === 'object') && (value !== null) && !Array.isArray(value)
|
|
6
|
+
*/
|
|
7
|
+
describe('IS_OBJECT() - Happy Path', () => {
|
|
8
|
+
it('returns true for plain object', () => {
|
|
9
|
+
expect(IS_OBJECT({ a: 1 })).toBe(true);
|
|
10
|
+
});
|
|
11
|
+
it('returns true for empty object', () => {
|
|
12
|
+
expect(IS_OBJECT({})).toBe(true);
|
|
13
|
+
});
|
|
14
|
+
it('returns true for custom class instance', () => {
|
|
15
|
+
class Custom {
|
|
16
|
+
}
|
|
17
|
+
expect(IS_OBJECT(new Custom())).toBe(true);
|
|
18
|
+
});
|
|
19
|
+
it('returns true for Map', () => {
|
|
20
|
+
expect(IS_OBJECT(new Map())).toBe(true);
|
|
21
|
+
});
|
|
22
|
+
it('returns true for Set', () => {
|
|
23
|
+
expect(IS_OBJECT(new Set())).toBe(true);
|
|
24
|
+
});
|
|
25
|
+
it('returns true for Date', () => {
|
|
26
|
+
expect(IS_OBJECT(new Date())).toBe(true);
|
|
27
|
+
});
|
|
28
|
+
it('returns true for RegExp', () => {
|
|
29
|
+
expect(IS_OBJECT(/test/)).toBe(true);
|
|
30
|
+
});
|
|
31
|
+
it('returns true for Error', () => {
|
|
32
|
+
expect(IS_OBJECT(new Error())).toBe(true);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
describe('IS_OBJECT() - Negative Inputs', () => {
|
|
36
|
+
it('returns false for null', () => {
|
|
37
|
+
expect(IS_OBJECT(null)).toBe(false);
|
|
38
|
+
});
|
|
39
|
+
it('returns false for undefined', () => {
|
|
40
|
+
expect(IS_OBJECT(undefined)).toBe(false);
|
|
41
|
+
});
|
|
42
|
+
it('returns false for string', () => {
|
|
43
|
+
expect(IS_OBJECT('object')).toBe(false);
|
|
44
|
+
});
|
|
45
|
+
it('returns false for number', () => {
|
|
46
|
+
expect(IS_OBJECT(123)).toBe(false);
|
|
47
|
+
});
|
|
48
|
+
it('returns false for boolean', () => {
|
|
49
|
+
expect(IS_OBJECT(true)).toBe(false);
|
|
50
|
+
});
|
|
51
|
+
it('returns false for function', () => {
|
|
52
|
+
expect(IS_OBJECT(() => { })).toBe(false);
|
|
53
|
+
});
|
|
54
|
+
it('returns false for symbol', () => {
|
|
55
|
+
expect(IS_OBJECT(Symbol('test'))).toBe(false);
|
|
56
|
+
});
|
|
57
|
+
it('returns false for bigint', () => {
|
|
58
|
+
expect(IS_OBJECT(BigInt(123))).toBe(false);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
describe('IS_OBJECT() - Arrays NOT Objects', () => {
|
|
62
|
+
it('returns false for array', () => {
|
|
63
|
+
expect(IS_OBJECT([1, 2, 3])).toBe(false);
|
|
64
|
+
});
|
|
65
|
+
it('returns false for empty array', () => {
|
|
66
|
+
expect(IS_OBJECT([])).toBe(false);
|
|
67
|
+
});
|
|
68
|
+
it('returns TRUE for typed array (they are considered objects, not arrays)', () => {
|
|
69
|
+
// TypedArrays: IS_ARRAY === false now, so IS_OBJECT === true
|
|
70
|
+
expect(IS_OBJECT(new Uint8Array())).toBe(true);
|
|
71
|
+
expect(IS_OBJECT(new Int32Array())).toBe(true);
|
|
72
|
+
expect(IS_OBJECT(new Float64Array())).toBe(true);
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
describe('IS_OBJECT() - Edge Cases', () => {
|
|
76
|
+
it('returns true for frozen object', () => {
|
|
77
|
+
expect(IS_OBJECT(Object.freeze({ a: 1 }))).toBe(true);
|
|
78
|
+
});
|
|
79
|
+
it('returns true for sealed object', () => {
|
|
80
|
+
expect(IS_OBJECT(Object.seal({ a: 1 }))).toBe(true);
|
|
81
|
+
});
|
|
82
|
+
it('returns true for object with null prototype', () => {
|
|
83
|
+
expect(IS_OBJECT(Object.create(null))).toBe(true);
|
|
84
|
+
});
|
|
85
|
+
it('returns true for WeakMap', () => {
|
|
86
|
+
expect(IS_OBJECT(new WeakMap())).toBe(true);
|
|
87
|
+
});
|
|
88
|
+
it('returns true for WeakSet', () => {
|
|
89
|
+
expect(IS_OBJECT(new WeakSet())).toBe(true);
|
|
90
|
+
});
|
|
91
|
+
it('returns true for Promise', () => {
|
|
92
|
+
expect(IS_OBJECT(Promise.resolve())).toBe(true);
|
|
93
|
+
});
|
|
94
|
+
it('returns true for ArrayBuffer', () => {
|
|
95
|
+
expect(IS_OBJECT(new ArrayBuffer(10))).toBe(true);
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
//# sourceMappingURL=LeTypes.IS_OBJECT.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LeTypes.IS_OBJECT.test.js","sourceRoot":"","sources":["../../tests/LeTypes.IS_OBJECT.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LeTypes.LAX.test.d.ts","sourceRoot":"","sources":["../../tests/LeTypes.LAX.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { FLOAT_LAX, INT_LAX, FLOAT_LAX_ANY, INT_LAX_ANY } from '../src/LeTypes';
|
|
3
|
+
describe('FLOAT_LAX() - Permissive Parsing', () => {
|
|
4
|
+
it('parses "123abc" as 123', () => {
|
|
5
|
+
expect(FLOAT_LAX('123abc')).toBe(123);
|
|
6
|
+
});
|
|
7
|
+
it('parses "price: $45.50" as 45.50', () => {
|
|
8
|
+
expect(FLOAT_LAX('price: $45.50')).toBe(45.5);
|
|
9
|
+
});
|
|
10
|
+
it('parses "42px" as 42', () => {
|
|
11
|
+
expect(FLOAT_LAX('42px')).toBe(42);
|
|
12
|
+
});
|
|
13
|
+
it('returns same as FLOAT for pure numbers', () => {
|
|
14
|
+
expect(FLOAT_LAX(123.45)).toBe(123.45);
|
|
15
|
+
});
|
|
16
|
+
it('returns same as FLOAT for numeric strings', () => {
|
|
17
|
+
expect(FLOAT_LAX('123.45')).toBe(123.45);
|
|
18
|
+
});
|
|
19
|
+
it('keeps digits', () => {
|
|
20
|
+
expect(FLOAT_LAX('123')).toBe(123);
|
|
21
|
+
});
|
|
22
|
+
it('keeps decimal point', () => {
|
|
23
|
+
expect(FLOAT_LAX('.45')).toBe(0.45);
|
|
24
|
+
});
|
|
25
|
+
it('keeps negative sign', () => {
|
|
26
|
+
expect(FLOAT_LAX('-45')).toBe(-45);
|
|
27
|
+
});
|
|
28
|
+
it('handles multiple decimals (parseFloat stops at second)', () => {
|
|
29
|
+
expect(FLOAT_LAX('1.2.3')).toBe(1.2);
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
describe('FLOAT_LAX() - Negative Inputs', () => {
|
|
33
|
+
it('returns 0 for no numbers', () => {
|
|
34
|
+
expect(FLOAT_LAX('abc')).toBe(0);
|
|
35
|
+
});
|
|
36
|
+
it('returns 0 for only symbols', () => {
|
|
37
|
+
expect(FLOAT_LAX('$#@')).toBe(0);
|
|
38
|
+
});
|
|
39
|
+
it('returns 0 for null', () => {
|
|
40
|
+
expect(FLOAT_LAX(null)).toBe(0);
|
|
41
|
+
});
|
|
42
|
+
it('returns 0 for undefined', () => {
|
|
43
|
+
expect(FLOAT_LAX(undefined)).toBe(0);
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
describe('INT_LAX() - Permissive Parsing', () => {
|
|
47
|
+
it('parses and rounds "123.7abc"', () => {
|
|
48
|
+
expect(INT_LAX('123.7abc')).toBe(124);
|
|
49
|
+
});
|
|
50
|
+
it('parses and rounds "45.3px"', () => {
|
|
51
|
+
expect(INT_LAX('45.3px')).toBe(45);
|
|
52
|
+
});
|
|
53
|
+
it('handles "$99.50"', () => {
|
|
54
|
+
expect(INT_LAX('$99.50')).toBe(100);
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
describe('FLOAT_LAX_ANY() - First Valid LAX Parse', () => {
|
|
58
|
+
it('skips null, returns first parseable', () => {
|
|
59
|
+
expect(FLOAT_LAX_ANY(null, 'price: $45.50')).toBe(45.5);
|
|
60
|
+
});
|
|
61
|
+
it('skips unparseable strings', () => {
|
|
62
|
+
// Legacy: FLOAT_LAX_ANY skips NaN results, so it returns 456
|
|
63
|
+
expect(FLOAT_LAX_ANY('xyz', '456test')).toBe(456);
|
|
64
|
+
});
|
|
65
|
+
it('returns 0 when all fail', () => {
|
|
66
|
+
expect(FLOAT_LAX_ANY('abc', 'def')).toBe(0);
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
describe('INT_LAX_ANY() - First Valid LAX Parse', () => {
|
|
70
|
+
it('skips null, returns first parseable int', () => {
|
|
71
|
+
expect(INT_LAX_ANY(null, 'price: $45.50')).toBe(46);
|
|
72
|
+
});
|
|
73
|
+
it('returns 0 when all fail', () => {
|
|
74
|
+
expect(INT_LAX_ANY('abc', 'def')).toBe(0);
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
describe('FLOAT_LAX() - Edge Cases', () => {
|
|
78
|
+
it('FLOAT_LAX handles very long string with number', () => {
|
|
79
|
+
expect(FLOAT_LAX('a'.repeat(1000) + '123')).toBe(123);
|
|
80
|
+
});
|
|
81
|
+
it('FLOAT_LAX handles leading zeros', () => {
|
|
82
|
+
expect(FLOAT_LAX('000123.45')).toBe(123.45);
|
|
83
|
+
});
|
|
84
|
+
it('FLOAT_LAX strips "e" from scientific notation', () => {
|
|
85
|
+
// Ported bug: regex /[^0-9.\-]/g removes 'e'
|
|
86
|
+
expect(FLOAT_LAX('1.5e10')).toBe(1.51);
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
//# sourceMappingURL=LeTypes.LAX.test.js.map
|