@rogolev/value 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (133) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +19 -1
  3. package/docs/classes/Value/constructor.md +48 -0
  4. package/docs/classes/Value/get.md +51 -0
  5. package/docs/classes/Value/getType.md +71 -0
  6. package/docs/classes/Value/isArray.md +67 -0
  7. package/docs/classes/Value/isAssoc.md +68 -0
  8. package/docs/classes/Value/isBigInt.md +52 -0
  9. package/docs/classes/Value/isBool.md +60 -0
  10. package/docs/classes/Value/isBoolean.md +60 -0
  11. package/docs/classes/Value/isClass.md +55 -0
  12. package/docs/classes/Value/isEmpty.md +84 -0
  13. package/docs/classes/Value/isFloat.md +52 -0
  14. package/docs/classes/Value/isFunction.md +60 -0
  15. package/docs/classes/Value/isInfinity.md +60 -0
  16. package/docs/classes/Value/isInt.md +52 -0
  17. package/docs/classes/Value/isInteger.md +52 -0
  18. package/docs/classes/Value/isList.md +59 -0
  19. package/docs/classes/Value/isNaN.md +79 -0
  20. package/docs/classes/Value/isNull.md +59 -0
  21. package/docs/classes/Value/isNumber.md +80 -0
  22. package/docs/classes/Value/isNumeric.md +79 -0
  23. package/docs/classes/Value/isObject.md +68 -0
  24. package/docs/classes/Value/isScalar.md +72 -0
  25. package/docs/classes/Value/isString.md +67 -0
  26. package/docs/classes/Value/isSymbol.md +75 -0
  27. package/docs/classes/Value/isUndefined.md +67 -0
  28. package/docs/classes/Value/print.md +164 -0
  29. package/docs/classes/Value/printType.md +158 -0
  30. package/docs/classes/Value/setType.md +79 -0
  31. package/docs/classes/Value/toArray.md +85 -0
  32. package/docs/classes/Value/toAssoc.md +85 -0
  33. package/docs/classes/Value/toBool.md +71 -0
  34. package/docs/classes/Value/toBoolean.md +71 -0
  35. package/docs/classes/Value/toFloat.md +72 -0
  36. package/docs/classes/Value/toInt.md +72 -0
  37. package/docs/classes/Value/toInteger.md +72 -0
  38. package/docs/classes/Value/toList.md +77 -0
  39. package/docs/classes/Value/toObject.md +78 -0
  40. package/docs/classes/Value/toPrint.md +115 -0
  41. package/docs/classes/Value/toPrintType.md +110 -0
  42. package/docs/classes/Value/toString.md +134 -0
  43. package/docs/classes/Value.md +113 -0
  44. package/docs/classes.md +2 -0
  45. package/docs/constants.md +47 -0
  46. package/docs/helpers/value.md +95 -0
  47. package/docs/helpers.md +2 -0
  48. package/index.mjs +3 -0
  49. package/package.json +2 -2
  50. package/src/classes/Convert.mjs +818 -819
  51. package/src/classes/Type.mjs +1284 -1285
  52. package/src/classes/Value.mjs +2846 -0
  53. package/src/constants.mjs +14 -0
  54. package/src/helpers/array.mjs +107 -107
  55. package/src/helpers/empty.mjs +70 -70
  56. package/src/helpers/gettype.mjs +149 -133
  57. package/src/helpers/is_array.mjs +128 -128
  58. package/src/helpers/is_assoc.mjs +51 -51
  59. package/src/helpers/is_bigint.mjs +47 -47
  60. package/src/helpers/is_bool.mjs +43 -43
  61. package/src/helpers/is_boolean.mjs +43 -43
  62. package/src/helpers/is_class.mjs +87 -87
  63. package/src/helpers/is_float.mjs +67 -67
  64. package/src/helpers/is_function.mjs +74 -74
  65. package/src/helpers/is_infinity.mjs +52 -52
  66. package/src/helpers/is_int.mjs +57 -57
  67. package/src/helpers/is_integer.mjs +74 -74
  68. package/src/helpers/is_list.mjs +43 -43
  69. package/src/helpers/is_nan.mjs +51 -51
  70. package/src/helpers/is_null.mjs +37 -37
  71. package/src/helpers/is_number.mjs +49 -49
  72. package/src/helpers/is_numeric.mjs +64 -64
  73. package/src/helpers/is_object.mjs +72 -72
  74. package/src/helpers/is_scalar.mjs +45 -45
  75. package/src/helpers/is_string.mjs +46 -46
  76. package/src/helpers/is_symbol.mjs +46 -46
  77. package/src/helpers/is_undefined.mjs +44 -44
  78. package/src/helpers/print.mjs +245 -245
  79. package/src/helpers/print_type.mjs +261 -261
  80. package/src/helpers/settype.mjs +101 -101
  81. package/src/helpers/to_array.mjs +118 -118
  82. package/src/helpers/to_assoc.mjs +98 -98
  83. package/src/helpers/to_bool.mjs +68 -68
  84. package/src/helpers/to_boolean.mjs +64 -64
  85. package/src/helpers/to_float.mjs +72 -72
  86. package/src/helpers/to_int.mjs +93 -93
  87. package/src/helpers/to_integer.mjs +81 -81
  88. package/src/helpers/to_list.mjs +56 -56
  89. package/src/helpers/to_object.mjs +94 -94
  90. package/src/helpers/to_string.mjs +157 -157
  91. package/src/helpers/value.mjs +92 -0
  92. package/tests/classes/Convert.test.mjs +398 -399
  93. package/tests/classes/Type.test.mjs +1262 -1263
  94. package/tests/classes/Value.test.mjs +423 -0
  95. package/tests/constants.test.mjs +75 -0
  96. package/tests/helpers/array.test.mjs +58 -58
  97. package/tests/helpers/empty.test.mjs +22 -22
  98. package/tests/helpers/gettype.test.mjs +74 -74
  99. package/tests/helpers/is_array.test.mjs +404 -404
  100. package/tests/helpers/is_assoc.test.mjs +42 -42
  101. package/tests/helpers/is_bigint.test.mjs +51 -51
  102. package/tests/helpers/is_bool.test.mjs +43 -43
  103. package/tests/helpers/is_boolean.test.mjs +43 -43
  104. package/tests/helpers/is_class.test.mjs +84 -84
  105. package/tests/helpers/is_float.test.mjs +87 -87
  106. package/tests/helpers/is_function.test.mjs +83 -83
  107. package/tests/helpers/is_infinity.test.mjs +46 -46
  108. package/tests/helpers/is_int.test.mjs +45 -45
  109. package/tests/helpers/is_integer.test.mjs +64 -64
  110. package/tests/helpers/is_list.test.mjs +42 -42
  111. package/tests/helpers/is_nan.test.mjs +43 -43
  112. package/tests/helpers/is_null.test.mjs +17 -17
  113. package/tests/helpers/is_number.test.mjs +25 -25
  114. package/tests/helpers/is_numeric.test.mjs +30 -30
  115. package/tests/helpers/is_object.test.mjs +52 -52
  116. package/tests/helpers/is_scalar.test.mjs +21 -21
  117. package/tests/helpers/is_string.test.mjs +20 -20
  118. package/tests/helpers/is_symbol.test.mjs +20 -20
  119. package/tests/helpers/is_undefined.test.mjs +18 -18
  120. package/tests/helpers/print.test.mjs +62 -62
  121. package/tests/helpers/print_type.test.mjs +62 -62
  122. package/tests/helpers/settype.test.mjs +34 -34
  123. package/tests/helpers/to_array.test.mjs +38 -38
  124. package/tests/helpers/to_assoc.test.mjs +33 -33
  125. package/tests/helpers/to_bool.test.mjs +51 -51
  126. package/tests/helpers/to_boolean.test.mjs +51 -51
  127. package/tests/helpers/to_float.test.mjs +26 -26
  128. package/tests/helpers/to_int.test.mjs +48 -48
  129. package/tests/helpers/to_integer.test.mjs +48 -48
  130. package/tests/helpers/to_list.test.mjs +32 -32
  131. package/tests/helpers/to_object.test.mjs +36 -36
  132. package/tests/helpers/to_string.test.mjs +71 -71
  133. package/tests/helpers/value.test.mjs +68 -0
@@ -1,1263 +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
- });
1263
-
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
+ });