@rogolev/value 0.0.1 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (152) hide show
  1. package/.prettierignore +4 -4
  2. package/CHANGELOG.md +82 -56
  3. package/LICENSE +41 -41
  4. package/README.md +118 -91
  5. package/babel.config.json +20 -20
  6. package/docs/classes/Convert/toArray.md +100 -0
  7. package/docs/classes/Convert/toAssoc.md +90 -0
  8. package/docs/classes/Convert/toBool.md +72 -0
  9. package/docs/classes/Convert/toBoolean.md +72 -0
  10. package/docs/classes/Convert/toFloat.md +69 -0
  11. package/docs/classes/Convert/toInt.md +86 -0
  12. package/docs/classes/Convert/toInteger.md +86 -0
  13. package/docs/classes/Convert/toList.md +73 -0
  14. package/docs/classes/Convert/toObject.md +76 -0
  15. package/docs/classes/Convert/toString.md +125 -0
  16. package/docs/classes/Convert.md +44 -0
  17. package/docs/classes/Type/isArray.md +106 -0
  18. package/docs/classes/Type/isAssoc.md +57 -0
  19. package/docs/classes/Type/isBigInt.md +49 -0
  20. package/docs/classes/Type/isBool.md +51 -0
  21. package/docs/classes/Type/isBoolean.md +51 -0
  22. package/docs/classes/Type/isClass.md +60 -0
  23. package/docs/classes/Type/isEmpty.md +53 -0
  24. package/docs/classes/Type/isFloat.md +77 -0
  25. package/docs/classes/Type/isFunction.md +64 -0
  26. package/docs/classes/Type/isInfinity.md +59 -0
  27. package/docs/classes/Type/isInt.md +77 -0
  28. package/docs/classes/Type/isInteger.md +77 -0
  29. package/docs/classes/Type/isList.md +49 -0
  30. package/docs/classes/Type/isNaN.md +57 -0
  31. package/docs/classes/Type/isNull.md +49 -0
  32. package/docs/classes/Type/isNumber.md +60 -0
  33. package/docs/classes/Type/isNumeric.md +58 -0
  34. package/docs/classes/Type/isObject.md +53 -0
  35. package/docs/classes/Type/isScalar.md +54 -0
  36. package/docs/classes/Type/isString.md +54 -0
  37. package/docs/classes/Type/isSymbol.md +56 -0
  38. package/docs/classes/Type/isUndefined.md +52 -0
  39. package/docs/classes/Type.md +74 -0
  40. package/docs/classes/Value/constructor.md +48 -0
  41. package/docs/classes/Value/get.md +51 -0
  42. package/docs/classes/Value/getType.md +71 -0
  43. package/docs/classes/Value/isArray.md +67 -0
  44. package/docs/classes/Value/isAssoc.md +68 -0
  45. package/docs/classes/Value/isBigInt.md +52 -0
  46. package/docs/classes/Value/isBool.md +60 -0
  47. package/docs/classes/Value/isBoolean.md +60 -0
  48. package/docs/classes/Value/isClass.md +55 -0
  49. package/docs/classes/Value/isEmpty.md +84 -0
  50. package/docs/classes/Value/isFloat.md +52 -0
  51. package/docs/classes/Value/isFunction.md +60 -0
  52. package/docs/classes/Value/isInfinity.md +60 -0
  53. package/docs/classes/Value/isInt.md +52 -0
  54. package/docs/classes/Value/isInteger.md +52 -0
  55. package/docs/classes/Value/isList.md +59 -0
  56. package/docs/classes/Value/isNaN.md +79 -0
  57. package/docs/classes/Value/isNull.md +59 -0
  58. package/docs/classes/Value/isNumber.md +80 -0
  59. package/docs/classes/Value/isNumeric.md +79 -0
  60. package/docs/classes/Value/isObject.md +68 -0
  61. package/docs/classes/Value/isScalar.md +72 -0
  62. package/docs/classes/Value/isString.md +67 -0
  63. package/docs/classes/Value/isSymbol.md +75 -0
  64. package/docs/classes/Value/isUndefined.md +67 -0
  65. package/docs/classes/Value/print.md +164 -0
  66. package/docs/classes/Value/printType.md +158 -0
  67. package/docs/classes/Value/setType.md +79 -0
  68. package/docs/classes/Value/toArray.md +85 -0
  69. package/docs/classes/Value/toAssoc.md +85 -0
  70. package/docs/classes/Value/toBool.md +71 -0
  71. package/docs/classes/Value/toBoolean.md +71 -0
  72. package/docs/classes/Value/toFloat.md +72 -0
  73. package/docs/classes/Value/toInt.md +72 -0
  74. package/docs/classes/Value/toInteger.md +72 -0
  75. package/docs/classes/Value/toList.md +77 -0
  76. package/docs/classes/Value/toObject.md +78 -0
  77. package/docs/classes/Value/toPrint.md +115 -0
  78. package/docs/classes/Value/toPrintType.md +110 -0
  79. package/docs/classes/Value/toString.md +134 -0
  80. package/docs/classes/Value.md +113 -0
  81. package/docs/classes.md +11 -0
  82. package/docs/constants.md +47 -0
  83. package/docs/helpers/array.md +80 -80
  84. package/docs/helpers/empty.md +77 -77
  85. package/docs/helpers/gettype.md +69 -69
  86. package/docs/helpers/is_array.md +105 -105
  87. package/docs/helpers/is_assoc.md +59 -59
  88. package/docs/helpers/is_bigint.md +57 -57
  89. package/docs/helpers/is_bool.md +50 -50
  90. package/docs/helpers/is_boolean.md +50 -50
  91. package/docs/helpers/is_class.md +73 -73
  92. package/docs/helpers/is_float.md +71 -71
  93. package/docs/helpers/is_function.md +62 -62
  94. package/docs/helpers/is_infinity.md +61 -61
  95. package/docs/helpers/is_int.md +81 -81
  96. package/docs/helpers/is_integer.md +82 -82
  97. package/docs/helpers/is_list.md +51 -51
  98. package/docs/helpers/is_nan.md +59 -59
  99. package/docs/helpers/is_null.md +49 -49
  100. package/docs/helpers/is_number.md +67 -67
  101. package/docs/helpers/is_numeric.md +76 -76
  102. package/docs/helpers/is_object.md +69 -69
  103. package/docs/helpers/is_scalar.md +60 -60
  104. package/docs/helpers/is_string.md +58 -58
  105. package/docs/helpers/is_symbol.md +58 -58
  106. package/docs/helpers/is_undefined.md +56 -56
  107. package/docs/helpers/print.md +187 -187
  108. package/docs/helpers/print_type.md +225 -225
  109. package/docs/helpers/settype.md +78 -78
  110. package/docs/helpers/to_array.md +106 -106
  111. package/docs/helpers/to_assoc.md +91 -91
  112. package/docs/helpers/to_bool.md +76 -76
  113. package/docs/helpers/to_boolean.md +77 -77
  114. package/docs/helpers/to_float.md +70 -70
  115. package/docs/helpers/to_int.md +87 -87
  116. package/docs/helpers/to_integer.md +87 -87
  117. package/docs/helpers/to_list.md +47 -47
  118. package/docs/helpers/to_object.md +76 -76
  119. package/docs/helpers/to_string.md +134 -134
  120. package/docs/helpers/value.md +95 -0
  121. package/docs/helpers.md +53 -51
  122. package/docs/types/NaN.md +30 -30
  123. package/docs/types/array.md +252 -252
  124. package/docs/types/bigint.md +34 -34
  125. package/docs/types/boolean.md +47 -47
  126. package/docs/types/class.md +36 -36
  127. package/docs/types/float.md +35 -35
  128. package/docs/types/function.md +121 -121
  129. package/docs/types/infinity.md +32 -32
  130. package/docs/types/integer.md +35 -35
  131. package/docs/types/null.md +23 -23
  132. package/docs/types/object.md +62 -62
  133. package/docs/types/string.md +33 -33
  134. package/docs/types/symbol.md +29 -29
  135. package/docs/types/undefined.md +25 -25
  136. package/docs/types.md +44 -44
  137. package/eslint.config.mjs +1664 -1664
  138. package/index.mjs +43 -37
  139. package/jest.config.mjs +31 -31
  140. package/package.json +48 -47
  141. package/prettier.config.mjs +224 -224
  142. package/src/classes/Convert.mjs +818 -0
  143. package/src/classes/Type.mjs +1284 -0
  144. package/src/classes/Value.mjs +2846 -0
  145. package/src/constants.mjs +14 -0
  146. package/src/helpers/gettype.mjs +30 -14
  147. package/src/helpers/value.mjs +92 -0
  148. package/tests/classes/Convert.test.mjs +398 -0
  149. package/tests/classes/Type.test.mjs +1262 -0
  150. package/tests/classes/Value.test.mjs +423 -0
  151. package/tests/constants.test.mjs +75 -0
  152. package/tests/helpers/value.test.mjs +68 -0
@@ -0,0 +1,1262 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { Type } from '../../index.mjs';
3
+
4
+ describe('Класс Type', () => {
5
+ describe('Метод Type.isEmpty', () => {
6
+ test('Должен возвращать true для пустых значений', () => {
7
+ expect(Type.isEmpty(null)).toBe(true);
8
+ expect(Type.isEmpty(undefined)).toBe(true);
9
+ expect(Type.isEmpty('')).toBe(true);
10
+ expect(Type.isEmpty(0)).toBe(true);
11
+ expect(Type.isEmpty(false)).toBe(true);
12
+ expect(Type.isEmpty([])).toBe(true);
13
+ expect(Type.isEmpty({})).toBe(true);
14
+ });
15
+
16
+ test('Должен возвращать false для непустых значений', () => {
17
+ expect(Type.isEmpty('example')).toBe(false);
18
+ expect(Type.isEmpty(123)).toBe(false);
19
+ expect(Type.isEmpty(true)).toBe(false);
20
+ expect(Type.isEmpty([1, 2, 3])).toBe(false);
21
+ expect(Type.isEmpty({ key: 'value' })).toBe(false);
22
+ });
23
+ });
24
+
25
+ describe('Метод Type.isArray', () => {
26
+ describe('Примитивные значения и базовые типы', () => {
27
+ test('false не является массивом', () => {
28
+ expect(Type.isArray(false)).toBeFalsy();
29
+ });
30
+
31
+ test('true не является массивом', () => {
32
+ expect(Type.isArray(true)).toBeFalsy();
33
+ });
34
+
35
+ test('Число 3 не является массивом', () => {
36
+ expect(Type.isArray(3)).toBeFalsy();
37
+ });
38
+
39
+ test('Число 3.14 не является массивом', () => {
40
+ expect(Type.isArray(3.14)).toBeFalsy();
41
+ });
42
+
43
+ test('Строка "string" не является массивом', () => {
44
+ expect(Type.isArray('string')).toBeFalsy();
45
+ });
46
+
47
+ test('null не является массивом', () => {
48
+ expect(Type.isArray(null)).toBeFalsy();
49
+ });
50
+
51
+ test('undefined не является массивом', () => {
52
+ expect(Type.isArray(undefined)).toBeFalsy();
53
+ });
54
+
55
+ test('NaN не является массивом', () => {
56
+ expect(Type.isArray(NaN)).toBeFalsy();
57
+ });
58
+
59
+ test('Symbol не является массивом', () => {
60
+ expect(Type.isArray(Symbol())).toBeFalsy();
61
+ });
62
+ });
63
+
64
+ describe('Массивы и объекты', () => {
65
+ test('Обычный массив [1, 2] является массивом', () => {
66
+ expect(Type.isArray([1, 2])).toBeTruthy();
67
+ });
68
+
69
+ test('Объект с парами ключ-значение {0: 1, 1: 2} является ассоциативным массивом', () => {
70
+ expect(Type.isArray({ 0: 1, 1: 2 })).toBeTruthy();
71
+ });
72
+
73
+ test('Объект {foo: "bar"} является ассоциативным массивом', () => {
74
+ expect(Type.isArray({ foo: 'bar' })).toBeTruthy();
75
+ });
76
+
77
+ test('Объект, созданный через Object.create(null), является ассоциативным массивом', () => {
78
+ const noProtoObject = Object.create(null);
79
+ noProtoObject.foo = 'bar';
80
+ expect(Type.isArray(noProtoObject)).toBeTruthy();
81
+ });
82
+
83
+ test('Proxy является массивом', () => {
84
+ const handler = {};
85
+ const proxy = new Proxy([1, 2, 3], handler); // Проксируем массив
86
+ expect(Type.isArray(proxy)).toBeTruthy();
87
+ });
88
+ });
89
+
90
+ describe('Не массивы', () => {
91
+ describe('Классы', () => {
92
+ test('Экземпляр класса stdClass не является массивом', () => {
93
+ class stdClass {}
94
+ expect(Type.isArray(new stdClass())).toBeFalsy();
95
+ });
96
+
97
+ test('Класс stdClass сам по себе не является массивом', () => {
98
+ class stdClass {}
99
+ expect(Type.isArray(stdClass)).toBeFalsy();
100
+ });
101
+ });
102
+
103
+ describe('Глобальные объекты', () => {
104
+ // Массив глобальных объектов, которые не являются массивами
105
+ const globalObjects = [Object, Function, Boolean];
106
+
107
+ globalObjects.forEach((globalObj) => {
108
+ test(`${globalObj.name} не является массивом`, () => {
109
+ expect(Type.isArray(globalObj)).toBeFalsy();
110
+ });
111
+ });
112
+
113
+ test('Symbol не является массивом', () => {
114
+ expect(Type.isArray(Symbol)).toBeFalsy();
115
+ });
116
+ });
117
+
118
+ describe('Обработка текста', () => {
119
+ test('String не является массивом', () => {
120
+ expect(Type.isArray(String)).toBeFalsy();
121
+ });
122
+
123
+ test('RegExp не является массивом', () => {
124
+ expect(Type.isArray(RegExp)).toBeFalsy();
125
+ expect(Type.isArray(/abc/)).toBeFalsy();
126
+ });
127
+ });
128
+
129
+ describe('Числа и даты', () => {
130
+ test('Number не является массивом', () => {
131
+ expect(Type.isArray(Number)).toBeFalsy();
132
+ });
133
+
134
+ test('BigInt не является массивом', () => {
135
+ expect(Type.isArray(BigInt)).toBeFalsy();
136
+ expect(Type.isArray(123n)).toBeFalsy();
137
+ });
138
+
139
+ test('Math не является массивом', () => {
140
+ expect(Type.isArray(Math)).toBeFalsy();
141
+ });
142
+
143
+ test('Date не является массивом', () => {
144
+ expect(Type.isArray(Date)).toBeFalsy();
145
+ expect(Type.isArray(new Date())).toBeFalsy();
146
+ });
147
+ });
148
+
149
+ describe('Структурированные данные', () => {
150
+ test('Array не является массивом', () => {
151
+ expect(Type.isArray(Array)).toBeFalsy();
152
+ });
153
+
154
+ test('Экземпляр Map не является массивом', () => {
155
+ expect(Type.isArray(Map)).toBeFalsy();
156
+ expect(Type.isArray(new Map())).toBeFalsy();
157
+ });
158
+
159
+ test('Экземпляр Set не является массивом', () => {
160
+ expect(Type.isArray(Set)).toBeFalsy();
161
+ expect(Type.isArray(new Set())).toBeFalsy();
162
+ });
163
+
164
+ test('WeakMap не является массивом', () => {
165
+ expect(Type.isArray(WeakMap)).toBeFalsy();
166
+ expect(Type.isArray(new WeakMap())).toBeFalsy();
167
+ });
168
+
169
+ test('WeakSet не является массивом', () => {
170
+ expect(Type.isArray(WeakSet)).toBeFalsy();
171
+ expect(Type.isArray(new WeakSet())).toBeFalsy();
172
+ });
173
+
174
+ test('ArrayBuffer не является массивом', () => {
175
+ expect(Type.isArray(ArrayBuffer)).toBeFalsy();
176
+ expect(Type.isArray(new ArrayBuffer(8))).toBeFalsy();
177
+ });
178
+
179
+ test('SharedArrayBuffer не является массивом', () => {
180
+ expect(Type.isArray(SharedArrayBuffer)).toBeFalsy();
181
+ expect(Type.isArray(new SharedArrayBuffer(8))).toBeFalsy();
182
+ });
183
+
184
+ test('DataView не является массивом', () => {
185
+ expect(Type.isArray(DataView)).toBeFalsy();
186
+ expect(Type.isArray(new DataView(new ArrayBuffer(8)))).toBeFalsy();
187
+ });
188
+
189
+ test('Typed Arrays не являются массивами', () => {
190
+ const typedArrays = [
191
+ Int8Array,
192
+ Uint8Array,
193
+ Uint8ClampedArray,
194
+ Int16Array,
195
+ Uint16Array,
196
+ Int32Array,
197
+ Uint32Array,
198
+ Float32Array,
199
+ Float64Array,
200
+ BigInt64Array,
201
+ BigUint64Array,
202
+ ];
203
+ typedArrays.forEach((ArrayType) => {
204
+ expect(Type.isArray(ArrayType)).toBeFalsy();
205
+ expect(Type.isArray(new ArrayType(8))).toBeFalsy();
206
+ });
207
+ });
208
+ });
209
+
210
+ describe('Объекты абстракции управления', () => {
211
+ test('Promise не является массивом', () => {
212
+ expect(Type.isArray(new Promise(() => {}))).toBeFalsy();
213
+ });
214
+
215
+ test('Generator не является массивом', () => {
216
+ function* gen() {}
217
+ expect(Type.isArray(gen())).toBeFalsy();
218
+ });
219
+
220
+ test('GeneratorFunction не является массивом', () => {
221
+ function* gen() {}
222
+ expect(Type.isArray(gen.constructor)).toBeFalsy();
223
+ });
224
+
225
+ test('AsyncFunction не является массивом', () => {
226
+ async function func() {}
227
+ expect(Type.isArray(func)).toBeFalsy();
228
+ });
229
+
230
+ test('AsyncGenerator не является массивом', () => {
231
+ async function* gen() {}
232
+ expect(Type.isArray(gen())).toBeFalsy();
233
+ });
234
+
235
+ test('AsyncGeneratorFunction не является массивом', () => {
236
+ async function* gen() {}
237
+ expect(Type.isArray(gen.constructor)).toBeFalsy();
238
+ });
239
+ });
240
+
241
+ describe('Отражение', () => {
242
+ test('Reflect не является массивом', () => {
243
+ expect(Type.isArray(Reflect)).toBeFalsy();
244
+ });
245
+ });
246
+
247
+ describe('Интернационализация', () => {
248
+ test('Intl не является массивом', () => {
249
+ expect(Type.isArray(Intl)).toBeFalsy();
250
+ });
251
+ });
252
+
253
+ describe('Обработка ошибок', () => {
254
+ const errorTypes = [
255
+ Error,
256
+ EvalError,
257
+ RangeError,
258
+ ReferenceError,
259
+ SyntaxError,
260
+ TypeError,
261
+ URIError,
262
+ ];
263
+
264
+ // Тестируем все ошибки из списка
265
+ errorTypes.forEach((errorType) => {
266
+ test(`${errorType.name} не является массивом`, () => {
267
+ expect(Type.isArray(errorType)).toBeFalsy();
268
+ });
269
+ });
270
+ });
271
+
272
+ describe('Веб-API (объекты, зависящие от браузера)', () => {
273
+ test('Window не является массивом', () => {
274
+ expect(Type.isArray(Window)).toBeFalsy();
275
+ });
276
+
277
+ test('document не является массивом', () => {
278
+ expect(Type.isArray(document)).toBeFalsy();
279
+ });
280
+
281
+ test('navigator не является массивом', () => {
282
+ expect(Type.isArray(navigator)).toBeFalsy();
283
+ });
284
+
285
+ test('location не является массивом', () => {
286
+ expect(Type.isArray(location)).toBeFalsy();
287
+ });
288
+
289
+ test('Function не является массивом', () => {
290
+ expect(Type.isArray(Function)).toBeFalsy();
291
+ });
292
+
293
+ test('screen не является массивом', () => {
294
+ expect(Type.isArray(screen)).toBeFalsy();
295
+ });
296
+
297
+ test('history не является массивом', () => {
298
+ expect(Type.isArray(history)).toBeFalsy();
299
+ });
300
+
301
+ test('localStorage не является массивом', () => {
302
+ expect(Type.isArray(localStorage)).toBeFalsy();
303
+ });
304
+
305
+ test('Function не является массивом', () => {
306
+ expect(Type.isArray(Function)).toBeFalsy();
307
+ });
308
+
309
+ test('sessionStorage не является массивом', () => {
310
+ expect(Type.isArray(sessionStorage)).toBeFalsy();
311
+ });
312
+
313
+ test('XMLHttpRequest не является массивом', () => {
314
+ expect(Type.isArray(XMLHttpRequest)).toBeFalsy();
315
+ });
316
+
317
+ test('WebSocket не является массивом', () => {
318
+ expect(Type.isArray(WebSocket)).toBeFalsy();
319
+ expect(Type.isArray(new WebSocket('ws://localhost'))).toBeFalsy();
320
+ });
321
+
322
+ test('Event не является массивом', () => {
323
+ expect(Type.isArray(Event)).toBeFalsy();
324
+ expect(Type.isArray(new Event('click'))).toBeFalsy();
325
+ });
326
+
327
+ test('CustomEvent не является массивом', () => {
328
+ expect(Type.isArray(CustomEvent)).toBeFalsy();
329
+ expect(Type.isArray(new CustomEvent('test'))).toBeFalsy();
330
+ });
331
+
332
+ test('AbortController не является массивом', () => {
333
+ expect(Type.isArray(AbortController)).toBeFalsy();
334
+ expect(Type.isArray(new AbortController())).toBeFalsy();
335
+ });
336
+
337
+ test('FormData не является массивом', () => {
338
+ expect(Type.isArray(FormData)).toBeFalsy();
339
+ });
340
+
341
+ test('Blob не является массивом', () => {
342
+ expect(Type.isArray(Blob)).toBeFalsy();
343
+ expect(Type.isArray(new Blob([]))).toBeFalsy();
344
+ });
345
+
346
+ test('File не является массивом', () => {
347
+ expect(Type.isArray(File)).toBeFalsy();
348
+ expect(Type.isArray(new File([], 'test.txt'))).toBeFalsy();
349
+ });
350
+
351
+ test('FileReader не является массивом', () => {
352
+ expect(Type.isArray(FileReader)).toBeFalsy();
353
+ expect(Type.isArray(new FileReader())).toBeFalsy();
354
+ });
355
+
356
+ test('Performance не является массивом', () => {
357
+ expect(Type.isArray(Performance)).toBeFalsy();
358
+ });
359
+ });
360
+
361
+ describe('Веб-хранилище и сетевое взаимодействие', () => {
362
+ test('URL не является массивом', () => {
363
+ expect(Type.isArray(URL)).toBeFalsy();
364
+ });
365
+
366
+ test('URLSearchParams не является массивом', () => {
367
+ expect(Type.isArray(URLSearchParams)).toBeFalsy();
368
+ });
369
+
370
+ test('Location не является массивом', () => {
371
+ expect(Type.isArray(Location)).toBeFalsy();
372
+ });
373
+
374
+ test('Cookies не является массивом', () => {
375
+ expect(Type.isArray(document.cookie)).toBeFalsy();
376
+ });
377
+
378
+ test('IndexedDB не является массивом', () => {
379
+ expect(Type.isArray(window.indexedDB)).toBeFalsy();
380
+ });
381
+ });
382
+
383
+ describe('Другие', () => {
384
+ test('JSON не является массивом', () => {
385
+ expect(Type.isArray(JSON)).toBeFalsy();
386
+ });
387
+
388
+ test('Math не является массивом', () => {
389
+ expect(Type.isArray(Math)).toBeFalsy();
390
+ });
391
+
392
+ test('console не является массивом', () => {
393
+ expect(Type.isArray(console)).toBeFalsy();
394
+ });
395
+
396
+ test('setTimeout не является массивом', () => {
397
+ expect(Type.isArray(setTimeout)).toBeFalsy();
398
+ });
399
+
400
+ test('clearTimeout не является массивом', () => {
401
+ expect(Type.isArray(clearTimeout)).toBeFalsy();
402
+ });
403
+
404
+ test('setInterval не является массивом', () => {
405
+ expect(Type.isArray(setInterval)).toBeFalsy();
406
+ });
407
+
408
+ test('clearInterval не является массивом', () => {
409
+ expect(Type.isArray(clearInterval)).toBeFalsy();
410
+ });
411
+
412
+ test('setImmediate не является массивом', () => {
413
+ expect(Type.isArray(setImmediate)).toBeFalsy();
414
+ });
415
+
416
+ test('clearImmediate не является массивом', () => {
417
+ expect(Type.isArray(clearImmediate)).toBeFalsy();
418
+ });
419
+
420
+ test('process не является массивом', () => {
421
+ expect(Type.isArray(process)).toBeFalsy();
422
+ });
423
+ });
424
+ });
425
+ });
426
+
427
+ describe('Метод Type.isAssoc', () => {
428
+ test('должен возвращать true для ассоциативных массивов', () => {
429
+ expect(Type.isAssoc({ foo: 'bar' })).toBe(true);
430
+ expect(Type.isAssoc({})).toBe(true);
431
+ });
432
+
433
+ test('должен возвращать false для обычных массивов', () => {
434
+ expect(Type.isAssoc([])).toBe(false);
435
+ expect(Type.isAssoc([1, 2, 3])).toBe(false);
436
+ });
437
+
438
+ test('должен возвращать false для строк', () => {
439
+ expect(Type.isAssoc('string')).toBe(false);
440
+ });
441
+
442
+ test('должен возвращать false для чисел', () => {
443
+ expect(Type.isAssoc(42)).toBe(false);
444
+ });
445
+
446
+ test('должен возвращать false для null и undefined', () => {
447
+ expect(Type.isAssoc(null)).toBe(false);
448
+ expect(Type.isAssoc(undefined)).toBe(false);
449
+ });
450
+
451
+ test('должен возвращать false для логических значений', () => {
452
+ expect(Type.isAssoc(true)).toBe(false);
453
+ expect(Type.isAssoc(false)).toBe(false);
454
+ });
455
+
456
+ test('должен возвращать false для функций', () => {
457
+ function func() {}
458
+ expect(Type.isAssoc(func)).toBe(false);
459
+ expect(Type.isAssoc(() => {})).toBe(false);
460
+ });
461
+
462
+ test('должен возвращать false для символов', () => {
463
+ expect(Type.isAssoc(Symbol('symbol'))).toBe(false);
464
+ });
465
+ });
466
+
467
+ describe('Метод Type.isBigInt', () => {
468
+ test('должен возвращать true для значений типа bigint', () => {
469
+ expect(Type.isBigInt(BigInt(123456))).toBe(true);
470
+ expect(Type.isBigInt(BigInt(-123456))).toBe(true);
471
+ });
472
+
473
+ test('должен возвращать false для чисел', () => {
474
+ expect(Type.isBigInt(42)).toBe(false);
475
+ expect(Type.isBigInt(-42)).toBe(false);
476
+ expect(Type.isBigInt(0)).toBe(false);
477
+ expect(Type.isBigInt(3.14)).toBe(false);
478
+ expect(Type.isBigInt(-0.99)).toBe(false);
479
+ });
480
+
481
+ test('должен возвращать false для специальных чисел', () => {
482
+ expect(Type.isBigInt(NaN)).toBe(false);
483
+ expect(Type.isBigInt(Infinity)).toBe(false);
484
+ expect(Type.isBigInt(-Infinity)).toBe(false);
485
+ });
486
+
487
+ test('должен возвращать false для строк', () => {
488
+ expect(Type.isBigInt('42')).toBe(false);
489
+ expect(Type.isBigInt('3.14')).toBe(false);
490
+ expect(Type.isBigInt('')).toBe(false);
491
+ });
492
+
493
+ test('должен возвращать false для логических значений', () => {
494
+ expect(Type.isBigInt(true)).toBe(false);
495
+ expect(Type.isBigInt(false)).toBe(false);
496
+ });
497
+
498
+ test('должен возвращать false для null и undefined', () => {
499
+ expect(Type.isBigInt(null)).toBe(false);
500
+ expect(Type.isBigInt(undefined)).toBe(false);
501
+ });
502
+
503
+ test('должен возвращать false для объектов и массивов', () => {
504
+ expect(Type.isBigInt({})).toBe(false);
505
+ expect(Type.isBigInt([])).toBe(false);
506
+ expect(Type.isBigInt({ foo: 42 })).toBe(false);
507
+ expect(Type.isBigInt([1, 2, 3])).toBe(false);
508
+ });
509
+
510
+ test('должен возвращать false для функций', () => {
511
+ expect(Type.isBigInt(() => {})).toBe(false);
512
+ expect(Type.isBigInt(() => {})).toBe(false);
513
+ });
514
+ });
515
+
516
+ describe('Метод Type.isBool', () => {
517
+ test('должен возвращать true для значения true', () => {
518
+ expect(Type.isBool(true)).toBe(true);
519
+ });
520
+
521
+ test('должен возвращать true для значения false', () => {
522
+ expect(Type.isBool(false)).toBe(true);
523
+ });
524
+
525
+ test('должен возвращать false для значения числа', () => {
526
+ expect(Type.isBool(0)).toBe(false);
527
+ expect(Type.isBool(1)).toBe(false);
528
+ });
529
+
530
+ test('должен возвращать false для строки', () => {
531
+ expect(Type.isBool('true')).toBe(false);
532
+ expect(Type.isBool('false')).toBe(false);
533
+ });
534
+
535
+ test('должен возвращать false для объекта', () => {
536
+ expect(Type.isBool({})).toBe(false);
537
+ expect(Type.isBool([])).toBe(false);
538
+ });
539
+
540
+ test('должен возвращать false для null', () => {
541
+ expect(Type.isBool(null)).toBe(false);
542
+ });
543
+
544
+ test('должен возвращать false для undefined', () => {
545
+ expect(Type.isBool(undefined)).toBe(false);
546
+ });
547
+
548
+ test('должен возвращать false для функции', () => {
549
+ expect(Type.isBool(() => {})).toBe(false);
550
+ });
551
+
552
+ test('должен возвращать false для объекта Boolean', () => {
553
+ expect(Type.isBool(new Boolean(true))).toBe(false);
554
+ });
555
+ });
556
+
557
+ describe('Метод Type.isBoolean', () => {
558
+ test('должен возвращать true для значения true', () => {
559
+ expect(Type.isBoolean(true)).toBe(true);
560
+ });
561
+
562
+ test('должен возвращать true для значения false', () => {
563
+ expect(Type.isBoolean(false)).toBe(true);
564
+ });
565
+
566
+ test('должен возвращать false для значения числа', () => {
567
+ expect(Type.isBoolean(0)).toBe(false);
568
+ expect(Type.isBoolean(1)).toBe(false);
569
+ });
570
+
571
+ test('должен возвращать false для строки', () => {
572
+ expect(Type.isBoolean('true')).toBe(false);
573
+ expect(Type.isBoolean('false')).toBe(false);
574
+ });
575
+
576
+ test('должен возвращать false для объекта', () => {
577
+ expect(Type.isBoolean({})).toBe(false);
578
+ expect(Type.isBoolean([])).toBe(false);
579
+ });
580
+
581
+ test('должен возвращать false для null', () => {
582
+ expect(Type.isBoolean(null)).toBe(false);
583
+ });
584
+
585
+ test('должен возвращать false для undefined', () => {
586
+ expect(Type.isBoolean(undefined)).toBe(false);
587
+ });
588
+
589
+ test('должен возвращать false для функции', () => {
590
+ expect(Type.isBoolean(() => {})).toBe(false);
591
+ });
592
+
593
+ test('должен возвращать false для объекта Boolean', () => {
594
+ expect(Type.isBoolean(new Boolean(true))).toBe(false);
595
+ });
596
+ });
597
+
598
+ describe('Метод Type.isClass', () => {
599
+ test('должен возвращать true для класса', () => {
600
+ class MyClass {}
601
+ expect(Type.isClass(MyClass)).toBe(true);
602
+ });
603
+
604
+ test('должен возвращать false для функции-конструктора', () => {
605
+ function MyFunction() {}
606
+ expect(Type.isClass(MyFunction)).toBe(false);
607
+ });
608
+
609
+ test('должен возвращать false для объектов', () => {
610
+ expect(Type.isClass({})).toBe(false);
611
+ });
612
+
613
+ test('должен возвращать false для массивов', () => {
614
+ expect(Type.isClass([])).toBe(false);
615
+ });
616
+
617
+ test('должен возвращать false для null', () => {
618
+ expect(Type.isClass(null)).toBe(false);
619
+ });
620
+
621
+ test('должен возвращать false для чисел', () => {
622
+ expect(Type.isClass(42)).toBe(false);
623
+ });
624
+
625
+ test('должен возвращать false для строк', () => {
626
+ expect(Type.isClass('hello')).toBe(false);
627
+ });
628
+
629
+ test('должен возвращать false для булевых значений', () => {
630
+ expect(Type.isClass(true)).toBe(false);
631
+ });
632
+
633
+ test('должен возвращать false для встроенных объектов, таких как Map', () => {
634
+ expect(Type.isClass(new Map())).toBe(false);
635
+ });
636
+
637
+ test('должен возвращать false для встроенных объектов, таких как Date', () => {
638
+ expect(Type.isClass(new Date())).toBe(false);
639
+ });
640
+
641
+ test('должен возвращать false для объекта, созданного через Object.create(null)', () => {
642
+ const noProtoObject = Object.create(null);
643
+ noProtoObject.foo = 'bar';
644
+ expect(Type.isClass(noProtoObject)).toBe(false);
645
+ });
646
+
647
+ test('должен возвращать false для стрелочных функций', () => {
648
+ expect(Type.isClass(() => {})).toBe(false);
649
+ });
650
+
651
+ test('должен возвращать false для async функций', () => {
652
+ async function asyncFunc() {}
653
+ expect(Type.isClass(asyncFunc)).toBe(false);
654
+ });
655
+
656
+ test('должен возвращать false для генераторов', () => {
657
+ function* generatorFunc() {}
658
+ expect(Type.isClass(generatorFunc)).toBe(false);
659
+ });
660
+
661
+ test('должен возвращать false для async генераторов', () => {
662
+ async function* asyncGeneratorFunc() {}
663
+ expect(Type.isClass(asyncGeneratorFunc)).toBe(false);
664
+ });
665
+
666
+ test('должен возвращать false для символов', () => {
667
+ expect(Type.isClass(Symbol('symbol'))).toBe(false);
668
+ });
669
+
670
+ test('должен возвращать false для объектов с методом toString', () => {
671
+ const obj = {
672
+ toString() {
673
+ return 'class';
674
+ },
675
+ };
676
+ expect(Type.isClass(obj)).toBe(false);
677
+ });
678
+ });
679
+
680
+ describe('Метод Type.isFloat', () => {
681
+ describe('Числа с плавающей точкой', () => {
682
+ test('должна возвращать true для положительных дробных чисел', () => {
683
+ expect(Type.isFloat(3.14)).toBe(true);
684
+ });
685
+
686
+ test('должна возвращать true для отрицательных дробных чисел', () => {
687
+ expect(Type.isFloat(-0.5)).toBe(true);
688
+ });
689
+
690
+ test('должна возвращать true для дробных чисел, полученных в результате вычислений', () => {
691
+ expect(Type.isFloat(0.1 + 0.2)).toBe(true);
692
+ });
693
+ });
694
+
695
+ describe('Целые числа', () => {
696
+ test('должна возвращать false для нуля', () => {
697
+ expect(Type.isFloat(0)).toBe(false);
698
+ });
699
+
700
+ test('должна возвращать false для положительных целых чисел', () => {
701
+ expect(Type.isFloat(42)).toBe(false);
702
+ });
703
+
704
+ test('должна возвращать false для отрицательных целых чисел', () => {
705
+ expect(Type.isFloat(-100)).toBe(false);
706
+ });
707
+ });
708
+
709
+ describe('Нечисловые значения', () => {
710
+ test('должна возвращать false для строки', () => {
711
+ expect(Type.isFloat('3.14')).toBe(false);
712
+ });
713
+
714
+ test('должна возвращать false для NaN', () => {
715
+ expect(Type.isFloat(NaN)).toBe(false);
716
+ });
717
+
718
+ test('должна возвращать false для null', () => {
719
+ expect(Type.isFloat(null)).toBe(false);
720
+ });
721
+
722
+ test('должна возвращать false для undefined', () => {
723
+ expect(Type.isFloat(undefined)).toBe(false);
724
+ });
725
+
726
+ test('должна возвращать false для булевых значений', () => {
727
+ expect(Type.isFloat(true)).toBe(false);
728
+ expect(Type.isFloat(false)).toBe(false);
729
+ });
730
+
731
+ test('должна возвращать false для объектов', () => {
732
+ expect(Type.isFloat({})).toBe(false);
733
+ });
734
+
735
+ test('должна возвращать false для массивов', () => {
736
+ expect(Type.isFloat([])).toBe(false);
737
+ });
738
+ });
739
+
740
+ describe('Специальные значения', () => {
741
+ test('должна возвращать false для Infinity', () => {
742
+ expect(Type.isFloat(Infinity)).toBe(false);
743
+ });
744
+
745
+ test('должна возвращать false для -Infinity', () => {
746
+ expect(Type.isFloat(-Infinity)).toBe(false);
747
+ });
748
+ });
749
+
750
+ describe('Проверка с использованием числовых строк', () => {
751
+ test('должна возвращать false для числовых строк', () => {
752
+ expect(Type.isFloat('3.14')).toBe(false);
753
+ expect(Type.isFloat('-0.5')).toBe(false);
754
+ });
755
+ });
756
+
757
+ describe('Проверка с использованием объектов Number', () => {
758
+ test('должна возвращать false для объектов Number', () => {
759
+ expect(Type.isFloat(new Number(3.14))).toBe(false);
760
+ expect(Type.isFloat(new Number(-0.5))).toBe(false);
761
+ });
762
+ });
763
+ });
764
+
765
+ describe('Метод Type.isFunction', () => {
766
+ test('должна возвращать true для обычной функции', () => {
767
+ function example() {}
768
+ expect(Type.isFunction(example)).toBe(true);
769
+ });
770
+
771
+ test('должна возвращать false для класса', () => {
772
+ class MyClass {}
773
+ expect(Type.isFunction(MyClass)).toBe(false);
774
+ });
775
+
776
+ test('должна возвращать false для объектов', () => {
777
+ class MyClass {}
778
+ const obj = new MyClass();
779
+ expect(Type.isFunction(obj)).toBe(false);
780
+ });
781
+
782
+ test('должна возвращать false для массивов', () => {
783
+ expect(Type.isFunction([])).toBe(false);
784
+ expect(Type.isFunction({})).toBe(false);
785
+ expect(Type.isFunction(Object.create(null))).toBe(false);
786
+ });
787
+
788
+ test('должна возвращать false для примитивных типов', () => {
789
+ expect(Type.isFunction(42)).toBe(false);
790
+ expect(Type.isFunction('hello')).toBe(false);
791
+ expect(Type.isFunction(null)).toBe(false);
792
+ expect(Type.isFunction(undefined)).toBe(false);
793
+ });
794
+
795
+ test('должна возвращать true для стрелочных функций', () => {
796
+ expect(Type.isFunction(() => {})).toBe(true);
797
+ });
798
+
799
+ test('должна возвращать true для функции без строкового представления', () => {
800
+ const func = () => {};
801
+ func.toString = undefined;
802
+ expect(Type.isFunction(func)).toBe(true);
803
+ });
804
+
805
+ test('должна возвращать true для async функции', () => {
806
+ async function asyncFunc() {}
807
+ expect(Type.isFunction(asyncFunc)).toBe(true);
808
+ });
809
+
810
+ test('должна возвращать true для генератора', () => {
811
+ function* generatorFunc() {}
812
+ expect(Type.isFunction(generatorFunc)).toBe(true);
813
+ });
814
+
815
+ test('должна возвращать true для async генератора', () => {
816
+ async function* asyncGeneratorFunc() {}
817
+ expect(Type.isFunction(asyncGeneratorFunc)).toBe(true);
818
+ });
819
+
820
+ test('должна возвращать false для null', () => {
821
+ expect(Type.isFunction(null)).toBe(false);
822
+ });
823
+
824
+ test('должна возвращать false для undefined', () => {
825
+ expect(Type.isFunction(undefined)).toBe(false);
826
+ });
827
+
828
+ test('должна возвращать false для NaN', () => {
829
+ expect(Type.isFunction(NaN)).toBe(false);
830
+ });
831
+
832
+ test('должна возвращать false для символов', () => {
833
+ expect(Type.isFunction(Symbol('symbol'))).toBe(false);
834
+ });
835
+
836
+ test('должна возвращать false для объектов с методом toString', () => {
837
+ const obj = {
838
+ toString() {
839
+ return 'function';
840
+ },
841
+ };
842
+ expect(Type.isFunction(obj)).toBe(false);
843
+ });
844
+ });
845
+
846
+ describe('Метод Type.isInfinity', () => {
847
+ test('должна возвращать true для Infinity', () => {
848
+ expect(Type.isInfinity(Infinity)).toBe(true);
849
+ });
850
+
851
+ test('должна возвращать true для -Infinity', () => {
852
+ expect(Type.isInfinity(-Infinity)).toBe(true);
853
+ });
854
+
855
+ test('должна возвращать false для чисел', () => {
856
+ expect(Type.isInfinity(42)).toBe(false);
857
+ expect(Type.isInfinity(3.14)).toBe(false);
858
+ expect(Type.isInfinity(NaN)).toBe(false);
859
+ });
860
+
861
+ test('должна возвращать false для строк', () => {
862
+ expect(Type.isInfinity('Infinity')).toBe(false);
863
+ expect(Type.isInfinity('42')).toBe(false);
864
+ expect(Type.isInfinity('')).toBe(false);
865
+ });
866
+
867
+ test('должна возвращать false для логических значений', () => {
868
+ expect(Type.isInfinity(true)).toBe(false);
869
+ expect(Type.isInfinity(false)).toBe(false);
870
+ });
871
+
872
+ test('должна возвращать false для null и undefined', () => {
873
+ expect(Type.isInfinity(null)).toBe(false);
874
+ expect(Type.isInfinity(undefined)).toBe(false);
875
+ });
876
+
877
+ test('должна возвращать false для объектов и массивов', () => {
878
+ expect(Type.isInfinity({})).toBe(false);
879
+ expect(Type.isInfinity([])).toBe(false);
880
+ expect(Type.isInfinity({ foo: 42 })).toBe(false);
881
+ expect(Type.isInfinity([1, 2, 3])).toBe(false);
882
+ });
883
+
884
+ test('должна возвращать false для функций', () => {
885
+ expect(Type.isInfinity(() => {})).toBe(false);
886
+ expect(Type.isInfinity(() => {})).toBe(false);
887
+ });
888
+ });
889
+
890
+ describe('Метод Type.isInt', () => {
891
+ test('Возвращает true для положительных целых чисел', () => {
892
+ expect(Type.isInt(1)).toBe(true);
893
+ expect(Type.isInt(100)).toBe(true);
894
+ expect(Type.isInt(123456)).toBe(true);
895
+ });
896
+
897
+ test('Возвращает true для отрицательных целых чисел', () => {
898
+ expect(Type.isInt(-1)).toBe(true);
899
+ expect(Type.isInt(-100)).toBe(true);
900
+ expect(Type.isInt(-123456)).toBe(true);
901
+ });
902
+
903
+ test('Возвращает true для нуля', () => {
904
+ expect(Type.isInt(0)).toBe(true);
905
+ });
906
+
907
+ test('Возвращает false для чисел с плавающей точкой', () => {
908
+ expect(Type.isInt(1.1)).toBe(false);
909
+ expect(Type.isInt(-0.5)).toBe(false);
910
+ expect(Type.isInt(3.14159)).toBe(false);
911
+ });
912
+
913
+ test('Возвращает false для значений не типа number', () => {
914
+ expect(Type.isInt('42')).toBe(false); // строка
915
+ expect(Type.isInt(true)).toBe(false); // логическое значение
916
+ expect(Type.isInt(null)).toBe(false); // null
917
+ expect(Type.isInt(undefined)).toBe(false); // undefined
918
+ expect(Type.isInt({})).toBe(false); // объект
919
+ expect(Type.isInt([])).toBe(false); // массив
920
+ });
921
+
922
+ test('Возвращает false для специальных числовых значений', () => {
923
+ expect(Type.isInt(Infinity)).toBe(false); // бесконечность
924
+ expect(Type.isInt(-Infinity)).toBe(false); // отрицательная бесконечность
925
+ expect(Type.isInt(NaN)).toBe(false); // не число
926
+ });
927
+
928
+ test('Возвращает false для типа bigint', () => {
929
+ expect(Type.isInt(BigInt(123456))).toBe(false);
930
+ });
931
+ });
932
+
933
+ describe('Метод Type.isInteger', () => {
934
+ test('должна возвращать true для положительных целых чисел', () => {
935
+ expect(Type.isInteger(42)).toBe(true);
936
+ expect(Type.isInteger(100)).toBe(true);
937
+ expect(Type.isInteger(123456)).toBe(true);
938
+ });
939
+
940
+ test('должна возвращать true для отрицательных целых чисел', () => {
941
+ expect(Type.isInteger(-42)).toBe(true);
942
+ expect(Type.isInteger(-100)).toBe(true);
943
+ expect(Type.isInteger(-123456)).toBe(true);
944
+ });
945
+
946
+ test('должна возвращать true для нуля', () => {
947
+ expect(Type.isInteger(0)).toBe(true);
948
+ });
949
+
950
+ test('должна возвращать false для чисел с плавающей точкой', () => {
951
+ expect(Type.isInteger(3.14)).toBe(false);
952
+ expect(Type.isInteger(-0.99)).toBe(false);
953
+ expect(Type.isInteger(0.1)).toBe(false);
954
+ });
955
+
956
+ test('должна возвращать false для специальных чисел', () => {
957
+ expect(Type.isInteger(NaN)).toBe(false);
958
+ expect(Type.isInteger(Infinity)).toBe(false);
959
+ expect(Type.isInteger(-Infinity)).toBe(false);
960
+ });
961
+
962
+ test('должна возвращать false для строк', () => {
963
+ expect(Type.isInteger('42')).toBe(false);
964
+ expect(Type.isInteger('3.14')).toBe(false);
965
+ expect(Type.isInteger('')).toBe(false);
966
+ });
967
+
968
+ test('должна возвращать false для логических значений', () => {
969
+ expect(Type.isInteger(true)).toBe(false);
970
+ expect(Type.isInteger(false)).toBe(false);
971
+ });
972
+
973
+ test('должна возвращать false для null и undefined', () => {
974
+ expect(Type.isInteger(null)).toBe(false);
975
+ expect(Type.isInteger(undefined)).toBe(false);
976
+ });
977
+
978
+ test('должна возвращать false для объектов и массивов', () => {
979
+ expect(Type.isInteger({})).toBe(false);
980
+ expect(Type.isInteger([])).toBe(false);
981
+ expect(Type.isInteger({ foo: 42 })).toBe(false);
982
+ expect(Type.isInteger([1, 2, 3])).toBe(false);
983
+ });
984
+
985
+ test('должна возвращать false для функций', () => {
986
+ expect(Type.isInteger(() => {})).toBe(false);
987
+ expect(Type.isInteger(() => {})).toBe(false);
988
+ });
989
+
990
+ test('должна возвращать false для типа bigint', () => {
991
+ expect(Type.isInteger(BigInt(123456))).toBe(false);
992
+ });
993
+ });
994
+
995
+ describe('Метод Type.isList', () => {
996
+ test('должна возвращать true для массивов', () => {
997
+ expect(Type.isList([])).toBe(true);
998
+ expect(Type.isList([1, 2, 3])).toBe(true);
999
+ });
1000
+
1001
+ test('должна возвращать false для ассоциативных массивов', () => {
1002
+ expect(Type.isList({})).toBe(false);
1003
+ expect(Type.isList({ foo: 'bar' })).toBe(false);
1004
+ });
1005
+
1006
+ test('должна возвращать false для строк', () => {
1007
+ expect(Type.isList('string')).toBe(false);
1008
+ });
1009
+
1010
+ test('должна возвращать false для чисел', () => {
1011
+ expect(Type.isList(42)).toBe(false);
1012
+ });
1013
+
1014
+ test('должна возвращать false для null и undefined', () => {
1015
+ expect(Type.isList(null)).toBe(false);
1016
+ expect(Type.isList(undefined)).toBe(false);
1017
+ });
1018
+
1019
+ test('должна возвращать false для логических значений', () => {
1020
+ expect(Type.isList(true)).toBe(false);
1021
+ expect(Type.isList(false)).toBe(false);
1022
+ });
1023
+
1024
+ test('должна возвращать false для функций', () => {
1025
+ function func() {}
1026
+ expect(Type.isList(func)).toBe(false);
1027
+ expect(Type.isList(() => {})).toBe(false);
1028
+ });
1029
+
1030
+ test('должна возвращать false для символов', () => {
1031
+ expect(Type.isList(Symbol('symbol'))).toBe(false);
1032
+ });
1033
+ });
1034
+
1035
+ describe('Метод Type.isNaN', () => {
1036
+ test('должна возвращать true для NaN', () => {
1037
+ expect(Type.isNaN(NaN)).toBe(true);
1038
+ });
1039
+
1040
+ test('должна возвращать false для чисел', () => {
1041
+ expect(Type.isNaN(42)).toBe(false);
1042
+ expect(Type.isNaN(3.14)).toBe(false);
1043
+ expect(Type.isNaN(Infinity)).toBe(false);
1044
+ expect(Type.isNaN(-Infinity)).toBe(false);
1045
+ });
1046
+
1047
+ test('должна возвращать false для строк', () => {
1048
+ expect(Type.isNaN('42')).toBe(false);
1049
+ expect(Type.isNaN('NaN')).toBe(false);
1050
+ expect(Type.isNaN('')).toBe(false);
1051
+ });
1052
+
1053
+ test('должна возвращать false для логических значений', () => {
1054
+ expect(Type.isNaN(true)).toBe(false);
1055
+ expect(Type.isNaN(false)).toBe(false);
1056
+ });
1057
+
1058
+ test('должна возвращать false для null и undefined', () => {
1059
+ expect(Type.isNaN(null)).toBe(false);
1060
+ expect(Type.isNaN(undefined)).toBe(false);
1061
+ });
1062
+
1063
+ test('должна возвращать false для объектов и массивов', () => {
1064
+ expect(Type.isNaN({})).toBe(false);
1065
+ expect(Type.isNaN([])).toBe(false);
1066
+ expect(Type.isNaN({ foo: 42 })).toBe(false);
1067
+ expect(Type.isNaN([1, 2, 3])).toBe(false);
1068
+ });
1069
+
1070
+ test('должна возвращать false для функций', () => {
1071
+ expect(Type.isNaN(() => {})).toBe(false);
1072
+ expect(Type.isNaN(() => {})).toBe(false);
1073
+ });
1074
+ });
1075
+
1076
+ describe('Метод Type.isNull', () => {
1077
+ test('должен возвращать true для значения null', () => {
1078
+ expect(Type.isNull(null)).toBe(true);
1079
+ });
1080
+
1081
+ test('должен возвращать false для значений не типа null', () => {
1082
+ expect(Type.isNull(undefined)).toBe(false);
1083
+ expect(Type.isNull(0)).toBe(false);
1084
+ expect(Type.isNull('')).toBe(false);
1085
+ expect(Type.isNull(false)).toBe(false);
1086
+ expect(Type.isNull({})).toBe(false);
1087
+ expect(Type.isNull([])).toBe(false);
1088
+ });
1089
+ });
1090
+
1091
+ describe('Метод Type.isNumber', () => {
1092
+ test('Возвращает true для числовых значений', () => {
1093
+ expect(Type.isNumber(42)).toBe(true);
1094
+ expect(Type.isNumber(3.14)).toBe(true);
1095
+ expect(Type.isNumber(-0.99)).toBe(true);
1096
+ });
1097
+
1098
+ test('Возвращает false для специальных числовых значений', () => {
1099
+ expect(Type.isNumber(NaN)).toBe(false);
1100
+ expect(Type.isNumber(Infinity)).toBe(false);
1101
+ expect(Type.isNumber(-Infinity)).toBe(false);
1102
+ });
1103
+
1104
+ test('Возвращает false для значений не типа number', () => {
1105
+ expect(Type.isNumber('42')).toBe(false); // строка
1106
+ expect(Type.isNumber(true)).toBe(false); // логическое значение
1107
+ expect(Type.isNumber(null)).toBe(false); // null
1108
+ expect(Type.isNumber(undefined)).toBe(false); // undefined
1109
+ expect(Type.isNumber({})).toBe(false); // объект
1110
+ expect(Type.isNumber([])).toBe(false); // массив
1111
+ });
1112
+ });
1113
+
1114
+ describe('Метод Type.isNumeric', () => {
1115
+ test('Возвращает true для числовых значений', () => {
1116
+ expect(Type.isNumeric(42)).toBe(true);
1117
+ expect(Type.isNumeric(3.14)).toBe(true);
1118
+ expect(Type.isNumeric(-0.99)).toBe(true);
1119
+ });
1120
+
1121
+ test('Возвращает true для числовых строк', () => {
1122
+ expect(Type.isNumeric('42')).toBe(true);
1123
+ expect(Type.isNumeric('3.14')).toBe(true);
1124
+ expect(Type.isNumeric('-0.99')).toBe(true);
1125
+ });
1126
+
1127
+ test('Возвращает false для специальных числовых значений', () => {
1128
+ expect(Type.isNumeric(NaN)).toBe(false);
1129
+ expect(Type.isNumeric(Infinity)).toBe(false);
1130
+ expect(Type.isNumeric(-Infinity)).toBe(false);
1131
+ });
1132
+
1133
+ test('Возвращает false для значений не типа number или string', () => {
1134
+ expect(Type.isNumeric(true)).toBe(false); // логическое значение
1135
+ expect(Type.isNumeric(null)).toBe(false); // null
1136
+ expect(Type.isNumeric(undefined)).toBe(false); // undefined
1137
+ expect(Type.isNumeric({})).toBe(false); // объект
1138
+ expect(Type.isNumeric([])).toBe(false); // массив
1139
+ });
1140
+ });
1141
+
1142
+ describe('Метод Type.isObject', () => {
1143
+ test('должна возвращать true для объектов, созданных с использованием классов', () => {
1144
+ class MyClass {}
1145
+ const myClassInstance = new MyClass();
1146
+ expect(Type.isObject(myClassInstance)).toBe(true);
1147
+ });
1148
+
1149
+ test('должна возвращать false для классов', () => {
1150
+ class MyClass {}
1151
+ expect(Type.isObject(MyClass)).toBe(false);
1152
+ });
1153
+
1154
+ test('должна возвращать false для ассоциативных массивов', () => {
1155
+ const obj = {};
1156
+ expect(Type.isObject(obj)).toBe(false);
1157
+ });
1158
+
1159
+ test('должна возвращать false для массивов', () => {
1160
+ const arr = [];
1161
+ expect(Type.isObject(arr)).toBe(false);
1162
+ });
1163
+
1164
+ test('должна возвращать false для объектов, таких как Date', () => {
1165
+ const date = new Date();
1166
+ expect(Type.isObject(date)).toBe(false);
1167
+ });
1168
+
1169
+ test('должна возвращать false для null', () => {
1170
+ expect(Type.isObject(null)).toBe(false);
1171
+ });
1172
+
1173
+ test('должна возвращать false для числа', () => {
1174
+ expect(Type.isObject(42)).toBe(false);
1175
+ });
1176
+
1177
+ test('должна возвращать false для строки', () => {
1178
+ expect(Type.isObject('string')).toBe(false);
1179
+ });
1180
+
1181
+ test('должна возвращать false для объектов, таких как Map', () => {
1182
+ const map = new Map();
1183
+ expect(Type.isObject(map)).toBe(false);
1184
+ });
1185
+
1186
+ test('должна возвращать false для объектов, созданных с Object.create(null)', () => {
1187
+ const objNoProto = Object.create(null);
1188
+ expect(Type.isObject(objNoProto)).toBe(false);
1189
+ });
1190
+ });
1191
+
1192
+ describe('Метод Type.isScalar', () => {
1193
+ test('Возвращает true для скалярных значений', () => {
1194
+ expect(Type.isScalar(true)).toBe(true);
1195
+ expect(Type.isScalar(false)).toBe(true);
1196
+ expect(Type.isScalar(42)).toBe(true);
1197
+ expect(Type.isScalar(3.14)).toBe(true);
1198
+ expect(Type.isScalar('hello')).toBe(true);
1199
+ expect(Type.isScalar(Symbol('symbol'))).toBe(true);
1200
+ });
1201
+
1202
+ test('Возвращает false для не скалярных значений', () => {
1203
+ expect(Type.isScalar(null)).toBe(false);
1204
+ expect(Type.isScalar(undefined)).toBe(false);
1205
+ expect(Type.isScalar({})).toBe(false); // объект
1206
+ expect(Type.isScalar([])).toBe(false); // массив
1207
+ expect(Type.isScalar(() => {})).toBe(false); // функция
1208
+ });
1209
+ });
1210
+
1211
+ describe('Метод Type.isString', () => {
1212
+ test('Возвращает true для строковых значений', () => {
1213
+ expect(Type.isString('hello')).toBe(true);
1214
+ expect(Type.isString('')).toBe(true);
1215
+ expect(Type.isString(`template string`)).toBe(true);
1216
+ });
1217
+
1218
+ test('Возвращает false для значений других типов', () => {
1219
+ expect(Type.isString(42)).toBe(false); // число
1220
+ expect(Type.isString(true)).toBe(false); // логическое значение
1221
+ expect(Type.isString(null)).toBe(false);
1222
+ expect(Type.isString(undefined)).toBe(false);
1223
+ expect(Type.isString({})).toBe(false); // объект
1224
+ expect(Type.isString([])).toBe(false); // массив
1225
+ expect(Type.isString(() => {})).toBe(false); // функция
1226
+ });
1227
+ });
1228
+
1229
+ describe('Метод Type.isSymbol', () => {
1230
+ test('Возвращает true для символов', () => {
1231
+ expect(Type.isSymbol(Symbol('symbol'))).toBe(true);
1232
+ expect(Type.isSymbol(Symbol.iterator)).toBe(true);
1233
+ });
1234
+
1235
+ test('Возвращает false для значений других типов', () => {
1236
+ expect(Type.isSymbol('hello')).toBe(false); // строка
1237
+ expect(Type.isSymbol(42)).toBe(false); // число
1238
+ expect(Type.isSymbol(true)).toBe(false); // логическое значение
1239
+ expect(Type.isSymbol(null)).toBe(false);
1240
+ expect(Type.isSymbol(undefined)).toBe(false);
1241
+ expect(Type.isSymbol({})).toBe(false); // объект
1242
+ expect(Type.isSymbol([])).toBe(false); // массив
1243
+ expect(Type.isSymbol(() => {})).toBe(false); // функция
1244
+ });
1245
+ });
1246
+
1247
+ describe('Метод Type.isUndefined', () => {
1248
+ test('Возвращает true для значения undefined', () => {
1249
+ expect(Type.isUndefined(undefined)).toBe(true);
1250
+ });
1251
+
1252
+ test('Возвращает false для значений других типов', () => {
1253
+ expect(Type.isUndefined('hello')).toBe(false); // строка
1254
+ expect(Type.isUndefined(42)).toBe(false); // число
1255
+ expect(Type.isUndefined(true)).toBe(false); // логическое значение
1256
+ expect(Type.isUndefined(null)).toBe(false);
1257
+ expect(Type.isUndefined({})).toBe(false); // объект
1258
+ expect(Type.isUndefined([])).toBe(false); // массив
1259
+ expect(Type.isUndefined(() => {})).toBe(false); // функция
1260
+ });
1261
+ });
1262
+ });