ts-data-forge 5.1.1 → 6.1.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 (53) hide show
  1. package/dist/array/impl/array-utils-reducing-value.d.mts +28 -0
  2. package/dist/array/impl/array-utils-reducing-value.d.mts.map +1 -1
  3. package/dist/array/impl/array-utils-reducing-value.mjs +4 -1
  4. package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -1
  5. package/dist/array/impl/index.mjs +1 -1
  6. package/dist/collections/imap.d.mts +1 -1
  7. package/dist/collections/iset-mapped.d.mts +1 -1
  8. package/dist/collections/iset.d.mts +1 -1
  9. package/dist/guard/is-record.d.mts.map +1 -1
  10. package/dist/guard/is-record.mjs +1 -1
  11. package/dist/guard/is-record.mjs.map +1 -1
  12. package/package.json +52 -48
  13. package/src/array/impl/array-utils-overload-type-error.test.mts +4 -2
  14. package/src/array/impl/array-utils-reducing-value.mts +48 -0
  15. package/src/collections/imap.mts +1 -1
  16. package/src/collections/iset-mapped.mts +1 -1
  17. package/src/collections/iset.mts +1 -1
  18. package/src/functional/optional.test.mts +7 -5
  19. package/src/functional/result.test.mts +10 -8
  20. package/src/functional/ternary-result.test.mts +4 -4
  21. package/src/guard/has-key.test.mts +89 -186
  22. package/src/guard/is-record.mts +1 -2
  23. package/src/guard/is-record.test.mts +57 -67
  24. package/src/json/json.test.mts +5 -5
  25. package/src/number/branded-types/finite-number.test.mts +15 -11
  26. package/src/number/branded-types/int.test.mts +13 -13
  27. package/src/number/branded-types/int16.test.mts +15 -15
  28. package/src/number/branded-types/int32.test.mts +15 -15
  29. package/src/number/branded-types/non-negative-finite-number.test.mts +19 -15
  30. package/src/number/branded-types/non-negative-int16.test.mts +15 -15
  31. package/src/number/branded-types/non-negative-int32.test.mts +15 -15
  32. package/src/number/branded-types/non-zero-finite-number.test.mts +18 -18
  33. package/src/number/branded-types/non-zero-int.test.mts +18 -14
  34. package/src/number/branded-types/non-zero-int16.test.mts +19 -15
  35. package/src/number/branded-types/non-zero-int32.test.mts +19 -15
  36. package/src/number/branded-types/non-zero-safe-int.test.mts +22 -18
  37. package/src/number/branded-types/non-zero-uint16.test.mts +15 -15
  38. package/src/number/branded-types/non-zero-uint32.test.mts +15 -15
  39. package/src/number/branded-types/positive-finite-number.test.mts +18 -18
  40. package/src/number/branded-types/positive-int.test.mts +22 -16
  41. package/src/number/branded-types/positive-int16.test.mts +14 -14
  42. package/src/number/branded-types/positive-int32.test.mts +14 -14
  43. package/src/number/branded-types/positive-safe-int.test.mts +20 -18
  44. package/src/number/branded-types/positive-uint16.test.mts +15 -15
  45. package/src/number/branded-types/positive-uint32.test.mts +15 -15
  46. package/src/number/branded-types/safe-int.test.mts +21 -17
  47. package/src/number/branded-types/safe-uint.test.mts +22 -16
  48. package/src/number/branded-types/uint.test.mts +14 -14
  49. package/src/number/branded-types/uint16.test.mts +14 -14
  50. package/src/number/branded-types/uint32.test.mts +14 -14
  51. package/src/number/enum/int8.test.mts +1 -1
  52. package/src/number/enum/uint8.test.mts +1 -1
  53. package/src/others/memoize-function.test.mts +1 -0
@@ -6,37 +6,37 @@ import { asNonZeroInt16 } from './non-zero-int16.mjs';
6
6
  describe('Int16 test', () => {
7
7
  describe(asInt16, () => {
8
8
  test('accepts valid int16 values', () => {
9
- expect(() => asInt16(0)).not.toThrow();
9
+ expect(() => asInt16(0)).not.toThrowError();
10
10
 
11
- expect(() => asInt16(1)).not.toThrow();
11
+ expect(() => asInt16(1)).not.toThrowError();
12
12
 
13
- expect(() => asInt16(-1)).not.toThrow();
13
+ expect(() => asInt16(-1)).not.toThrowError();
14
14
 
15
- expect(() => asInt16(32_767)).not.toThrow(); // 2^15 - 1
15
+ expect(() => asInt16(32_767)).not.toThrowError(); // 2^15 - 1
16
16
 
17
- expect(() => asInt16(-32_768)).not.toThrow(); // -2^15
17
+ expect(() => asInt16(-32_768)).not.toThrowError(); // -2^15
18
18
  });
19
19
 
20
20
  test('rejects values outside int16 range', () => {
21
- expect(() => asInt16(32_768)).toThrow(TypeError); // 2^15
21
+ expect(() => asInt16(32_768)).toThrowError(TypeError); // 2^15
22
22
 
23
- expect(() => asInt16(-32_769)).toThrow(TypeError); // -2^15 - 1
23
+ expect(() => asInt16(-32_769)).toThrowError(TypeError); // -2^15 - 1
24
24
 
25
- expect(() => asInt16(65_536)).toThrow(TypeError);
25
+ expect(() => asInt16(65_536)).toThrowError(TypeError);
26
26
 
27
- expect(() => asInt16(-65_536)).toThrow(TypeError);
27
+ expect(() => asInt16(-65_536)).toThrowError(TypeError);
28
28
  });
29
29
 
30
30
  test('rejects non-integers', () => {
31
- expect(() => asInt16(Number.NaN)).toThrow(TypeError);
31
+ expect(() => asInt16(Number.NaN)).toThrowError(TypeError);
32
32
 
33
- expect(() => asInt16(Number.POSITIVE_INFINITY)).toThrow(TypeError);
33
+ expect(() => asInt16(Number.POSITIVE_INFINITY)).toThrowError(TypeError);
34
34
 
35
- expect(() => asInt16(Number.NEGATIVE_INFINITY)).toThrow(TypeError);
35
+ expect(() => asInt16(Number.NEGATIVE_INFINITY)).toThrowError(TypeError);
36
36
 
37
- expect(() => asInt16(1.2)).toThrow(TypeError);
37
+ expect(() => asInt16(1.2)).toThrowError(TypeError);
38
38
 
39
- expect(() => asInt16(-3.4)).toThrow(TypeError);
39
+ expect(() => asInt16(-3.4)).toThrowError(TypeError);
40
40
  });
41
41
 
42
42
  test('returns the same value for valid inputs', () => {
@@ -58,7 +58,7 @@ describe('Int16 test', () => {
58
58
  { name: '1.2', value: 1.2 },
59
59
  { name: '-3.4', value: -3.4 },
60
60
  ] as const)(`asInt16($name) should throw a TypeError`, ({ value }) => {
61
- expect(() => asInt16(value)).toThrow(
61
+ expect(() => asInt16(value)).toThrowError(
62
62
  new TypeError(`Expected an integer in [-2^15, 2^15), got: ${value}`),
63
63
  );
64
64
  });
@@ -6,37 +6,37 @@ import { asNonZeroInt32 } from './non-zero-int32.mjs';
6
6
  describe('Int32 test', () => {
7
7
  describe(asInt32, () => {
8
8
  test('accepts valid int32 values', () => {
9
- expect(() => asInt32(0)).not.toThrow();
9
+ expect(() => asInt32(0)).not.toThrowError();
10
10
 
11
- expect(() => asInt32(1)).not.toThrow();
11
+ expect(() => asInt32(1)).not.toThrowError();
12
12
 
13
- expect(() => asInt32(-1)).not.toThrow();
13
+ expect(() => asInt32(-1)).not.toThrowError();
14
14
 
15
- expect(() => asInt32(2_147_483_647)).not.toThrow(); // 2^31 - 1
15
+ expect(() => asInt32(2_147_483_647)).not.toThrowError(); // 2^31 - 1
16
16
 
17
- expect(() => asInt32(-2_147_483_648)).not.toThrow(); // -2^31
17
+ expect(() => asInt32(-2_147_483_648)).not.toThrowError(); // -2^31
18
18
  });
19
19
 
20
20
  test('rejects values outside int32 range', () => {
21
- expect(() => asInt32(2_147_483_648)).toThrow(TypeError); // 2^31
21
+ expect(() => asInt32(2_147_483_648)).toThrowError(TypeError); // 2^31
22
22
 
23
- expect(() => asInt32(-2_147_483_649)).toThrow(TypeError); // -2^31 - 1
23
+ expect(() => asInt32(-2_147_483_649)).toThrowError(TypeError); // -2^31 - 1
24
24
 
25
- expect(() => asInt32(4_294_967_296)).toThrow(TypeError);
25
+ expect(() => asInt32(4_294_967_296)).toThrowError(TypeError);
26
26
 
27
- expect(() => asInt32(-4_294_967_296)).toThrow(TypeError);
27
+ expect(() => asInt32(-4_294_967_296)).toThrowError(TypeError);
28
28
  });
29
29
 
30
30
  test('rejects non-integers', () => {
31
- expect(() => asInt32(Number.NaN)).toThrow(TypeError);
31
+ expect(() => asInt32(Number.NaN)).toThrowError(TypeError);
32
32
 
33
- expect(() => asInt32(Number.POSITIVE_INFINITY)).toThrow(TypeError);
33
+ expect(() => asInt32(Number.POSITIVE_INFINITY)).toThrowError(TypeError);
34
34
 
35
- expect(() => asInt32(Number.NEGATIVE_INFINITY)).toThrow(TypeError);
35
+ expect(() => asInt32(Number.NEGATIVE_INFINITY)).toThrowError(TypeError);
36
36
 
37
- expect(() => asInt32(1.2)).toThrow(TypeError);
37
+ expect(() => asInt32(1.2)).toThrowError(TypeError);
38
38
 
39
- expect(() => asInt32(-3.4)).toThrow(TypeError);
39
+ expect(() => asInt32(-3.4)).toThrowError(TypeError);
40
40
  });
41
41
 
42
42
  test('returns the same value for valid inputs', () => {
@@ -58,7 +58,7 @@ describe('Int32 test', () => {
58
58
  { name: '1.2', value: 1.2 },
59
59
  { name: '-3.4', value: -3.4 },
60
60
  ] as const)(`asInt32($name) should throw a TypeError`, ({ value }) => {
61
- expect(() => asInt32(value)).toThrow(
61
+ expect(() => asInt32(value)).toThrowError(
62
62
  new TypeError(`Expected an integer in [-2^31, 2^31), got: ${value}`),
63
63
  );
64
64
  });
@@ -9,37 +9,41 @@ import {
9
9
  describe('NonNegativeFiniteNumber test', () => {
10
10
  describe(asNonNegativeFiniteNumber, () => {
11
11
  test('accepts valid non-negative finite numbers', () => {
12
- expect(() => asNonNegativeFiniteNumber(0)).not.toThrow();
12
+ expect(() => asNonNegativeFiniteNumber(0)).not.toThrowError();
13
13
 
14
- expect(() => asNonNegativeFiniteNumber(1)).not.toThrow();
14
+ expect(() => asNonNegativeFiniteNumber(1)).not.toThrowError();
15
15
 
16
- expect(() => asNonNegativeFiniteNumber(3.14)).not.toThrow();
16
+ expect(() => asNonNegativeFiniteNumber(3.14)).not.toThrowError();
17
17
 
18
- expect(() => asNonNegativeFiniteNumber(0.5)).not.toThrow();
18
+ expect(() => asNonNegativeFiniteNumber(0.5)).not.toThrowError();
19
19
 
20
- expect(() => asNonNegativeFiniteNumber(Number.MAX_VALUE)).not.toThrow();
20
+ expect(() =>
21
+ asNonNegativeFiniteNumber(Number.MAX_VALUE),
22
+ ).not.toThrowError();
21
23
  });
22
24
 
23
25
  test('rejects negative numbers', () => {
24
- expect(() => asNonNegativeFiniteNumber(-1)).toThrow(TypeError);
26
+ expect(() => asNonNegativeFiniteNumber(-1)).toThrowError(TypeError);
25
27
 
26
- expect(() => asNonNegativeFiniteNumber(-0.1)).toThrow(TypeError);
28
+ expect(() => asNonNegativeFiniteNumber(-0.1)).toThrowError(TypeError);
27
29
 
28
- expect(() => asNonNegativeFiniteNumber(-Number.MAX_VALUE)).toThrow(
30
+ expect(() => asNonNegativeFiniteNumber(-Number.MAX_VALUE)).toThrowError(
29
31
  TypeError,
30
32
  );
31
33
  });
32
34
 
33
35
  test('rejects non-finite numbers', () => {
34
- expect(() => asNonNegativeFiniteNumber(Number.NaN)).toThrow(TypeError);
35
-
36
- expect(() => asNonNegativeFiniteNumber(Number.POSITIVE_INFINITY)).toThrow(
36
+ expect(() => asNonNegativeFiniteNumber(Number.NaN)).toThrowError(
37
37
  TypeError,
38
38
  );
39
39
 
40
- expect(() => asNonNegativeFiniteNumber(Number.NEGATIVE_INFINITY)).toThrow(
41
- TypeError,
42
- );
40
+ expect(() =>
41
+ asNonNegativeFiniteNumber(Number.POSITIVE_INFINITY),
42
+ ).toThrowError(TypeError);
43
+
44
+ expect(() =>
45
+ asNonNegativeFiniteNumber(Number.NEGATIVE_INFINITY),
46
+ ).toThrowError(TypeError);
43
47
  });
44
48
 
45
49
  test('returns the same value for valid inputs', () => {
@@ -58,7 +62,7 @@ describe('NonNegativeFiniteNumber test', () => {
58
62
  ] as const)(
59
63
  `asNonNegativeFiniteNumber($name) should throw a TypeError`,
60
64
  ({ value }) => {
61
- expect(() => asNonNegativeFiniteNumber(value)).toThrow(
65
+ expect(() => asNonNegativeFiniteNumber(value)).toThrowError(
62
66
  new TypeError(`Expected a non-negative finite number, got: ${value}`),
63
67
  );
64
68
  },
@@ -10,43 +10,43 @@ import { asPositiveInt16 } from './positive-int16.mjs';
10
10
  describe('NonNegativeInt16 test', () => {
11
11
  describe(asNonNegativeInt16, () => {
12
12
  test('accepts valid non-negative int16 values', () => {
13
- expect(() => asNonNegativeInt16(0)).not.toThrow();
13
+ expect(() => asNonNegativeInt16(0)).not.toThrowError();
14
14
 
15
- expect(() => asNonNegativeInt16(1)).not.toThrow();
15
+ expect(() => asNonNegativeInt16(1)).not.toThrowError();
16
16
 
17
- expect(() => asNonNegativeInt16(1000)).not.toThrow();
17
+ expect(() => asNonNegativeInt16(1000)).not.toThrowError();
18
18
 
19
- expect(() => asNonNegativeInt16(32_767)).not.toThrow(); // 2^15 - 1
19
+ expect(() => asNonNegativeInt16(32_767)).not.toThrowError(); // 2^15 - 1
20
20
  });
21
21
 
22
22
  test('rejects negative integers', () => {
23
- expect(() => asNonNegativeInt16(-1)).toThrow(TypeError);
23
+ expect(() => asNonNegativeInt16(-1)).toThrowError(TypeError);
24
24
 
25
- expect(() => asNonNegativeInt16(-42)).toThrow(TypeError);
25
+ expect(() => asNonNegativeInt16(-42)).toThrowError(TypeError);
26
26
 
27
- expect(() => asNonNegativeInt16(-32_768)).toThrow(TypeError);
27
+ expect(() => asNonNegativeInt16(-32_768)).toThrowError(TypeError);
28
28
  });
29
29
 
30
30
  test('rejects values outside int16 range', () => {
31
- expect(() => asNonNegativeInt16(32_768)).toThrow(TypeError); // 2^15
31
+ expect(() => asNonNegativeInt16(32_768)).toThrowError(TypeError); // 2^15
32
32
 
33
- expect(() => asNonNegativeInt16(65_536)).toThrow(TypeError);
33
+ expect(() => asNonNegativeInt16(65_536)).toThrowError(TypeError);
34
34
  });
35
35
 
36
36
  test('rejects non-integers', () => {
37
- expect(() => asNonNegativeInt16(Number.NaN)).toThrow(TypeError);
37
+ expect(() => asNonNegativeInt16(Number.NaN)).toThrowError(TypeError);
38
38
 
39
- expect(() => asNonNegativeInt16(Number.POSITIVE_INFINITY)).toThrow(
39
+ expect(() => asNonNegativeInt16(Number.POSITIVE_INFINITY)).toThrowError(
40
40
  TypeError,
41
41
  );
42
42
 
43
- expect(() => asNonNegativeInt16(Number.NEGATIVE_INFINITY)).toThrow(
43
+ expect(() => asNonNegativeInt16(Number.NEGATIVE_INFINITY)).toThrowError(
44
44
  TypeError,
45
45
  );
46
46
 
47
- expect(() => asNonNegativeInt16(1.2)).toThrow(TypeError);
47
+ expect(() => asNonNegativeInt16(1.2)).toThrowError(TypeError);
48
48
 
49
- expect(() => asNonNegativeInt16(-3.4)).toThrow(TypeError);
49
+ expect(() => asNonNegativeInt16(-3.4)).toThrowError(TypeError);
50
50
  });
51
51
 
52
52
  test('returns the same value for valid inputs', () => {
@@ -68,7 +68,7 @@ describe('NonNegativeInt16 test', () => {
68
68
  ] as const)(
69
69
  `asNonNegativeInt16($name) should throw a TypeError`,
70
70
  ({ value }) => {
71
- expect(() => asNonNegativeInt16(value)).toThrow(
71
+ expect(() => asNonNegativeInt16(value)).toThrowError(
72
72
  new TypeError(
73
73
  `Expected a non-negative integer in [0, 2^15), got: ${value}`,
74
74
  ),
@@ -10,43 +10,43 @@ import { asPositiveInt32 } from './positive-int32.mjs';
10
10
  describe('NonNegativeInt32 test', () => {
11
11
  describe(asNonNegativeInt32, () => {
12
12
  test('accepts valid non-negative int32 values', () => {
13
- expect(() => asNonNegativeInt32(0)).not.toThrow();
13
+ expect(() => asNonNegativeInt32(0)).not.toThrowError();
14
14
 
15
- expect(() => asNonNegativeInt32(1)).not.toThrow();
15
+ expect(() => asNonNegativeInt32(1)).not.toThrowError();
16
16
 
17
- expect(() => asNonNegativeInt32(1000)).not.toThrow();
17
+ expect(() => asNonNegativeInt32(1000)).not.toThrowError();
18
18
 
19
- expect(() => asNonNegativeInt32(2_147_483_647)).not.toThrow(); // 2^31 - 1
19
+ expect(() => asNonNegativeInt32(2_147_483_647)).not.toThrowError(); // 2^31 - 1
20
20
  });
21
21
 
22
22
  test('rejects negative integers', () => {
23
- expect(() => asNonNegativeInt32(-1)).toThrow(TypeError);
23
+ expect(() => asNonNegativeInt32(-1)).toThrowError(TypeError);
24
24
 
25
- expect(() => asNonNegativeInt32(-42)).toThrow(TypeError);
25
+ expect(() => asNonNegativeInt32(-42)).toThrowError(TypeError);
26
26
 
27
- expect(() => asNonNegativeInt32(-2_147_483_648)).toThrow(TypeError);
27
+ expect(() => asNonNegativeInt32(-2_147_483_648)).toThrowError(TypeError);
28
28
  });
29
29
 
30
30
  test('rejects values outside int32 range', () => {
31
- expect(() => asNonNegativeInt32(2_147_483_648)).toThrow(TypeError); // 2^31
31
+ expect(() => asNonNegativeInt32(2_147_483_648)).toThrowError(TypeError); // 2^31
32
32
 
33
- expect(() => asNonNegativeInt32(4_294_967_296)).toThrow(TypeError);
33
+ expect(() => asNonNegativeInt32(4_294_967_296)).toThrowError(TypeError);
34
34
  });
35
35
 
36
36
  test('rejects non-integers', () => {
37
- expect(() => asNonNegativeInt32(Number.NaN)).toThrow(TypeError);
37
+ expect(() => asNonNegativeInt32(Number.NaN)).toThrowError(TypeError);
38
38
 
39
- expect(() => asNonNegativeInt32(Number.POSITIVE_INFINITY)).toThrow(
39
+ expect(() => asNonNegativeInt32(Number.POSITIVE_INFINITY)).toThrowError(
40
40
  TypeError,
41
41
  );
42
42
 
43
- expect(() => asNonNegativeInt32(Number.NEGATIVE_INFINITY)).toThrow(
43
+ expect(() => asNonNegativeInt32(Number.NEGATIVE_INFINITY)).toThrowError(
44
44
  TypeError,
45
45
  );
46
46
 
47
- expect(() => asNonNegativeInt32(1.2)).toThrow(TypeError);
47
+ expect(() => asNonNegativeInt32(1.2)).toThrowError(TypeError);
48
48
 
49
- expect(() => asNonNegativeInt32(-3.4)).toThrow(TypeError);
49
+ expect(() => asNonNegativeInt32(-3.4)).toThrowError(TypeError);
50
50
  });
51
51
 
52
52
  test('returns the same value for valid inputs', () => {
@@ -68,7 +68,7 @@ describe('NonNegativeInt32 test', () => {
68
68
  ] as const)(
69
69
  `asNonNegativeInt32($name) should throw a TypeError`,
70
70
  ({ value }) => {
71
- expect(() => asNonNegativeInt32(value)).toThrow(
71
+ expect(() => asNonNegativeInt32(value)).toThrowError(
72
72
  new TypeError(
73
73
  `Expected a non-negative integer in [0, 2^31), got: ${value}`,
74
74
  ),
@@ -9,39 +9,39 @@ import {
9
9
  describe('NonZeroFiniteNumber test', () => {
10
10
  describe(asNonZeroFiniteNumber, () => {
11
11
  test('accepts valid non-zero finite numbers', () => {
12
- expect(() => asNonZeroFiniteNumber(1)).not.toThrow();
12
+ expect(() => asNonZeroFiniteNumber(1)).not.toThrowError();
13
13
 
14
- expect(() => asNonZeroFiniteNumber(-1)).not.toThrow();
14
+ expect(() => asNonZeroFiniteNumber(-1)).not.toThrowError();
15
15
 
16
- expect(() => asNonZeroFiniteNumber(3.14)).not.toThrow();
16
+ expect(() => asNonZeroFiniteNumber(3.14)).not.toThrowError();
17
17
 
18
- expect(() => asNonZeroFiniteNumber(-2.5)).not.toThrow();
18
+ expect(() => asNonZeroFiniteNumber(-2.5)).not.toThrowError();
19
19
 
20
- expect(() => asNonZeroFiniteNumber(0.001)).not.toThrow();
20
+ expect(() => asNonZeroFiniteNumber(0.001)).not.toThrowError();
21
21
 
22
- expect(() => asNonZeroFiniteNumber(-0.001)).not.toThrow();
22
+ expect(() => asNonZeroFiniteNumber(-0.001)).not.toThrowError();
23
23
 
24
- expect(() => asNonZeroFiniteNumber(Number.MAX_VALUE)).not.toThrow();
24
+ expect(() => asNonZeroFiniteNumber(Number.MAX_VALUE)).not.toThrowError();
25
25
 
26
- expect(() => asNonZeroFiniteNumber(-Number.MAX_VALUE)).not.toThrow();
26
+ expect(() => asNonZeroFiniteNumber(-Number.MAX_VALUE)).not.toThrowError();
27
27
  });
28
28
 
29
29
  test('rejects zero', () => {
30
- expect(() => asNonZeroFiniteNumber(0)).toThrow(TypeError);
30
+ expect(() => asNonZeroFiniteNumber(0)).toThrowError(TypeError);
31
31
 
32
- expect(() => asNonZeroFiniteNumber(-0)).toThrow(TypeError);
32
+ expect(() => asNonZeroFiniteNumber(-0)).toThrowError(TypeError);
33
33
  });
34
34
 
35
35
  test('rejects non-finite numbers', () => {
36
- expect(() => asNonZeroFiniteNumber(Number.NaN)).toThrow(TypeError);
36
+ expect(() => asNonZeroFiniteNumber(Number.NaN)).toThrowError(TypeError);
37
37
 
38
- expect(() => asNonZeroFiniteNumber(Number.POSITIVE_INFINITY)).toThrow(
39
- TypeError,
40
- );
38
+ expect(() =>
39
+ asNonZeroFiniteNumber(Number.POSITIVE_INFINITY),
40
+ ).toThrowError(TypeError);
41
41
 
42
- expect(() => asNonZeroFiniteNumber(Number.NEGATIVE_INFINITY)).toThrow(
43
- TypeError,
44
- );
42
+ expect(() =>
43
+ asNonZeroFiniteNumber(Number.NEGATIVE_INFINITY),
44
+ ).toThrowError(TypeError);
45
45
  });
46
46
 
47
47
  test('returns the same value for valid inputs', () => {
@@ -60,7 +60,7 @@ describe('NonZeroFiniteNumber test', () => {
60
60
  ] as const)(
61
61
  `asNonZeroFiniteNumber($name) should throw a TypeError`,
62
62
  ({ value }) => {
63
- expect(() => asNonZeroFiniteNumber(value)).toThrow(
63
+ expect(() => asNonZeroFiniteNumber(value)).toThrowError(
64
64
  new TypeError(`Expected a non-zero finite number, got: ${value}`),
65
65
  );
66
66
  },
@@ -5,35 +5,39 @@ import { asNonZeroInt, isNonZeroInt, NonZeroInt } from './non-zero-int.mjs';
5
5
  describe('NonZeroInt test', () => {
6
6
  describe(asNonZeroInt, () => {
7
7
  test('accepts valid non-zero integers', () => {
8
- expect(() => asNonZeroInt(1)).not.toThrow();
8
+ expect(() => asNonZeroInt(1)).not.toThrowError();
9
9
 
10
- expect(() => asNonZeroInt(-1)).not.toThrow();
10
+ expect(() => asNonZeroInt(-1)).not.toThrowError();
11
11
 
12
- expect(() => asNonZeroInt(42)).not.toThrow();
12
+ expect(() => asNonZeroInt(42)).not.toThrowError();
13
13
 
14
- expect(() => asNonZeroInt(-42)).not.toThrow();
14
+ expect(() => asNonZeroInt(-42)).not.toThrowError();
15
15
 
16
- expect(() => asNonZeroInt(Number.MAX_SAFE_INTEGER)).not.toThrow();
16
+ expect(() => asNonZeroInt(Number.MAX_SAFE_INTEGER)).not.toThrowError();
17
17
 
18
- expect(() => asNonZeroInt(Number.MIN_SAFE_INTEGER)).not.toThrow();
18
+ expect(() => asNonZeroInt(Number.MIN_SAFE_INTEGER)).not.toThrowError();
19
19
  });
20
20
 
21
21
  test('rejects zero', () => {
22
- expect(() => asNonZeroInt(0)).toThrow(TypeError);
22
+ expect(() => asNonZeroInt(0)).toThrowError(TypeError);
23
23
 
24
- expect(() => asNonZeroInt(-0)).toThrow(TypeError);
24
+ expect(() => asNonZeroInt(-0)).toThrowError(TypeError);
25
25
  });
26
26
 
27
27
  test('rejects non-integers', () => {
28
- expect(() => asNonZeroInt(Number.NaN)).toThrow(TypeError);
28
+ expect(() => asNonZeroInt(Number.NaN)).toThrowError(TypeError);
29
29
 
30
- expect(() => asNonZeroInt(Number.POSITIVE_INFINITY)).toThrow(TypeError);
30
+ expect(() => asNonZeroInt(Number.POSITIVE_INFINITY)).toThrowError(
31
+ TypeError,
32
+ );
31
33
 
32
- expect(() => asNonZeroInt(Number.NEGATIVE_INFINITY)).toThrow(TypeError);
34
+ expect(() => asNonZeroInt(Number.NEGATIVE_INFINITY)).toThrowError(
35
+ TypeError,
36
+ );
33
37
 
34
- expect(() => asNonZeroInt(1.2)).toThrow(TypeError);
38
+ expect(() => asNonZeroInt(1.2)).toThrowError(TypeError);
35
39
 
36
- expect(() => asNonZeroInt(-3.4)).toThrow(TypeError);
40
+ expect(() => asNonZeroInt(-3.4)).toThrowError(TypeError);
37
41
  });
38
42
 
39
43
  test('returns the same value for valid inputs', () => {
@@ -52,7 +56,7 @@ describe('NonZeroInt test', () => {
52
56
  { name: '-3.4', value: -3.4 },
53
57
  { name: '0', value: 0 },
54
58
  ] as const)(`asNonZeroInt($name) should throw a TypeError`, ({ value }) => {
55
- expect(() => asNonZeroInt(value)).toThrow(
59
+ expect(() => asNonZeroInt(value)).toThrowError(
56
60
  new TypeError(`Expected a non-zero integer, got: ${value}`),
57
61
  );
58
62
  });
@@ -9,39 +9,43 @@ import {
9
9
  describe('NonZeroInt16 test', () => {
10
10
  describe(asNonZeroInt16, () => {
11
11
  test('accepts valid non-zero int16 values', () => {
12
- expect(() => asNonZeroInt16(1)).not.toThrow();
12
+ expect(() => asNonZeroInt16(1)).not.toThrowError();
13
13
 
14
- expect(() => asNonZeroInt16(-1)).not.toThrow();
14
+ expect(() => asNonZeroInt16(-1)).not.toThrowError();
15
15
 
16
- expect(() => asNonZeroInt16(32_767)).not.toThrow(); // 2^15 - 1
16
+ expect(() => asNonZeroInt16(32_767)).not.toThrowError(); // 2^15 - 1
17
17
 
18
- expect(() => asNonZeroInt16(-32_768)).not.toThrow(); // -2^15
18
+ expect(() => asNonZeroInt16(-32_768)).not.toThrowError(); // -2^15
19
19
  });
20
20
 
21
21
  test('rejects zero', () => {
22
- expect(() => asNonZeroInt16(0)).toThrow(TypeError);
22
+ expect(() => asNonZeroInt16(0)).toThrowError(TypeError);
23
23
  });
24
24
 
25
25
  test('rejects values outside int16 range', () => {
26
- expect(() => asNonZeroInt16(32_768)).toThrow(TypeError); // 2^15
26
+ expect(() => asNonZeroInt16(32_768)).toThrowError(TypeError); // 2^15
27
27
 
28
- expect(() => asNonZeroInt16(-32_769)).toThrow(TypeError); // -2^15 - 1
28
+ expect(() => asNonZeroInt16(-32_769)).toThrowError(TypeError); // -2^15 - 1
29
29
 
30
- expect(() => asNonZeroInt16(65_536)).toThrow(TypeError);
30
+ expect(() => asNonZeroInt16(65_536)).toThrowError(TypeError);
31
31
 
32
- expect(() => asNonZeroInt16(-65_536)).toThrow(TypeError);
32
+ expect(() => asNonZeroInt16(-65_536)).toThrowError(TypeError);
33
33
  });
34
34
 
35
35
  test('rejects non-integers', () => {
36
- expect(() => asNonZeroInt16(Number.NaN)).toThrow(TypeError);
36
+ expect(() => asNonZeroInt16(Number.NaN)).toThrowError(TypeError);
37
37
 
38
- expect(() => asNonZeroInt16(Number.POSITIVE_INFINITY)).toThrow(TypeError);
38
+ expect(() => asNonZeroInt16(Number.POSITIVE_INFINITY)).toThrowError(
39
+ TypeError,
40
+ );
39
41
 
40
- expect(() => asNonZeroInt16(Number.NEGATIVE_INFINITY)).toThrow(TypeError);
42
+ expect(() => asNonZeroInt16(Number.NEGATIVE_INFINITY)).toThrowError(
43
+ TypeError,
44
+ );
41
45
 
42
- expect(() => asNonZeroInt16(1.2)).toThrow(TypeError);
46
+ expect(() => asNonZeroInt16(1.2)).toThrowError(TypeError);
43
47
 
44
- expect(() => asNonZeroInt16(-3.4)).toThrow(TypeError);
48
+ expect(() => asNonZeroInt16(-3.4)).toThrowError(TypeError);
45
49
  });
46
50
 
47
51
  test('returns the same value for valid inputs', () => {
@@ -66,7 +70,7 @@ describe('NonZeroInt16 test', () => {
66
70
  ] as const)(
67
71
  `asNonZeroInt16($name) should throw a TypeError`,
68
72
  ({ value }) => {
69
- expect(() => asNonZeroInt16(value)).toThrow(
73
+ expect(() => asNonZeroInt16(value)).toThrowError(
70
74
  new TypeError(
71
75
  `Expected a non-zero integer in [-2^15, 2^15), got: ${value}`,
72
76
  ),
@@ -9,39 +9,43 @@ import {
9
9
  describe('NonZeroInt32 test', () => {
10
10
  describe(asNonZeroInt32, () => {
11
11
  test('accepts valid non-zero int32 values', () => {
12
- expect(() => asNonZeroInt32(1)).not.toThrow();
12
+ expect(() => asNonZeroInt32(1)).not.toThrowError();
13
13
 
14
- expect(() => asNonZeroInt32(-1)).not.toThrow();
14
+ expect(() => asNonZeroInt32(-1)).not.toThrowError();
15
15
 
16
- expect(() => asNonZeroInt32(2_147_483_647)).not.toThrow(); // 2^31 - 1
16
+ expect(() => asNonZeroInt32(2_147_483_647)).not.toThrowError(); // 2^31 - 1
17
17
 
18
- expect(() => asNonZeroInt32(-2_147_483_648)).not.toThrow(); // -2^31
18
+ expect(() => asNonZeroInt32(-2_147_483_648)).not.toThrowError(); // -2^31
19
19
  });
20
20
 
21
21
  test('rejects zero', () => {
22
- expect(() => asNonZeroInt32(0)).toThrow(TypeError);
22
+ expect(() => asNonZeroInt32(0)).toThrowError(TypeError);
23
23
  });
24
24
 
25
25
  test('rejects values outside int32 range', () => {
26
- expect(() => asNonZeroInt32(2_147_483_648)).toThrow(TypeError); // 2^31
26
+ expect(() => asNonZeroInt32(2_147_483_648)).toThrowError(TypeError); // 2^31
27
27
 
28
- expect(() => asNonZeroInt32(-2_147_483_649)).toThrow(TypeError); // -2^31 - 1
28
+ expect(() => asNonZeroInt32(-2_147_483_649)).toThrowError(TypeError); // -2^31 - 1
29
29
 
30
- expect(() => asNonZeroInt32(4_294_967_296)).toThrow(TypeError);
30
+ expect(() => asNonZeroInt32(4_294_967_296)).toThrowError(TypeError);
31
31
 
32
- expect(() => asNonZeroInt32(-4_294_967_296)).toThrow(TypeError);
32
+ expect(() => asNonZeroInt32(-4_294_967_296)).toThrowError(TypeError);
33
33
  });
34
34
 
35
35
  test('rejects non-integers', () => {
36
- expect(() => asNonZeroInt32(Number.NaN)).toThrow(TypeError);
36
+ expect(() => asNonZeroInt32(Number.NaN)).toThrowError(TypeError);
37
37
 
38
- expect(() => asNonZeroInt32(Number.POSITIVE_INFINITY)).toThrow(TypeError);
38
+ expect(() => asNonZeroInt32(Number.POSITIVE_INFINITY)).toThrowError(
39
+ TypeError,
40
+ );
39
41
 
40
- expect(() => asNonZeroInt32(Number.NEGATIVE_INFINITY)).toThrow(TypeError);
42
+ expect(() => asNonZeroInt32(Number.NEGATIVE_INFINITY)).toThrowError(
43
+ TypeError,
44
+ );
41
45
 
42
- expect(() => asNonZeroInt32(1.2)).toThrow(TypeError);
46
+ expect(() => asNonZeroInt32(1.2)).toThrowError(TypeError);
43
47
 
44
- expect(() => asNonZeroInt32(-3.4)).toThrow(TypeError);
48
+ expect(() => asNonZeroInt32(-3.4)).toThrowError(TypeError);
45
49
  });
46
50
 
47
51
  test('returns the same value for valid inputs', () => {
@@ -66,7 +70,7 @@ describe('NonZeroInt32 test', () => {
66
70
  ] as const)(
67
71
  `asNonZeroInt32($name) should throw a TypeError`,
68
72
  ({ value }) => {
69
- expect(() => asNonZeroInt32(value)).toThrow(
73
+ expect(() => asNonZeroInt32(value)).toThrowError(
70
74
  new TypeError(
71
75
  `Expected a non-zero integer in [-2^31, 2^31), got: ${value}`,
72
76
  ),