complete-common 2.21.0 → 2.22.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 (175) hide show
  1. package/dist/index.cjs +6 -0
  2. package/dist/index.mjs +6 -1
  3. package/dist/src/constants.d.ts.map +1 -0
  4. package/dist/src/functions/array.d.ts.map +1 -0
  5. package/dist/{functions → src/functions}/assert.d.cts +8 -0
  6. package/dist/{functions → src/functions}/assert.d.mts +8 -0
  7. package/dist/{functions → src/functions}/assert.d.ts +8 -0
  8. package/dist/src/functions/assert.d.ts.map +1 -0
  9. package/dist/src/functions/enums.d.ts.map +1 -0
  10. package/dist/src/functions/map.d.ts.map +1 -0
  11. package/dist/src/functions/math.d.ts.map +1 -0
  12. package/dist/src/functions/object.d.ts.map +1 -0
  13. package/dist/src/functions/random.d.ts.map +1 -0
  14. package/dist/src/functions/set.d.ts.map +1 -0
  15. package/dist/src/functions/sort.d.ts.map +1 -0
  16. package/dist/src/functions/string.d.ts.map +1 -0
  17. package/dist/src/functions/time.d.ts.map +1 -0
  18. package/dist/src/functions/tuple.d.ts.map +1 -0
  19. package/dist/src/functions/types.d.ts.map +1 -0
  20. package/dist/src/functions/utils.d.ts.map +1 -0
  21. package/dist/src/index.d.ts.map +1 -0
  22. package/dist/src/interfaces/SemanticVersion.d.ts.map +1 -0
  23. package/dist/src/types/AddSubtract.d.ts.map +1 -0
  24. package/dist/src/types/CompositionTypeSatisfiesEnum.d.ts.map +1 -0
  25. package/dist/src/types/ERange.d.ts.map +1 -0
  26. package/dist/src/types/IRange.d.ts.map +1 -0
  27. package/dist/src/types/Immutable.d.ts.map +1 -0
  28. package/dist/src/types/NaturalNumbersLessThan.d.ts.map +1 -0
  29. package/dist/src/types/NaturalNumbersLessThanOrEqualTo.d.ts.map +1 -0
  30. package/dist/src/types/ObjectValues.d.ts.map +1 -0
  31. package/dist/src/types/ReadonlyMap.d.ts.map +1 -0
  32. package/dist/src/types/ReadonlyRecord.d.ts.map +1 -0
  33. package/dist/src/types/ReadonlySet.d.ts.map +1 -0
  34. package/dist/src/types/TranspiledEnum.d.ts.map +1 -0
  35. package/dist/src/types/Tuple.d.ts.map +1 -0
  36. package/dist/src/types/WidenLiteral.d.ts.map +1 -0
  37. package/dist/src/types/Writeable.d.ts.map +1 -0
  38. package/package.json +7 -8
  39. package/src/functions/assert.ts +25 -0
  40. package/src/functions/tuple.ts +1 -1
  41. package/dist/constants.d.ts.map +0 -1
  42. package/dist/functions/array.d.ts.map +0 -1
  43. package/dist/functions/assert.d.ts.map +0 -1
  44. package/dist/functions/enums.d.ts.map +0 -1
  45. package/dist/functions/map.d.ts.map +0 -1
  46. package/dist/functions/math.d.ts.map +0 -1
  47. package/dist/functions/object.d.ts.map +0 -1
  48. package/dist/functions/random.d.ts.map +0 -1
  49. package/dist/functions/set.d.ts.map +0 -1
  50. package/dist/functions/sort.d.ts.map +0 -1
  51. package/dist/functions/string.d.ts.map +0 -1
  52. package/dist/functions/string.test.d.cts +0 -2
  53. package/dist/functions/string.test.d.mts +0 -2
  54. package/dist/functions/string.test.d.ts +0 -2
  55. package/dist/functions/string.test.d.ts.map +0 -1
  56. package/dist/functions/time.d.ts.map +0 -1
  57. package/dist/functions/tuple.d.ts.map +0 -1
  58. package/dist/functions/types.d.ts.map +0 -1
  59. package/dist/functions/utils.d.ts.map +0 -1
  60. package/dist/functions/utils.test.d.cts +0 -2
  61. package/dist/functions/utils.test.d.mts +0 -2
  62. package/dist/functions/utils.test.d.ts +0 -2
  63. package/dist/functions/utils.test.d.ts.map +0 -1
  64. package/dist/index.d.ts.map +0 -1
  65. package/dist/interfaces/SemanticVersion.d.ts.map +0 -1
  66. package/dist/types/AddSubtract.d.ts.map +0 -1
  67. package/dist/types/CompositionTypeSatisfiesEnum.d.ts.map +0 -1
  68. package/dist/types/ERange.d.ts.map +0 -1
  69. package/dist/types/IRange.d.ts.map +0 -1
  70. package/dist/types/Immutable.d.ts.map +0 -1
  71. package/dist/types/NaturalNumbersLessThan.d.ts.map +0 -1
  72. package/dist/types/NaturalNumbersLessThanOrEqualTo.d.ts.map +0 -1
  73. package/dist/types/ObjectValues.d.ts.map +0 -1
  74. package/dist/types/ReadonlyMap.d.ts.map +0 -1
  75. package/dist/types/ReadonlyRecord.d.ts.map +0 -1
  76. package/dist/types/ReadonlySet.d.ts.map +0 -1
  77. package/dist/types/TranspiledEnum.d.ts.map +0 -1
  78. package/dist/types/Tuple.d.ts.map +0 -1
  79. package/dist/types/WidenLiteral.d.ts.map +0 -1
  80. package/dist/types/Writeable.d.ts.map +0 -1
  81. package/src/functions/string.test.ts +0 -205
  82. package/src/functions/utils.test.ts +0 -904
  83. /package/dist/{constants.d.cts → src/constants.d.cts} +0 -0
  84. /package/dist/{constants.d.mts → src/constants.d.mts} +0 -0
  85. /package/dist/{constants.d.ts → src/constants.d.ts} +0 -0
  86. /package/dist/{functions → src/functions}/array.d.cts +0 -0
  87. /package/dist/{functions → src/functions}/array.d.mts +0 -0
  88. /package/dist/{functions → src/functions}/array.d.ts +0 -0
  89. /package/dist/{functions → src/functions}/enums.d.cts +0 -0
  90. /package/dist/{functions → src/functions}/enums.d.mts +0 -0
  91. /package/dist/{functions → src/functions}/enums.d.ts +0 -0
  92. /package/dist/{functions → src/functions}/map.d.cts +0 -0
  93. /package/dist/{functions → src/functions}/map.d.mts +0 -0
  94. /package/dist/{functions → src/functions}/map.d.ts +0 -0
  95. /package/dist/{functions → src/functions}/math.d.cts +0 -0
  96. /package/dist/{functions → src/functions}/math.d.mts +0 -0
  97. /package/dist/{functions → src/functions}/math.d.ts +0 -0
  98. /package/dist/{functions → src/functions}/object.d.cts +0 -0
  99. /package/dist/{functions → src/functions}/object.d.mts +0 -0
  100. /package/dist/{functions → src/functions}/object.d.ts +0 -0
  101. /package/dist/{functions → src/functions}/random.d.cts +0 -0
  102. /package/dist/{functions → src/functions}/random.d.mts +0 -0
  103. /package/dist/{functions → src/functions}/random.d.ts +0 -0
  104. /package/dist/{functions → src/functions}/set.d.cts +0 -0
  105. /package/dist/{functions → src/functions}/set.d.mts +0 -0
  106. /package/dist/{functions → src/functions}/set.d.ts +0 -0
  107. /package/dist/{functions → src/functions}/sort.d.cts +0 -0
  108. /package/dist/{functions → src/functions}/sort.d.mts +0 -0
  109. /package/dist/{functions → src/functions}/sort.d.ts +0 -0
  110. /package/dist/{functions → src/functions}/string.d.cts +0 -0
  111. /package/dist/{functions → src/functions}/string.d.mts +0 -0
  112. /package/dist/{functions → src/functions}/string.d.ts +0 -0
  113. /package/dist/{functions → src/functions}/time.d.cts +0 -0
  114. /package/dist/{functions → src/functions}/time.d.mts +0 -0
  115. /package/dist/{functions → src/functions}/time.d.ts +0 -0
  116. /package/dist/{functions → src/functions}/tuple.d.cts +0 -0
  117. /package/dist/{functions → src/functions}/tuple.d.mts +0 -0
  118. /package/dist/{functions → src/functions}/tuple.d.ts +0 -0
  119. /package/dist/{functions → src/functions}/types.d.cts +0 -0
  120. /package/dist/{functions → src/functions}/types.d.mts +0 -0
  121. /package/dist/{functions → src/functions}/types.d.ts +0 -0
  122. /package/dist/{functions → src/functions}/utils.d.cts +0 -0
  123. /package/dist/{functions → src/functions}/utils.d.mts +0 -0
  124. /package/dist/{functions → src/functions}/utils.d.ts +0 -0
  125. /package/dist/{index.d.cts → src/index.d.cts} +0 -0
  126. /package/dist/{index.d.mts → src/index.d.mts} +0 -0
  127. /package/dist/{index.d.ts → src/index.d.ts} +0 -0
  128. /package/dist/{interfaces → src/interfaces}/SemanticVersion.d.cts +0 -0
  129. /package/dist/{interfaces → src/interfaces}/SemanticVersion.d.mts +0 -0
  130. /package/dist/{interfaces → src/interfaces}/SemanticVersion.d.ts +0 -0
  131. /package/dist/{types → src/types}/AddSubtract.d.cts +0 -0
  132. /package/dist/{types → src/types}/AddSubtract.d.mts +0 -0
  133. /package/dist/{types → src/types}/AddSubtract.d.ts +0 -0
  134. /package/dist/{types → src/types}/CompositionTypeSatisfiesEnum.d.cts +0 -0
  135. /package/dist/{types → src/types}/CompositionTypeSatisfiesEnum.d.mts +0 -0
  136. /package/dist/{types → src/types}/CompositionTypeSatisfiesEnum.d.ts +0 -0
  137. /package/dist/{types → src/types}/ERange.d.cts +0 -0
  138. /package/dist/{types → src/types}/ERange.d.mts +0 -0
  139. /package/dist/{types → src/types}/ERange.d.ts +0 -0
  140. /package/dist/{types → src/types}/IRange.d.cts +0 -0
  141. /package/dist/{types → src/types}/IRange.d.mts +0 -0
  142. /package/dist/{types → src/types}/IRange.d.ts +0 -0
  143. /package/dist/{types → src/types}/Immutable.d.cts +0 -0
  144. /package/dist/{types → src/types}/Immutable.d.mts +0 -0
  145. /package/dist/{types → src/types}/Immutable.d.ts +0 -0
  146. /package/dist/{types → src/types}/NaturalNumbersLessThan.d.cts +0 -0
  147. /package/dist/{types → src/types}/NaturalNumbersLessThan.d.mts +0 -0
  148. /package/dist/{types → src/types}/NaturalNumbersLessThan.d.ts +0 -0
  149. /package/dist/{types → src/types}/NaturalNumbersLessThanOrEqualTo.d.cts +0 -0
  150. /package/dist/{types → src/types}/NaturalNumbersLessThanOrEqualTo.d.mts +0 -0
  151. /package/dist/{types → src/types}/NaturalNumbersLessThanOrEqualTo.d.ts +0 -0
  152. /package/dist/{types → src/types}/ObjectValues.d.cts +0 -0
  153. /package/dist/{types → src/types}/ObjectValues.d.mts +0 -0
  154. /package/dist/{types → src/types}/ObjectValues.d.ts +0 -0
  155. /package/dist/{types → src/types}/ReadonlyMap.d.cts +0 -0
  156. /package/dist/{types → src/types}/ReadonlyMap.d.mts +0 -0
  157. /package/dist/{types → src/types}/ReadonlyMap.d.ts +0 -0
  158. /package/dist/{types → src/types}/ReadonlyRecord.d.cts +0 -0
  159. /package/dist/{types → src/types}/ReadonlyRecord.d.mts +0 -0
  160. /package/dist/{types → src/types}/ReadonlyRecord.d.ts +0 -0
  161. /package/dist/{types → src/types}/ReadonlySet.d.cts +0 -0
  162. /package/dist/{types → src/types}/ReadonlySet.d.mts +0 -0
  163. /package/dist/{types → src/types}/ReadonlySet.d.ts +0 -0
  164. /package/dist/{types → src/types}/TranspiledEnum.d.cts +0 -0
  165. /package/dist/{types → src/types}/TranspiledEnum.d.mts +0 -0
  166. /package/dist/{types → src/types}/TranspiledEnum.d.ts +0 -0
  167. /package/dist/{types → src/types}/Tuple.d.cts +0 -0
  168. /package/dist/{types → src/types}/Tuple.d.mts +0 -0
  169. /package/dist/{types → src/types}/Tuple.d.ts +0 -0
  170. /package/dist/{types → src/types}/WidenLiteral.d.cts +0 -0
  171. /package/dist/{types → src/types}/WidenLiteral.d.mts +0 -0
  172. /package/dist/{types → src/types}/WidenLiteral.d.ts +0 -0
  173. /package/dist/{types → src/types}/Writeable.d.cts +0 -0
  174. /package/dist/{types → src/types}/Writeable.d.mts +0 -0
  175. /package/dist/{types → src/types}/Writeable.d.ts +0 -0
@@ -1,904 +0,0 @@
1
- import { deepStrictEqual, strictEqual } from "node:assert";
2
- import { describe, test } from "node:test";
3
- import { assertDefined, assertNotNull } from "./assert.js";
4
- import { eRange, iRange, parseFloatSafe, parseIntSafe } from "./utils.js";
5
-
6
- describe("assertsDefined", () => {
7
- /** We use a value of null since it is the least arbitrary non-undefined value. */
8
- const value = null as unknown; // eslint-disable-line unicorn/no-null
9
-
10
- // @ts-expect-error Should fail since we are not in a union with undefined.
11
- assertDefined(value as boolean, "");
12
- // @ts-expect-error Should fail since we are not in a union with undefined.
13
- assertDefined(value as number, "");
14
- // @ts-expect-error Should fail since we are not in a union with undefined.
15
- assertDefined(value as string, "");
16
- // @ts-expect-error Should fail since we are not in a union with undefined.
17
- assertDefined(value as Function, ""); // eslint-disable-line @typescript-eslint/no-unsafe-function-type
18
-
19
- assertDefined(value as boolean | undefined, "");
20
- assertDefined(value as number | undefined, "");
21
- assertDefined(value as string | undefined, "");
22
- assertDefined(value as Function | undefined, ""); // eslint-disable-line @typescript-eslint/no-unsafe-function-type
23
-
24
- // @ts-expect-error Should fail because we are in a union with null instead of undefined.
25
- assertDefined(value as boolean | null, "");
26
- // @ts-expect-error Should fail because we are in a union with null instead of undefined.
27
- assertDefined(value as number | null, "");
28
- // @ts-expect-error Should fail because we are in a union with null instead of undefined.
29
- assertDefined(value as string | null, "");
30
- // @ts-expect-error Should fail because we are in a union with null instead of undefined.
31
- assertDefined(value as Function | null, ""); // eslint-disable-line @typescript-eslint/no-unsafe-function-type
32
-
33
- assertDefined(value as boolean | undefined | null, "");
34
- assertDefined(value as number | undefined | null, "");
35
- assertDefined(value as string | undefined | null, "");
36
- assertDefined(value as Function | undefined | null, ""); // eslint-disable-line @typescript-eslint/no-unsafe-function-type
37
-
38
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters
39
- function _genericFunction<T>(_arg: T) {
40
- const t = undefined as T | undefined;
41
- assertDefined(t, "");
42
- }
43
- });
44
-
45
- describe("assertsNull", () => {
46
- const value = undefined as unknown;
47
-
48
- // @ts-expect-error Should fail since we are not in a union with null.
49
- assertNotNull(value as boolean, "");
50
- // @ts-expect-error Should fail since we are not in a union with null.
51
- assertNotNull(value as number, "");
52
- // @ts-expect-error Should fail since we are not in a union with null.
53
- assertNotNull(value as string, "");
54
- // @ts-expect-error Should fail since we are not in a union with null.
55
- assertNotNull(value as Function, ""); // eslint-disable-line @typescript-eslint/no-unsafe-function-type
56
-
57
- assertNotNull(value as boolean | null, "");
58
- assertNotNull(value as number | null, "");
59
- assertNotNull(value as string | null, "");
60
- assertNotNull(value as Function | null, ""); // eslint-disable-line @typescript-eslint/no-unsafe-function-type
61
-
62
- // @ts-expect-error Should fail because we are in a union with undefined instead of null.
63
- assertNotNull(value as boolean | undefined, "");
64
- // @ts-expect-error Should fail because we are in a union with undefined instead of null.
65
- assertNotNull(value as number | undefined, "");
66
- // @ts-expect-error Should fail because we are in a union with undefined instead of null.
67
- assertNotNull(value as string | undefined, "");
68
- // @ts-expect-error Should fail because we are in a union with undefined instead of null.
69
- assertNotNull(value as Function | undefined, ""); // eslint-disable-line @typescript-eslint/no-unsafe-function-type
70
-
71
- assertNotNull(value as boolean | null | undefined, "");
72
- assertNotNull(value as number | null | undefined, "");
73
- assertNotNull(value as string | null | undefined, "");
74
- assertNotNull(value as Function | null | undefined, ""); // eslint-disable-line @typescript-eslint/no-unsafe-function-type
75
-
76
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters
77
- function _genericFunction<T>(_arg: T) {
78
- const t = null as T | null; // eslint-disable-line unicorn/no-null
79
- assertNotNull(t, "");
80
- }
81
- });
82
-
83
- describe("eRange", () => {
84
- describe("1 arg 0", () => {
85
- test("0", () => {
86
- const result = [...eRange(0)];
87
- deepStrictEqual(result, []);
88
- });
89
- });
90
-
91
- describe("1 arg positive", () => {
92
- test("1", () => {
93
- const result = [...eRange(1)];
94
- deepStrictEqual(result, [0]);
95
- });
96
-
97
- test("2", () => {
98
- const result = [...eRange(2)];
99
- deepStrictEqual(result, [0, 1]);
100
- });
101
-
102
- test("3", () => {
103
- const result = [...eRange(3)];
104
- deepStrictEqual(result, [0, 1, 2]);
105
- });
106
- });
107
-
108
- describe("1 arg negative", () => {
109
- test("-1", () => {
110
- const result = [...eRange(-1)];
111
- deepStrictEqual(result, []);
112
- });
113
- });
114
-
115
- describe("2 args same", () => {
116
- test("0, 0", () => {
117
- const result = [...eRange(0, 0)];
118
- deepStrictEqual(result, []);
119
- });
120
-
121
- test("1, 1", () => {
122
- const result = [...eRange(1, 1)];
123
- deepStrictEqual(result, []);
124
- });
125
-
126
- test("2, 2", () => {
127
- const result = [...eRange(2, 2)];
128
- deepStrictEqual(result, []);
129
- });
130
-
131
- test("3, 3", () => {
132
- const result = [...eRange(3, 3)];
133
- deepStrictEqual(result, []);
134
- });
135
-
136
- test("-1, -1", () => {
137
- const result = [...eRange(-1, -1)];
138
- deepStrictEqual(result, []);
139
- });
140
-
141
- test("-2, -2", () => {
142
- const result = [...eRange(-2, -2)];
143
- deepStrictEqual(result, []);
144
- });
145
-
146
- test("-3, -3", () => {
147
- const result = [...eRange(-3, -3)];
148
- deepStrictEqual(result, []);
149
- });
150
- });
151
-
152
- describe("2 args increasing", () => {
153
- test("0, 1", () => {
154
- const result = [...eRange(0, 1)];
155
- deepStrictEqual(result, [0]);
156
- });
157
-
158
- test("0, 2", () => {
159
- const result = [...eRange(0, 2)];
160
- deepStrictEqual(result, [0, 1]);
161
- });
162
-
163
- test("0, 3", () => {
164
- const result = [...eRange(0, 3)];
165
- deepStrictEqual(result, [0, 1, 2]);
166
- });
167
-
168
- test("1, 2", () => {
169
- const result = [...eRange(1, 2)];
170
- deepStrictEqual(result, [1]);
171
- });
172
-
173
- test("1, 3", () => {
174
- const result = [...eRange(1, 3)];
175
- deepStrictEqual(result, [1, 2]);
176
- });
177
-
178
- test("1, 4", () => {
179
- const result = [...eRange(1, 4)];
180
- deepStrictEqual(result, [1, 2, 3]);
181
- });
182
-
183
- test("2, 3", () => {
184
- const result = [...eRange(2, 3)];
185
- deepStrictEqual(result, [2]);
186
- });
187
-
188
- test("2, 4", () => {
189
- const result = [...eRange(2, 4)];
190
- deepStrictEqual(result, [2, 3]);
191
- });
192
-
193
- test("2, 5", () => {
194
- const result = [...eRange(2, 5)];
195
- deepStrictEqual(result, [2, 3, 4]);
196
- });
197
-
198
- test("-3, -1", () => {
199
- const result = [...eRange(-3, -1)];
200
- deepStrictEqual(result, [-3, -2]);
201
- });
202
-
203
- test("-3, 3", () => {
204
- const result = [...eRange(-3, 3)];
205
- deepStrictEqual(result, [-3, -2, -1, 0, 1, 2]);
206
- });
207
- });
208
-
209
- describe("2 args decreasing", () => {
210
- test("1, 0", () => {
211
- const result = [...eRange(1, 0)];
212
- deepStrictEqual(result, []);
213
- });
214
-
215
- test("-1, -2", () => {
216
- const result = [...eRange(-1, -3)];
217
- deepStrictEqual(result, []);
218
- });
219
- });
220
- });
221
-
222
- describe("iRange", () => {
223
- describe("1 arg 0", () => {
224
- test("0", () => {
225
- const result = [...iRange(0)];
226
- deepStrictEqual(result, [0]);
227
- });
228
- });
229
-
230
- describe("1 arg positive", () => {
231
- test("1", () => {
232
- const result = [...iRange(1)];
233
- deepStrictEqual(result, [0, 1]);
234
- });
235
-
236
- test("2", () => {
237
- const result = [...iRange(2)];
238
- deepStrictEqual(result, [0, 1, 2]);
239
- });
240
-
241
- test("3", () => {
242
- const result = [...iRange(3)];
243
- deepStrictEqual(result, [0, 1, 2, 3]);
244
- });
245
- });
246
-
247
- describe("1 arg negative", () => {
248
- test("-1", () => {
249
- const result = [...iRange(-1)];
250
- deepStrictEqual(result, []);
251
- });
252
- });
253
-
254
- describe("2 args same", () => {
255
- test("0, 0", () => {
256
- const result = [...iRange(0, 0)];
257
- deepStrictEqual(result, [0]);
258
- });
259
-
260
- test("1, 1", () => {
261
- const result = [...iRange(1, 1)];
262
- deepStrictEqual(result, [1]);
263
- });
264
-
265
- test("2, 2", () => {
266
- const result = [...iRange(2, 2)];
267
- deepStrictEqual(result, [2]);
268
- });
269
-
270
- test("3, 3", () => {
271
- const result = [...iRange(3, 3)];
272
- deepStrictEqual(result, [3]);
273
- });
274
-
275
- test("-1, -1", () => {
276
- const result = [...iRange(-1, -1)];
277
- deepStrictEqual(result, [-1]);
278
- });
279
-
280
- test("-2, -2", () => {
281
- const result = [...iRange(-2, -2)];
282
- deepStrictEqual(result, [-2]);
283
- });
284
-
285
- test("-3, -3", () => {
286
- const result = [...iRange(-3, -3)];
287
- deepStrictEqual(result, [-3]);
288
- });
289
- });
290
-
291
- describe("2 args increasing", () => {
292
- test("0, 1", () => {
293
- const result = [...iRange(0, 1)];
294
- deepStrictEqual(result, [0, 1]);
295
- });
296
-
297
- test("0, 2", () => {
298
- const result = [...iRange(0, 2)];
299
- deepStrictEqual(result, [0, 1, 2]);
300
- });
301
-
302
- test("0, 3", () => {
303
- const result = [...iRange(0, 3)];
304
- deepStrictEqual(result, [0, 1, 2, 3]);
305
- });
306
-
307
- test("1, 2", () => {
308
- const result = [...iRange(1, 2)];
309
- deepStrictEqual(result, [1, 2]);
310
- });
311
-
312
- test("1, 3", () => {
313
- const result = [...iRange(1, 3)];
314
- deepStrictEqual(result, [1, 2, 3]);
315
- });
316
-
317
- test("1, 4", () => {
318
- const result = [...iRange(1, 4)];
319
- deepStrictEqual(result, [1, 2, 3, 4]);
320
- });
321
-
322
- test("2, 3", () => {
323
- const result = [...iRange(2, 3)];
324
- deepStrictEqual(result, [2, 3]);
325
- });
326
-
327
- test("2, 4", () => {
328
- const result = [...iRange(2, 4)];
329
- deepStrictEqual(result, [2, 3, 4]);
330
- });
331
-
332
- test("2, 5", () => {
333
- const result = [...iRange(2, 5)];
334
- deepStrictEqual(result, [2, 3, 4, 5]);
335
- });
336
-
337
- test("-3, -1", () => {
338
- const result = [...iRange(-3, -1)];
339
- deepStrictEqual(result, [-3, -2, -1]);
340
- });
341
-
342
- test("-3, 3", () => {
343
- const result = [...iRange(-3, 3)];
344
- deepStrictEqual(result, [-3, -2, -1, 0, 1, 2, 3]);
345
- });
346
- });
347
-
348
- describe("2 args decreasing", () => {
349
- test("1, 0", () => {
350
- const result = [...iRange(1, 0)];
351
- deepStrictEqual(result, []);
352
- });
353
-
354
- test("-1, -2", () => {
355
- const result = [...iRange(-1, -3)];
356
- deepStrictEqual(result, []);
357
- });
358
- });
359
- });
360
-
361
- describe("parseFloatSafe", () => {
362
- describe("non valid types", () => {
363
- test("undefined", () => {
364
- const result = parseFloatSafe(undefined as unknown as string);
365
- strictEqual(result, undefined);
366
- });
367
-
368
- test("null", () => {
369
- // eslint-disable-next-line unicorn/no-null
370
- const result = parseFloatSafe(null as unknown as string);
371
- strictEqual(result, undefined);
372
- });
373
-
374
- test("bigint", () => {
375
- const result = parseFloatSafe(1n as unknown as string);
376
- strictEqual(result, undefined);
377
- });
378
-
379
- test("false", () => {
380
- const result = parseFloatSafe(false as unknown as string);
381
- strictEqual(result, undefined);
382
- });
383
-
384
- test("true", () => {
385
- const result = parseFloatSafe(true as unknown as string);
386
- strictEqual(result, undefined);
387
- });
388
-
389
- test("function", () => {
390
- // eslint-disable-next-line @typescript-eslint/no-empty-function
391
- const result = parseFloatSafe((() => {}) as unknown as string);
392
- strictEqual(result, undefined);
393
- });
394
-
395
- test("number", () => {
396
- const result = parseFloatSafe(1 as unknown as string);
397
- strictEqual(result, undefined);
398
- });
399
-
400
- test("object", () => {
401
- const result = parseFloatSafe({} as string);
402
- strictEqual(result, undefined);
403
- });
404
-
405
- test("symbol", () => {
406
- const result = parseFloatSafe(Symbol("1") as unknown as string);
407
- strictEqual(result, undefined);
408
- });
409
- });
410
-
411
- describe("spaces", () => {
412
- test("space", () => {
413
- const result = parseFloatSafe(" ");
414
- strictEqual(result, undefined);
415
- });
416
-
417
- test("space + 1", () => {
418
- const result = parseFloatSafe(" 1");
419
- strictEqual(result, 1);
420
- });
421
-
422
- test("1 + space", () => {
423
- const result = parseFloatSafe("1 ");
424
- strictEqual(result, 1);
425
- });
426
-
427
- test("space + 1 + space", () => {
428
- const result = parseFloatSafe(" 1 ");
429
- strictEqual(result, 1);
430
- });
431
-
432
- test("space + -1", () => {
433
- const result = parseFloatSafe(" -1");
434
- strictEqual(result, -1);
435
- });
436
-
437
- test("-1 + space", () => {
438
- const result = parseFloatSafe("-1 ");
439
- strictEqual(result, -1);
440
- });
441
-
442
- test("space + -1 + space", () => {
443
- const result = parseFloatSafe(" -1 ");
444
- strictEqual(result, -1);
445
- });
446
-
447
- test("space + 1.0", () => {
448
- const result = parseFloatSafe(" 1.0");
449
- strictEqual(result, 1);
450
- });
451
-
452
- test("1.0 + space", () => {
453
- const result = parseFloatSafe("1.0 ");
454
- strictEqual(result, 1);
455
- });
456
-
457
- test("space + 1.0 + space", () => {
458
- const result = parseFloatSafe(" 1.0 ");
459
- strictEqual(result, 1);
460
- });
461
-
462
- test("space + -1.0", () => {
463
- const result = parseFloatSafe(" -1.0");
464
- strictEqual(result, -1);
465
- });
466
-
467
- test("-1.0 + space", () => {
468
- const result = parseFloatSafe("-1.0 ");
469
- strictEqual(result, -1);
470
- });
471
-
472
- test("space + -1.0 + space", () => {
473
- const result = parseFloatSafe(" -1.0 ");
474
- strictEqual(result, -1);
475
- });
476
- });
477
-
478
- describe("tabs", () => {
479
- test("tab", () => {
480
- const result = parseFloatSafe(" ");
481
- strictEqual(result, undefined);
482
- });
483
-
484
- test("tab + 1", () => {
485
- const result = parseFloatSafe(" 1");
486
- strictEqual(result, 1);
487
- });
488
-
489
- test("1 + tab", () => {
490
- const result = parseFloatSafe("1 ");
491
- strictEqual(result, 1);
492
- });
493
-
494
- test("tab + 1 + tab", () => {
495
- const result = parseFloatSafe(" 1 ");
496
- strictEqual(result, 1);
497
- });
498
-
499
- test("tab + -1", () => {
500
- const result = parseFloatSafe(" -1");
501
- strictEqual(result, -1);
502
- });
503
-
504
- test("-1 + tab", () => {
505
- const result = parseFloatSafe("-1 ");
506
- strictEqual(result, -1);
507
- });
508
-
509
- test("tab + -1 + tab", () => {
510
- const result = parseFloatSafe(" -1 ");
511
- strictEqual(result, -1);
512
- });
513
-
514
- test("tab + 1.0", () => {
515
- const result = parseFloatSafe(" 1.0");
516
- strictEqual(result, 1);
517
- });
518
-
519
- test("1.0 + tab", () => {
520
- const result = parseFloatSafe("1.0 ");
521
- strictEqual(result, 1);
522
- });
523
-
524
- test("tab + 1.0 + tab", () => {
525
- const result = parseFloatSafe(" 1.0 ");
526
- strictEqual(result, 1);
527
- });
528
-
529
- test("tab + -1.0", () => {
530
- const result = parseFloatSafe(" -1.0");
531
- strictEqual(result, -1);
532
- });
533
-
534
- test("-1.0 + tab", () => {
535
- const result = parseFloatSafe("-1.0 ");
536
- strictEqual(result, -1);
537
- });
538
-
539
- test("tab + -1.0 + tab", () => {
540
- const result = parseFloatSafe(" -1.0 ");
541
- strictEqual(result, -1);
542
- });
543
- });
544
-
545
- describe("invalid input", () => {
546
- test("empty string", () => {
547
- const result = parseFloatSafe("");
548
- strictEqual(result, undefined);
549
- });
550
-
551
- test(".", () => {
552
- const result = parseFloatSafe(".");
553
- strictEqual(result, undefined);
554
- });
555
-
556
- test("1.", () => {
557
- const result = parseFloatSafe("1.");
558
- strictEqual(result, undefined);
559
- });
560
-
561
- test("-", () => {
562
- const result = parseFloatSafe("-");
563
- strictEqual(result, undefined);
564
- });
565
-
566
- test("1-", () => {
567
- const result = parseFloatSafe("1-");
568
- strictEqual(result, undefined);
569
- });
570
-
571
- test("- 1", () => {
572
- const result = parseFloatSafe("- 1");
573
- strictEqual(result, undefined);
574
- });
575
-
576
- test("--", () => {
577
- const result = parseFloatSafe("--");
578
- strictEqual(result, undefined);
579
- });
580
-
581
- test("--1", () => {
582
- const result = parseFloatSafe("--1");
583
- strictEqual(result, undefined);
584
- });
585
-
586
- test("1--", () => {
587
- const result = parseFloatSafe("--1");
588
- strictEqual(result, undefined);
589
- });
590
-
591
- test("-- 1", () => {
592
- const result = parseFloatSafe("-- 1");
593
- strictEqual(result, undefined);
594
- });
595
- });
596
-
597
- describe("normal integers", () => {
598
- test("1", () => {
599
- const result = parseFloatSafe("1");
600
- strictEqual(result, 1);
601
- });
602
-
603
- test("-1", () => {
604
- const result = parseFloatSafe("-1");
605
- strictEqual(result, -1);
606
- });
607
-
608
- test("10", () => {
609
- const result = parseFloatSafe("10");
610
- strictEqual(result, 10);
611
- });
612
-
613
- test("-10", () => {
614
- const result = parseFloatSafe("-10");
615
- strictEqual(result, -10);
616
- });
617
-
618
- test("01", () => {
619
- const result = parseFloatSafe("01");
620
- strictEqual(result, 1);
621
- });
622
-
623
- test("-01", () => {
624
- const result = parseFloatSafe("-01");
625
- strictEqual(result, -1);
626
- });
627
- });
628
-
629
- describe("normal floats", () => {
630
- test(".1", () => {
631
- const result = parseFloatSafe(".1");
632
- strictEqual(result, 0.1);
633
- });
634
-
635
- test("1.0", () => {
636
- const result = parseFloatSafe("1.0");
637
- strictEqual(result, 1);
638
- });
639
-
640
- test("1.1", () => {
641
- const result = parseFloatSafe("1.1");
642
- strictEqual(result, 1.1);
643
- });
644
-
645
- test("0.1", () => {
646
- const result = parseFloatSafe("0.1");
647
- strictEqual(result, 0.1);
648
- });
649
-
650
- test("10.0", () => {
651
- const result = parseFloatSafe("10.0");
652
- strictEqual(result, 10);
653
- });
654
-
655
- test("10.1", () => {
656
- const result = parseFloatSafe("10.1");
657
- strictEqual(result, 10.1);
658
- });
659
-
660
- test("-10.0", () => {
661
- const result = parseFloatSafe("-10.0");
662
- strictEqual(result, -10);
663
- });
664
-
665
- test("-10.1", () => {
666
- const result = parseFloatSafe("-10.1");
667
- strictEqual(result, -10.1);
668
- });
669
-
670
- test("01.0", () => {
671
- const result = parseFloatSafe("01.0");
672
- strictEqual(result, 1);
673
- });
674
-
675
- test("-01.0", () => {
676
- const result = parseFloatSafe("-01.0");
677
- strictEqual(result, -1);
678
- });
679
- });
680
- });
681
-
682
- describe("parseIntSafe", () => {
683
- describe("non valid types", () => {
684
- test("undefined", () => {
685
- const result = parseIntSafe(undefined as unknown as string);
686
- strictEqual(result, undefined);
687
- });
688
-
689
- test("null", () => {
690
- // eslint-disable-next-line unicorn/no-null
691
- const result = parseIntSafe(null as unknown as string);
692
- strictEqual(result, undefined);
693
- });
694
-
695
- test("bigint", () => {
696
- const result = parseIntSafe(1n as unknown as string);
697
- strictEqual(result, undefined);
698
- });
699
-
700
- test("false", () => {
701
- const result = parseIntSafe(false as unknown as string);
702
- strictEqual(result, undefined);
703
- });
704
-
705
- test("true", () => {
706
- const result = parseIntSafe(true as unknown as string);
707
- strictEqual(result, undefined);
708
- });
709
-
710
- test("function", () => {
711
- // eslint-disable-next-line @typescript-eslint/no-empty-function
712
- const result = parseIntSafe((() => {}) as unknown as string);
713
- strictEqual(result, undefined);
714
- });
715
-
716
- test("number", () => {
717
- const result = parseIntSafe(1 as unknown as string);
718
- strictEqual(result, undefined);
719
- });
720
-
721
- test("object", () => {
722
- const result = parseIntSafe({} as string);
723
- strictEqual(result, undefined);
724
- });
725
-
726
- test("symbol", () => {
727
- const result = parseIntSafe(Symbol("1") as unknown as string);
728
- strictEqual(result, undefined);
729
- });
730
- });
731
-
732
- describe("spaces", () => {
733
- test("space", () => {
734
- const result = parseIntSafe(" ");
735
- strictEqual(result, undefined);
736
- });
737
-
738
- test("space + 1", () => {
739
- const result = parseIntSafe(" 1");
740
- strictEqual(result, 1);
741
- });
742
-
743
- test("1 + space", () => {
744
- const result = parseIntSafe("1 ");
745
- strictEqual(result, 1);
746
- });
747
-
748
- test("space + 1 + space", () => {
749
- const result = parseIntSafe(" 1 ");
750
- strictEqual(result, 1);
751
- });
752
-
753
- test("space + -1", () => {
754
- const result = parseIntSafe(" -1");
755
- strictEqual(result, -1);
756
- });
757
-
758
- test("-1 + space", () => {
759
- const result = parseIntSafe("-1 ");
760
- strictEqual(result, -1);
761
- });
762
-
763
- test("space + -1 + space", () => {
764
- const result = parseIntSafe(" -1 ");
765
- strictEqual(result, -1);
766
- });
767
- });
768
-
769
- describe("tabs", () => {
770
- test("tab", () => {
771
- const result = parseIntSafe(" ");
772
- strictEqual(result, undefined);
773
- });
774
-
775
- test("tab + 1", () => {
776
- const result = parseIntSafe(" 1");
777
- strictEqual(result, 1);
778
- });
779
-
780
- test("1 + tab", () => {
781
- const result = parseIntSafe("1 ");
782
- strictEqual(result, 1);
783
- });
784
-
785
- test("tab + 1 + tab", () => {
786
- const result = parseIntSafe(" 1 ");
787
- strictEqual(result, 1);
788
- });
789
-
790
- test("tab + -1", () => {
791
- const result = parseIntSafe(" -1");
792
- strictEqual(result, -1);
793
- });
794
-
795
- test("-1 + tab", () => {
796
- const result = parseIntSafe("-1 ");
797
- strictEqual(result, -1);
798
- });
799
-
800
- test("tab + -1 + tab", () => {
801
- const result = parseIntSafe(" -1 ");
802
- strictEqual(result, -1);
803
- });
804
- });
805
-
806
- describe("invalid input", () => {
807
- test("empty string", () => {
808
- const result = parseIntSafe("");
809
- strictEqual(result, undefined);
810
- });
811
-
812
- test(".", () => {
813
- const result = parseIntSafe(".");
814
- strictEqual(result, undefined);
815
- });
816
-
817
- test(".1", () => {
818
- const result = parseIntSafe(".1");
819
- strictEqual(result, undefined);
820
- });
821
-
822
- test("1.", () => {
823
- const result = parseIntSafe("1.");
824
- strictEqual(result, undefined);
825
- });
826
-
827
- test("1.0", () => {
828
- const result = parseIntSafe("1.0");
829
- strictEqual(result, undefined);
830
- });
831
-
832
- test("0.1", () => {
833
- const result = parseIntSafe("0.1");
834
- strictEqual(result, undefined);
835
- });
836
-
837
- test("-", () => {
838
- const result = parseIntSafe("-");
839
- strictEqual(result, undefined);
840
- });
841
-
842
- test("1-", () => {
843
- const result = parseIntSafe("1-");
844
- strictEqual(result, undefined);
845
- });
846
-
847
- test("- 1", () => {
848
- const result = parseIntSafe("- 1");
849
- strictEqual(result, undefined);
850
- });
851
-
852
- test("--", () => {
853
- const result = parseIntSafe("--");
854
- strictEqual(result, undefined);
855
- });
856
-
857
- test("--1", () => {
858
- const result = parseIntSafe("--1");
859
- strictEqual(result, undefined);
860
- });
861
-
862
- test("1--", () => {
863
- const result = parseIntSafe("--1");
864
- strictEqual(result, undefined);
865
- });
866
-
867
- test("-- 1", () => {
868
- const result = parseIntSafe("-- 1");
869
- strictEqual(result, undefined);
870
- });
871
- });
872
-
873
- describe("normal", () => {
874
- test("1", () => {
875
- const result = parseIntSafe("1");
876
- strictEqual(result, 1);
877
- });
878
-
879
- test("-1", () => {
880
- const result = parseIntSafe("-1");
881
- strictEqual(result, -1);
882
- });
883
-
884
- test("10", () => {
885
- const result = parseIntSafe("10");
886
- strictEqual(result, 10);
887
- });
888
-
889
- test("-10", () => {
890
- const result = parseIntSafe("-10");
891
- strictEqual(result, -10);
892
- });
893
-
894
- test("01", () => {
895
- const result = parseIntSafe("01");
896
- strictEqual(result, 1);
897
- });
898
-
899
- test("-01", () => {
900
- const result = parseIntSafe("-01");
901
- strictEqual(result, -1);
902
- });
903
- });
904
- });