@rogolev/value 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+ });