@rogolev/value 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (176) hide show
  1. package/.prettierignore +4 -4
  2. package/CHANGELOG.md +68 -56
  3. package/LICENSE +41 -41
  4. package/README.md +100 -91
  5. package/babel.config.json +20 -20
  6. package/docs/classes/Convert/toArray.md +100 -0
  7. package/docs/classes/Convert/toAssoc.md +90 -0
  8. package/docs/classes/Convert/toBool.md +72 -0
  9. package/docs/classes/Convert/toBoolean.md +72 -0
  10. package/docs/classes/Convert/toFloat.md +69 -0
  11. package/docs/classes/Convert/toInt.md +86 -0
  12. package/docs/classes/Convert/toInteger.md +86 -0
  13. package/docs/classes/Convert/toList.md +73 -0
  14. package/docs/classes/Convert/toObject.md +76 -0
  15. package/docs/classes/Convert/toString.md +125 -0
  16. package/docs/classes/Convert.md +44 -0
  17. package/docs/classes/Type/isArray.md +106 -0
  18. package/docs/classes/Type/isAssoc.md +57 -0
  19. package/docs/classes/Type/isBigInt.md +49 -0
  20. package/docs/classes/Type/isBool.md +51 -0
  21. package/docs/classes/Type/isBoolean.md +51 -0
  22. package/docs/classes/Type/isClass.md +60 -0
  23. package/docs/classes/Type/isEmpty.md +53 -0
  24. package/docs/classes/Type/isFloat.md +77 -0
  25. package/docs/classes/Type/isFunction.md +64 -0
  26. package/docs/classes/Type/isInfinity.md +59 -0
  27. package/docs/classes/Type/isInt.md +77 -0
  28. package/docs/classes/Type/isInteger.md +77 -0
  29. package/docs/classes/Type/isList.md +49 -0
  30. package/docs/classes/Type/isNaN.md +57 -0
  31. package/docs/classes/Type/isNull.md +49 -0
  32. package/docs/classes/Type/isNumber.md +60 -0
  33. package/docs/classes/Type/isNumeric.md +58 -0
  34. package/docs/classes/Type/isObject.md +53 -0
  35. package/docs/classes/Type/isScalar.md +54 -0
  36. package/docs/classes/Type/isString.md +54 -0
  37. package/docs/classes/Type/isSymbol.md +56 -0
  38. package/docs/classes/Type/isUndefined.md +52 -0
  39. package/docs/classes/Type.md +74 -0
  40. package/docs/classes.md +9 -0
  41. package/docs/helpers/array.md +80 -80
  42. package/docs/helpers/empty.md +77 -77
  43. package/docs/helpers/gettype.md +69 -69
  44. package/docs/helpers/is_array.md +105 -105
  45. package/docs/helpers/is_assoc.md +59 -59
  46. package/docs/helpers/is_bigint.md +57 -57
  47. package/docs/helpers/is_bool.md +50 -50
  48. package/docs/helpers/is_boolean.md +50 -50
  49. package/docs/helpers/is_class.md +73 -73
  50. package/docs/helpers/is_float.md +71 -71
  51. package/docs/helpers/is_function.md +62 -62
  52. package/docs/helpers/is_infinity.md +61 -61
  53. package/docs/helpers/is_int.md +81 -81
  54. package/docs/helpers/is_integer.md +82 -82
  55. package/docs/helpers/is_list.md +51 -51
  56. package/docs/helpers/is_nan.md +59 -59
  57. package/docs/helpers/is_null.md +49 -49
  58. package/docs/helpers/is_number.md +67 -67
  59. package/docs/helpers/is_numeric.md +76 -76
  60. package/docs/helpers/is_object.md +69 -69
  61. package/docs/helpers/is_scalar.md +60 -60
  62. package/docs/helpers/is_string.md +58 -58
  63. package/docs/helpers/is_symbol.md +58 -58
  64. package/docs/helpers/is_undefined.md +56 -56
  65. package/docs/helpers/print.md +187 -187
  66. package/docs/helpers/print_type.md +225 -225
  67. package/docs/helpers/settype.md +78 -78
  68. package/docs/helpers/to_array.md +106 -106
  69. package/docs/helpers/to_assoc.md +91 -91
  70. package/docs/helpers/to_bool.md +76 -76
  71. package/docs/helpers/to_boolean.md +77 -77
  72. package/docs/helpers/to_float.md +70 -70
  73. package/docs/helpers/to_int.md +87 -87
  74. package/docs/helpers/to_integer.md +87 -87
  75. package/docs/helpers/to_list.md +47 -47
  76. package/docs/helpers/to_object.md +76 -76
  77. package/docs/helpers/to_string.md +134 -134
  78. package/docs/helpers.md +51 -51
  79. package/docs/types/NaN.md +30 -30
  80. package/docs/types/array.md +252 -252
  81. package/docs/types/bigint.md +34 -34
  82. package/docs/types/boolean.md +47 -47
  83. package/docs/types/class.md +36 -36
  84. package/docs/types/float.md +35 -35
  85. package/docs/types/function.md +121 -121
  86. package/docs/types/infinity.md +32 -32
  87. package/docs/types/integer.md +35 -35
  88. package/docs/types/null.md +23 -23
  89. package/docs/types/object.md +62 -62
  90. package/docs/types/string.md +33 -33
  91. package/docs/types/symbol.md +29 -29
  92. package/docs/types/undefined.md +25 -25
  93. package/docs/types.md +44 -44
  94. package/eslint.config.mjs +1664 -1664
  95. package/index.mjs +40 -37
  96. package/jest.config.mjs +31 -31
  97. package/package.json +48 -47
  98. package/prettier.config.mjs +224 -224
  99. package/src/classes/Convert.mjs +819 -0
  100. package/src/classes/Type.mjs +1285 -0
  101. package/src/helpers/array.mjs +107 -107
  102. package/src/helpers/empty.mjs +70 -70
  103. package/src/helpers/gettype.mjs +133 -133
  104. package/src/helpers/is_array.mjs +128 -128
  105. package/src/helpers/is_assoc.mjs +51 -51
  106. package/src/helpers/is_bigint.mjs +47 -47
  107. package/src/helpers/is_bool.mjs +43 -43
  108. package/src/helpers/is_boolean.mjs +43 -43
  109. package/src/helpers/is_class.mjs +87 -87
  110. package/src/helpers/is_float.mjs +67 -67
  111. package/src/helpers/is_function.mjs +74 -74
  112. package/src/helpers/is_infinity.mjs +52 -52
  113. package/src/helpers/is_int.mjs +57 -57
  114. package/src/helpers/is_integer.mjs +74 -74
  115. package/src/helpers/is_list.mjs +43 -43
  116. package/src/helpers/is_nan.mjs +51 -51
  117. package/src/helpers/is_null.mjs +37 -37
  118. package/src/helpers/is_number.mjs +49 -49
  119. package/src/helpers/is_numeric.mjs +64 -64
  120. package/src/helpers/is_object.mjs +72 -72
  121. package/src/helpers/is_scalar.mjs +45 -45
  122. package/src/helpers/is_string.mjs +46 -46
  123. package/src/helpers/is_symbol.mjs +46 -46
  124. package/src/helpers/is_undefined.mjs +44 -44
  125. package/src/helpers/print.mjs +245 -245
  126. package/src/helpers/print_type.mjs +261 -261
  127. package/src/helpers/settype.mjs +101 -101
  128. package/src/helpers/to_array.mjs +118 -118
  129. package/src/helpers/to_assoc.mjs +98 -98
  130. package/src/helpers/to_bool.mjs +68 -68
  131. package/src/helpers/to_boolean.mjs +64 -64
  132. package/src/helpers/to_float.mjs +72 -72
  133. package/src/helpers/to_int.mjs +93 -93
  134. package/src/helpers/to_integer.mjs +81 -81
  135. package/src/helpers/to_list.mjs +56 -56
  136. package/src/helpers/to_object.mjs +94 -94
  137. package/src/helpers/to_string.mjs +157 -157
  138. package/tests/classes/Convert.test.mjs +399 -0
  139. package/tests/classes/Type.test.mjs +1263 -0
  140. package/tests/helpers/array.test.mjs +58 -58
  141. package/tests/helpers/empty.test.mjs +22 -22
  142. package/tests/helpers/gettype.test.mjs +74 -74
  143. package/tests/helpers/is_array.test.mjs +404 -404
  144. package/tests/helpers/is_assoc.test.mjs +42 -42
  145. package/tests/helpers/is_bigint.test.mjs +51 -51
  146. package/tests/helpers/is_bool.test.mjs +43 -43
  147. package/tests/helpers/is_boolean.test.mjs +43 -43
  148. package/tests/helpers/is_class.test.mjs +84 -84
  149. package/tests/helpers/is_float.test.mjs +87 -87
  150. package/tests/helpers/is_function.test.mjs +83 -83
  151. package/tests/helpers/is_infinity.test.mjs +46 -46
  152. package/tests/helpers/is_int.test.mjs +45 -45
  153. package/tests/helpers/is_integer.test.mjs +64 -64
  154. package/tests/helpers/is_list.test.mjs +42 -42
  155. package/tests/helpers/is_nan.test.mjs +43 -43
  156. package/tests/helpers/is_null.test.mjs +17 -17
  157. package/tests/helpers/is_number.test.mjs +25 -25
  158. package/tests/helpers/is_numeric.test.mjs +30 -30
  159. package/tests/helpers/is_object.test.mjs +52 -52
  160. package/tests/helpers/is_scalar.test.mjs +21 -21
  161. package/tests/helpers/is_string.test.mjs +20 -20
  162. package/tests/helpers/is_symbol.test.mjs +20 -20
  163. package/tests/helpers/is_undefined.test.mjs +18 -18
  164. package/tests/helpers/print.test.mjs +62 -62
  165. package/tests/helpers/print_type.test.mjs +62 -62
  166. package/tests/helpers/settype.test.mjs +34 -34
  167. package/tests/helpers/to_array.test.mjs +38 -38
  168. package/tests/helpers/to_assoc.test.mjs +33 -33
  169. package/tests/helpers/to_bool.test.mjs +51 -51
  170. package/tests/helpers/to_boolean.test.mjs +51 -51
  171. package/tests/helpers/to_float.test.mjs +26 -26
  172. package/tests/helpers/to_int.test.mjs +48 -48
  173. package/tests/helpers/to_integer.test.mjs +48 -48
  174. package/tests/helpers/to_list.test.mjs +32 -32
  175. package/tests/helpers/to_object.test.mjs +36 -36
  176. package/tests/helpers/to_string.test.mjs +71 -71
@@ -1,404 +1,404 @@
1
- import { expect, test, describe } from '@jest/globals';
2
- import { is_array } from '../../index.mjs';
3
-
4
- class stdClass {}
5
-
6
- describe('Функция is_array', () => {
7
- describe('Примитивные значения и базовые типы', () => {
8
- test('false не является массивом', () => {
9
- expect(is_array(false)).toBeFalsy();
10
- });
11
-
12
- test('true не является массивом', () => {
13
- expect(is_array(true)).toBeFalsy();
14
- });
15
-
16
- test('Число 3 не является массивом', () => {
17
- expect(is_array(3)).toBeFalsy();
18
- });
19
-
20
- test('Число 3.14 не является массивом', () => {
21
- expect(is_array(3.14)).toBeFalsy();
22
- });
23
-
24
- test('Строка "string" не является массивом', () => {
25
- expect(is_array('string')).toBeFalsy();
26
- });
27
-
28
- test('null не является массивом', () => {
29
- expect(is_array(null)).toBeFalsy();
30
- });
31
-
32
- test('undefined не является массивом', () => {
33
- expect(is_array(undefined)).toBeFalsy();
34
- });
35
-
36
- test('NaN не является массивом', () => {
37
- expect(is_array(NaN)).toBeFalsy();
38
- });
39
-
40
- test('Symbol не является массивом', () => {
41
- expect(is_array(Symbol())).toBeFalsy();
42
- });
43
- });
44
-
45
- describe('Массивы и объекты', () => {
46
- test('Обычный массив [1, 2] является массивом', () => {
47
- expect(is_array([1, 2])).toBeTruthy();
48
- });
49
-
50
- test('Объект с парами ключ-значение {0: 1, 1: 2} является ассоциативным массивом', () => {
51
- expect(is_array({ 0: 1, 1: 2 })).toBeTruthy();
52
- });
53
-
54
- test('Объект {foo: "bar"} является ассоциативным массивом', () => {
55
- expect(is_array({ foo: 'bar' })).toBeTruthy();
56
- });
57
-
58
- test('Объект, созданный через Object.create(null), является ассоциативным массивом', () => {
59
- const noProtoObject = Object.create(null);
60
- noProtoObject.foo = 'bar';
61
- expect(is_array(noProtoObject)).toBeTruthy();
62
- });
63
-
64
- test('Proxy является массивом', () => {
65
- const handler = {};
66
- const proxy = new Proxy([1, 2, 3], handler); // Проксируем массив
67
- expect(is_array(proxy)).toBeTruthy();
68
- });
69
- });
70
-
71
- describe('Не массивы', () => {
72
- describe('Классы', () => {
73
- test('Экземпляр класса stdClass не является массивом', () => {
74
- expect(is_array(new stdClass())).toBeFalsy();
75
- });
76
-
77
- test('Класс stdClass сам по себе не является массивом', () => {
78
- expect(is_array(stdClass)).toBeFalsy();
79
- });
80
- });
81
-
82
- describe('Глобальные объекты', () => {
83
- // Массив глобальных объектов, которые не являются массивами
84
- const globalObjects = [Object, Function, Boolean];
85
-
86
- globalObjects.forEach((globalObj) => {
87
- test(`${globalObj.name} не является массивом`, () => {
88
- expect(is_array(globalObj)).toBeFalsy();
89
- });
90
- });
91
-
92
- test('Symbol не является массивом', () => {
93
- expect(is_array(Symbol)).toBeFalsy();
94
- });
95
- });
96
-
97
- describe('Обработка текста', () => {
98
- test('String не является массивом', () => {
99
- expect(is_array(String)).toBeFalsy();
100
- });
101
-
102
- test('RegExp не является массивом', () => {
103
- expect(is_array(RegExp)).toBeFalsy();
104
- expect(is_array(/abc/)).toBeFalsy();
105
- });
106
- });
107
-
108
- describe('Числа и даты', () => {
109
- test('Number не является массивом', () => {
110
- expect(is_array(Number)).toBeFalsy();
111
- });
112
-
113
- test('BigInt не является массивом', () => {
114
- expect(is_array(BigInt)).toBeFalsy();
115
- expect(is_array(123n)).toBeFalsy();
116
- });
117
-
118
- test('Math не является массивом', () => {
119
- expect(is_array(Math)).toBeFalsy();
120
- });
121
-
122
- test('Date не является массивом', () => {
123
- expect(is_array(Date)).toBeFalsy();
124
- expect(is_array(new Date())).toBeFalsy();
125
- });
126
- });
127
-
128
- describe('Структурированные данные', () => {
129
- test('Array не является массивом', () => {
130
- expect(is_array(Array)).toBeFalsy();
131
- });
132
-
133
- test('Экземпляр Map не является массивом', () => {
134
- expect(is_array(Map)).toBeFalsy();
135
- expect(is_array(new Map())).toBeFalsy();
136
- });
137
-
138
- test('Экземпляр Set не является массивом', () => {
139
- expect(is_array(Set)).toBeFalsy();
140
- expect(is_array(new Set())).toBeFalsy();
141
- });
142
-
143
- test('WeakMap не является массивом', () => {
144
- expect(is_array(WeakMap)).toBeFalsy();
145
- expect(is_array(new WeakMap())).toBeFalsy();
146
- });
147
-
148
- test('WeakSet не является массивом', () => {
149
- expect(is_array(WeakSet)).toBeFalsy();
150
- expect(is_array(new WeakSet())).toBeFalsy();
151
- });
152
-
153
- test('ArrayBuffer не является массивом', () => {
154
- expect(is_array(ArrayBuffer)).toBeFalsy();
155
- expect(is_array(new ArrayBuffer(8))).toBeFalsy();
156
- });
157
-
158
- test('SharedArrayBuffer не является массивом', () => {
159
- expect(is_array(SharedArrayBuffer)).toBeFalsy();
160
- expect(is_array(new SharedArrayBuffer(8))).toBeFalsy();
161
- });
162
-
163
- test('DataView не является массивом', () => {
164
- expect(is_array(DataView)).toBeFalsy();
165
- expect(is_array(new DataView(new ArrayBuffer(8)))).toBeFalsy();
166
- });
167
-
168
- test('Typed Arrays не являются массивами', () => {
169
- const typedArrays = [
170
- Int8Array,
171
- Uint8Array,
172
- Uint8ClampedArray,
173
- Int16Array,
174
- Uint16Array,
175
- Int32Array,
176
- Uint32Array,
177
- Float32Array,
178
- Float64Array,
179
- BigInt64Array,
180
- BigUint64Array,
181
- ];
182
- typedArrays.forEach((ArrayType) => {
183
- expect(is_array(ArrayType)).toBeFalsy();
184
- expect(is_array(new ArrayType(8))).toBeFalsy();
185
- });
186
- });
187
- });
188
-
189
- describe('Объекты абстракции управления', () => {
190
- test('Promise не является массивом', () => {
191
- expect(is_array(new Promise(() => {}))).toBeFalsy();
192
- });
193
-
194
- test('Generator не является массивом', () => {
195
- function* gen() {}
196
- expect(is_array(gen())).toBeFalsy();
197
- });
198
-
199
- test('GeneratorFunction не является массивом', () => {
200
- function* gen() {}
201
- expect(is_array(gen.constructor)).toBeFalsy();
202
- });
203
-
204
- test('AsyncFunction не является массивом', () => {
205
- async function func() {}
206
- expect(is_array(func)).toBeFalsy();
207
- });
208
-
209
- test('AsyncGenerator не является массивом', () => {
210
- async function* gen() {}
211
- expect(is_array(gen())).toBeFalsy();
212
- });
213
-
214
- test('AsyncGeneratorFunction не является массивом', () => {
215
- async function* gen() {}
216
- expect(is_array(gen.constructor)).toBeFalsy();
217
- });
218
- });
219
-
220
- describe('Отражение', () => {
221
- test('Reflect не является массивом', () => {
222
- expect(is_array(Reflect)).toBeFalsy();
223
- });
224
- });
225
-
226
- describe('Интернационализация', () => {
227
- test('Intl не является массивом', () => {
228
- expect(is_array(Intl)).toBeFalsy();
229
- });
230
- });
231
-
232
- describe('Обработка ошибок', () => {
233
- const errorTypes = [
234
- Error,
235
- EvalError,
236
- RangeError,
237
- ReferenceError,
238
- SyntaxError,
239
- TypeError,
240
- URIError,
241
- ];
242
-
243
- // Тестируем все ошибки из списка
244
- errorTypes.forEach((errorType) => {
245
- test(`${errorType.name} не является массивом`, () => {
246
- expect(is_array(errorType)).toBeFalsy();
247
- });
248
- });
249
- });
250
-
251
- describe('Веб-API (объекты, зависящие от браузера)', () => {
252
- test('Window не является массивом', () => {
253
- expect(is_array(Window)).toBeFalsy();
254
- });
255
-
256
- test('document не является массивом', () => {
257
- expect(is_array(document)).toBeFalsy();
258
- });
259
-
260
- test('navigator не является массивом', () => {
261
- expect(is_array(navigator)).toBeFalsy();
262
- });
263
-
264
- test('location не является массивом', () => {
265
- expect(is_array(location)).toBeFalsy();
266
- });
267
-
268
- test('Function не является массивом', () => {
269
- expect(is_array(Function)).toBeFalsy();
270
- });
271
-
272
- test('screen не является массивом', () => {
273
- expect(is_array(screen)).toBeFalsy();
274
- });
275
-
276
- test('history не является массивом', () => {
277
- expect(is_array(history)).toBeFalsy();
278
- });
279
-
280
- test('localStorage не является массивом', () => {
281
- expect(is_array(localStorage)).toBeFalsy();
282
- });
283
-
284
- test('Function не является массивом', () => {
285
- expect(is_array(Function)).toBeFalsy();
286
- });
287
-
288
- test('sessionStorage не является массивом', () => {
289
- expect(is_array(sessionStorage)).toBeFalsy();
290
- });
291
-
292
- test('XMLHttpRequest не является массивом', () => {
293
- expect(is_array(XMLHttpRequest)).toBeFalsy();
294
- });
295
-
296
- test('WebSocket не является массивом', () => {
297
- expect(is_array(WebSocket)).toBeFalsy();
298
- expect(is_array(new WebSocket('ws://localhost'))).toBeFalsy();
299
- });
300
-
301
- test('Event не является массивом', () => {
302
- expect(is_array(Event)).toBeFalsy();
303
- expect(is_array(new Event('click'))).toBeFalsy();
304
- });
305
-
306
- test('CustomEvent не является массивом', () => {
307
- expect(is_array(CustomEvent)).toBeFalsy();
308
- expect(is_array(new CustomEvent('test'))).toBeFalsy();
309
- });
310
-
311
- test('AbortController не является массивом', () => {
312
- expect(is_array(AbortController)).toBeFalsy();
313
- expect(is_array(new AbortController())).toBeFalsy();
314
- });
315
-
316
- test('FormData не является массивом', () => {
317
- expect(is_array(FormData)).toBeFalsy();
318
- });
319
-
320
- test('Blob не является массивом', () => {
321
- expect(is_array(Blob)).toBeFalsy();
322
- expect(is_array(new Blob([]))).toBeFalsy();
323
- });
324
-
325
- test('File не является массивом', () => {
326
- expect(is_array(File)).toBeFalsy();
327
- expect(is_array(new File([], 'test.txt'))).toBeFalsy();
328
- });
329
-
330
- test('FileReader не является массивом', () => {
331
- expect(is_array(FileReader)).toBeFalsy();
332
- expect(is_array(new FileReader())).toBeFalsy();
333
- });
334
-
335
- test('Performance не является массивом', () => {
336
- expect(is_array(Performance)).toBeFalsy();
337
- });
338
- });
339
-
340
- describe('Веб-хранилище и сетевое взаимодействие', () => {
341
- test('URL не является массивом', () => {
342
- expect(is_array(URL)).toBeFalsy();
343
- });
344
-
345
- test('URLSearchParams не является массивом', () => {
346
- expect(is_array(URLSearchParams)).toBeFalsy();
347
- });
348
-
349
- test('Location не является массивом', () => {
350
- expect(is_array(Location)).toBeFalsy();
351
- });
352
-
353
- test('Cookies не является массивом', () => {
354
- expect(is_array(document.cookie)).toBeFalsy();
355
- });
356
-
357
- test('IndexedDB не является массивом', () => {
358
- expect(is_array(window.indexedDB)).toBeFalsy();
359
- });
360
- });
361
-
362
- describe('Другие', () => {
363
- test('JSON не является массивом', () => {
364
- expect(is_array(JSON)).toBeFalsy();
365
- });
366
-
367
- test('Math не является массивом', () => {
368
- expect(is_array(Math)).toBeFalsy();
369
- });
370
-
371
- test('console не является массивом', () => {
372
- expect(is_array(console)).toBeFalsy();
373
- });
374
-
375
- test('setTimeout не является массивом', () => {
376
- expect(is_array(setTimeout)).toBeFalsy();
377
- });
378
-
379
- test('clearTimeout не является массивом', () => {
380
- expect(is_array(clearTimeout)).toBeFalsy();
381
- });
382
-
383
- test('setInterval не является массивом', () => {
384
- expect(is_array(setInterval)).toBeFalsy();
385
- });
386
-
387
- test('clearInterval не является массивом', () => {
388
- expect(is_array(clearInterval)).toBeFalsy();
389
- });
390
-
391
- test('setImmediate не является массивом', () => {
392
- expect(is_array(setImmediate)).toBeFalsy();
393
- });
394
-
395
- test('clearImmediate не является массивом', () => {
396
- expect(is_array(clearImmediate)).toBeFalsy();
397
- });
398
-
399
- test('process не является массивом', () => {
400
- expect(is_array(process)).toBeFalsy();
401
- });
402
- });
403
- });
404
- });
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { is_array } from '../../index.mjs';
3
+
4
+ class stdClass {}
5
+
6
+ describe('Функция is_array', () => {
7
+ describe('Примитивные значения и базовые типы', () => {
8
+ test('false не является массивом', () => {
9
+ expect(is_array(false)).toBeFalsy();
10
+ });
11
+
12
+ test('true не является массивом', () => {
13
+ expect(is_array(true)).toBeFalsy();
14
+ });
15
+
16
+ test('Число 3 не является массивом', () => {
17
+ expect(is_array(3)).toBeFalsy();
18
+ });
19
+
20
+ test('Число 3.14 не является массивом', () => {
21
+ expect(is_array(3.14)).toBeFalsy();
22
+ });
23
+
24
+ test('Строка "string" не является массивом', () => {
25
+ expect(is_array('string')).toBeFalsy();
26
+ });
27
+
28
+ test('null не является массивом', () => {
29
+ expect(is_array(null)).toBeFalsy();
30
+ });
31
+
32
+ test('undefined не является массивом', () => {
33
+ expect(is_array(undefined)).toBeFalsy();
34
+ });
35
+
36
+ test('NaN не является массивом', () => {
37
+ expect(is_array(NaN)).toBeFalsy();
38
+ });
39
+
40
+ test('Symbol не является массивом', () => {
41
+ expect(is_array(Symbol())).toBeFalsy();
42
+ });
43
+ });
44
+
45
+ describe('Массивы и объекты', () => {
46
+ test('Обычный массив [1, 2] является массивом', () => {
47
+ expect(is_array([1, 2])).toBeTruthy();
48
+ });
49
+
50
+ test('Объект с парами ключ-значение {0: 1, 1: 2} является ассоциативным массивом', () => {
51
+ expect(is_array({ 0: 1, 1: 2 })).toBeTruthy();
52
+ });
53
+
54
+ test('Объект {foo: "bar"} является ассоциативным массивом', () => {
55
+ expect(is_array({ foo: 'bar' })).toBeTruthy();
56
+ });
57
+
58
+ test('Объект, созданный через Object.create(null), является ассоциативным массивом', () => {
59
+ const noProtoObject = Object.create(null);
60
+ noProtoObject.foo = 'bar';
61
+ expect(is_array(noProtoObject)).toBeTruthy();
62
+ });
63
+
64
+ test('Proxy является массивом', () => {
65
+ const handler = {};
66
+ const proxy = new Proxy([1, 2, 3], handler); // Проксируем массив
67
+ expect(is_array(proxy)).toBeTruthy();
68
+ });
69
+ });
70
+
71
+ describe('Не массивы', () => {
72
+ describe('Классы', () => {
73
+ test('Экземпляр класса stdClass не является массивом', () => {
74
+ expect(is_array(new stdClass())).toBeFalsy();
75
+ });
76
+
77
+ test('Класс stdClass сам по себе не является массивом', () => {
78
+ expect(is_array(stdClass)).toBeFalsy();
79
+ });
80
+ });
81
+
82
+ describe('Глобальные объекты', () => {
83
+ // Массив глобальных объектов, которые не являются массивами
84
+ const globalObjects = [Object, Function, Boolean];
85
+
86
+ globalObjects.forEach((globalObj) => {
87
+ test(`${globalObj.name} не является массивом`, () => {
88
+ expect(is_array(globalObj)).toBeFalsy();
89
+ });
90
+ });
91
+
92
+ test('Symbol не является массивом', () => {
93
+ expect(is_array(Symbol)).toBeFalsy();
94
+ });
95
+ });
96
+
97
+ describe('Обработка текста', () => {
98
+ test('String не является массивом', () => {
99
+ expect(is_array(String)).toBeFalsy();
100
+ });
101
+
102
+ test('RegExp не является массивом', () => {
103
+ expect(is_array(RegExp)).toBeFalsy();
104
+ expect(is_array(/abc/)).toBeFalsy();
105
+ });
106
+ });
107
+
108
+ describe('Числа и даты', () => {
109
+ test('Number не является массивом', () => {
110
+ expect(is_array(Number)).toBeFalsy();
111
+ });
112
+
113
+ test('BigInt не является массивом', () => {
114
+ expect(is_array(BigInt)).toBeFalsy();
115
+ expect(is_array(123n)).toBeFalsy();
116
+ });
117
+
118
+ test('Math не является массивом', () => {
119
+ expect(is_array(Math)).toBeFalsy();
120
+ });
121
+
122
+ test('Date не является массивом', () => {
123
+ expect(is_array(Date)).toBeFalsy();
124
+ expect(is_array(new Date())).toBeFalsy();
125
+ });
126
+ });
127
+
128
+ describe('Структурированные данные', () => {
129
+ test('Array не является массивом', () => {
130
+ expect(is_array(Array)).toBeFalsy();
131
+ });
132
+
133
+ test('Экземпляр Map не является массивом', () => {
134
+ expect(is_array(Map)).toBeFalsy();
135
+ expect(is_array(new Map())).toBeFalsy();
136
+ });
137
+
138
+ test('Экземпляр Set не является массивом', () => {
139
+ expect(is_array(Set)).toBeFalsy();
140
+ expect(is_array(new Set())).toBeFalsy();
141
+ });
142
+
143
+ test('WeakMap не является массивом', () => {
144
+ expect(is_array(WeakMap)).toBeFalsy();
145
+ expect(is_array(new WeakMap())).toBeFalsy();
146
+ });
147
+
148
+ test('WeakSet не является массивом', () => {
149
+ expect(is_array(WeakSet)).toBeFalsy();
150
+ expect(is_array(new WeakSet())).toBeFalsy();
151
+ });
152
+
153
+ test('ArrayBuffer не является массивом', () => {
154
+ expect(is_array(ArrayBuffer)).toBeFalsy();
155
+ expect(is_array(new ArrayBuffer(8))).toBeFalsy();
156
+ });
157
+
158
+ test('SharedArrayBuffer не является массивом', () => {
159
+ expect(is_array(SharedArrayBuffer)).toBeFalsy();
160
+ expect(is_array(new SharedArrayBuffer(8))).toBeFalsy();
161
+ });
162
+
163
+ test('DataView не является массивом', () => {
164
+ expect(is_array(DataView)).toBeFalsy();
165
+ expect(is_array(new DataView(new ArrayBuffer(8)))).toBeFalsy();
166
+ });
167
+
168
+ test('Typed Arrays не являются массивами', () => {
169
+ const typedArrays = [
170
+ Int8Array,
171
+ Uint8Array,
172
+ Uint8ClampedArray,
173
+ Int16Array,
174
+ Uint16Array,
175
+ Int32Array,
176
+ Uint32Array,
177
+ Float32Array,
178
+ Float64Array,
179
+ BigInt64Array,
180
+ BigUint64Array,
181
+ ];
182
+ typedArrays.forEach((ArrayType) => {
183
+ expect(is_array(ArrayType)).toBeFalsy();
184
+ expect(is_array(new ArrayType(8))).toBeFalsy();
185
+ });
186
+ });
187
+ });
188
+
189
+ describe('Объекты абстракции управления', () => {
190
+ test('Promise не является массивом', () => {
191
+ expect(is_array(new Promise(() => {}))).toBeFalsy();
192
+ });
193
+
194
+ test('Generator не является массивом', () => {
195
+ function* gen() {}
196
+ expect(is_array(gen())).toBeFalsy();
197
+ });
198
+
199
+ test('GeneratorFunction не является массивом', () => {
200
+ function* gen() {}
201
+ expect(is_array(gen.constructor)).toBeFalsy();
202
+ });
203
+
204
+ test('AsyncFunction не является массивом', () => {
205
+ async function func() {}
206
+ expect(is_array(func)).toBeFalsy();
207
+ });
208
+
209
+ test('AsyncGenerator не является массивом', () => {
210
+ async function* gen() {}
211
+ expect(is_array(gen())).toBeFalsy();
212
+ });
213
+
214
+ test('AsyncGeneratorFunction не является массивом', () => {
215
+ async function* gen() {}
216
+ expect(is_array(gen.constructor)).toBeFalsy();
217
+ });
218
+ });
219
+
220
+ describe('Отражение', () => {
221
+ test('Reflect не является массивом', () => {
222
+ expect(is_array(Reflect)).toBeFalsy();
223
+ });
224
+ });
225
+
226
+ describe('Интернационализация', () => {
227
+ test('Intl не является массивом', () => {
228
+ expect(is_array(Intl)).toBeFalsy();
229
+ });
230
+ });
231
+
232
+ describe('Обработка ошибок', () => {
233
+ const errorTypes = [
234
+ Error,
235
+ EvalError,
236
+ RangeError,
237
+ ReferenceError,
238
+ SyntaxError,
239
+ TypeError,
240
+ URIError,
241
+ ];
242
+
243
+ // Тестируем все ошибки из списка
244
+ errorTypes.forEach((errorType) => {
245
+ test(`${errorType.name} не является массивом`, () => {
246
+ expect(is_array(errorType)).toBeFalsy();
247
+ });
248
+ });
249
+ });
250
+
251
+ describe('Веб-API (объекты, зависящие от браузера)', () => {
252
+ test('Window не является массивом', () => {
253
+ expect(is_array(Window)).toBeFalsy();
254
+ });
255
+
256
+ test('document не является массивом', () => {
257
+ expect(is_array(document)).toBeFalsy();
258
+ });
259
+
260
+ test('navigator не является массивом', () => {
261
+ expect(is_array(navigator)).toBeFalsy();
262
+ });
263
+
264
+ test('location не является массивом', () => {
265
+ expect(is_array(location)).toBeFalsy();
266
+ });
267
+
268
+ test('Function не является массивом', () => {
269
+ expect(is_array(Function)).toBeFalsy();
270
+ });
271
+
272
+ test('screen не является массивом', () => {
273
+ expect(is_array(screen)).toBeFalsy();
274
+ });
275
+
276
+ test('history не является массивом', () => {
277
+ expect(is_array(history)).toBeFalsy();
278
+ });
279
+
280
+ test('localStorage не является массивом', () => {
281
+ expect(is_array(localStorage)).toBeFalsy();
282
+ });
283
+
284
+ test('Function не является массивом', () => {
285
+ expect(is_array(Function)).toBeFalsy();
286
+ });
287
+
288
+ test('sessionStorage не является массивом', () => {
289
+ expect(is_array(sessionStorage)).toBeFalsy();
290
+ });
291
+
292
+ test('XMLHttpRequest не является массивом', () => {
293
+ expect(is_array(XMLHttpRequest)).toBeFalsy();
294
+ });
295
+
296
+ test('WebSocket не является массивом', () => {
297
+ expect(is_array(WebSocket)).toBeFalsy();
298
+ expect(is_array(new WebSocket('ws://localhost'))).toBeFalsy();
299
+ });
300
+
301
+ test('Event не является массивом', () => {
302
+ expect(is_array(Event)).toBeFalsy();
303
+ expect(is_array(new Event('click'))).toBeFalsy();
304
+ });
305
+
306
+ test('CustomEvent не является массивом', () => {
307
+ expect(is_array(CustomEvent)).toBeFalsy();
308
+ expect(is_array(new CustomEvent('test'))).toBeFalsy();
309
+ });
310
+
311
+ test('AbortController не является массивом', () => {
312
+ expect(is_array(AbortController)).toBeFalsy();
313
+ expect(is_array(new AbortController())).toBeFalsy();
314
+ });
315
+
316
+ test('FormData не является массивом', () => {
317
+ expect(is_array(FormData)).toBeFalsy();
318
+ });
319
+
320
+ test('Blob не является массивом', () => {
321
+ expect(is_array(Blob)).toBeFalsy();
322
+ expect(is_array(new Blob([]))).toBeFalsy();
323
+ });
324
+
325
+ test('File не является массивом', () => {
326
+ expect(is_array(File)).toBeFalsy();
327
+ expect(is_array(new File([], 'test.txt'))).toBeFalsy();
328
+ });
329
+
330
+ test('FileReader не является массивом', () => {
331
+ expect(is_array(FileReader)).toBeFalsy();
332
+ expect(is_array(new FileReader())).toBeFalsy();
333
+ });
334
+
335
+ test('Performance не является массивом', () => {
336
+ expect(is_array(Performance)).toBeFalsy();
337
+ });
338
+ });
339
+
340
+ describe('Веб-хранилище и сетевое взаимодействие', () => {
341
+ test('URL не является массивом', () => {
342
+ expect(is_array(URL)).toBeFalsy();
343
+ });
344
+
345
+ test('URLSearchParams не является массивом', () => {
346
+ expect(is_array(URLSearchParams)).toBeFalsy();
347
+ });
348
+
349
+ test('Location не является массивом', () => {
350
+ expect(is_array(Location)).toBeFalsy();
351
+ });
352
+
353
+ test('Cookies не является массивом', () => {
354
+ expect(is_array(document.cookie)).toBeFalsy();
355
+ });
356
+
357
+ test('IndexedDB не является массивом', () => {
358
+ expect(is_array(window.indexedDB)).toBeFalsy();
359
+ });
360
+ });
361
+
362
+ describe('Другие', () => {
363
+ test('JSON не является массивом', () => {
364
+ expect(is_array(JSON)).toBeFalsy();
365
+ });
366
+
367
+ test('Math не является массивом', () => {
368
+ expect(is_array(Math)).toBeFalsy();
369
+ });
370
+
371
+ test('console не является массивом', () => {
372
+ expect(is_array(console)).toBeFalsy();
373
+ });
374
+
375
+ test('setTimeout не является массивом', () => {
376
+ expect(is_array(setTimeout)).toBeFalsy();
377
+ });
378
+
379
+ test('clearTimeout не является массивом', () => {
380
+ expect(is_array(clearTimeout)).toBeFalsy();
381
+ });
382
+
383
+ test('setInterval не является массивом', () => {
384
+ expect(is_array(setInterval)).toBeFalsy();
385
+ });
386
+
387
+ test('clearInterval не является массивом', () => {
388
+ expect(is_array(clearInterval)).toBeFalsy();
389
+ });
390
+
391
+ test('setImmediate не является массивом', () => {
392
+ expect(is_array(setImmediate)).toBeFalsy();
393
+ });
394
+
395
+ test('clearImmediate не является массивом', () => {
396
+ expect(is_array(clearImmediate)).toBeFalsy();
397
+ });
398
+
399
+ test('process не является массивом', () => {
400
+ expect(is_array(process)).toBeFalsy();
401
+ });
402
+ });
403
+ });
404
+ });