@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.
- package/CHANGELOG.md +14 -0
- package/README.md +19 -1
- package/docs/classes/Value/constructor.md +48 -0
- package/docs/classes/Value/get.md +51 -0
- package/docs/classes/Value/getType.md +71 -0
- package/docs/classes/Value/isArray.md +67 -0
- package/docs/classes/Value/isAssoc.md +68 -0
- package/docs/classes/Value/isBigInt.md +52 -0
- package/docs/classes/Value/isBool.md +60 -0
- package/docs/classes/Value/isBoolean.md +60 -0
- package/docs/classes/Value/isClass.md +55 -0
- package/docs/classes/Value/isEmpty.md +84 -0
- package/docs/classes/Value/isFloat.md +52 -0
- package/docs/classes/Value/isFunction.md +60 -0
- package/docs/classes/Value/isInfinity.md +60 -0
- package/docs/classes/Value/isInt.md +52 -0
- package/docs/classes/Value/isInteger.md +52 -0
- package/docs/classes/Value/isList.md +59 -0
- package/docs/classes/Value/isNaN.md +79 -0
- package/docs/classes/Value/isNull.md +59 -0
- package/docs/classes/Value/isNumber.md +80 -0
- package/docs/classes/Value/isNumeric.md +79 -0
- package/docs/classes/Value/isObject.md +68 -0
- package/docs/classes/Value/isScalar.md +72 -0
- package/docs/classes/Value/isString.md +67 -0
- package/docs/classes/Value/isSymbol.md +75 -0
- package/docs/classes/Value/isUndefined.md +67 -0
- package/docs/classes/Value/print.md +164 -0
- package/docs/classes/Value/printType.md +158 -0
- package/docs/classes/Value/setType.md +79 -0
- package/docs/classes/Value/toArray.md +85 -0
- package/docs/classes/Value/toAssoc.md +85 -0
- package/docs/classes/Value/toBool.md +71 -0
- package/docs/classes/Value/toBoolean.md +71 -0
- package/docs/classes/Value/toFloat.md +72 -0
- package/docs/classes/Value/toInt.md +72 -0
- package/docs/classes/Value/toInteger.md +72 -0
- package/docs/classes/Value/toList.md +77 -0
- package/docs/classes/Value/toObject.md +78 -0
- package/docs/classes/Value/toPrint.md +115 -0
- package/docs/classes/Value/toPrintType.md +110 -0
- package/docs/classes/Value/toString.md +134 -0
- package/docs/classes/Value.md +113 -0
- package/docs/classes.md +2 -0
- package/docs/constants.md +47 -0
- package/docs/helpers/value.md +95 -0
- package/docs/helpers.md +2 -0
- package/index.mjs +3 -0
- package/package.json +2 -2
- package/src/classes/Convert.mjs +818 -819
- package/src/classes/Type.mjs +1284 -1285
- package/src/classes/Value.mjs +2846 -0
- package/src/constants.mjs +14 -0
- package/src/helpers/array.mjs +107 -107
- package/src/helpers/empty.mjs +70 -70
- package/src/helpers/gettype.mjs +149 -133
- package/src/helpers/is_array.mjs +128 -128
- package/src/helpers/is_assoc.mjs +51 -51
- package/src/helpers/is_bigint.mjs +47 -47
- package/src/helpers/is_bool.mjs +43 -43
- package/src/helpers/is_boolean.mjs +43 -43
- package/src/helpers/is_class.mjs +87 -87
- package/src/helpers/is_float.mjs +67 -67
- package/src/helpers/is_function.mjs +74 -74
- package/src/helpers/is_infinity.mjs +52 -52
- package/src/helpers/is_int.mjs +57 -57
- package/src/helpers/is_integer.mjs +74 -74
- package/src/helpers/is_list.mjs +43 -43
- package/src/helpers/is_nan.mjs +51 -51
- package/src/helpers/is_null.mjs +37 -37
- package/src/helpers/is_number.mjs +49 -49
- package/src/helpers/is_numeric.mjs +64 -64
- package/src/helpers/is_object.mjs +72 -72
- package/src/helpers/is_scalar.mjs +45 -45
- package/src/helpers/is_string.mjs +46 -46
- package/src/helpers/is_symbol.mjs +46 -46
- package/src/helpers/is_undefined.mjs +44 -44
- package/src/helpers/print.mjs +245 -245
- package/src/helpers/print_type.mjs +261 -261
- package/src/helpers/settype.mjs +101 -101
- package/src/helpers/to_array.mjs +118 -118
- package/src/helpers/to_assoc.mjs +98 -98
- package/src/helpers/to_bool.mjs +68 -68
- package/src/helpers/to_boolean.mjs +64 -64
- package/src/helpers/to_float.mjs +72 -72
- package/src/helpers/to_int.mjs +93 -93
- package/src/helpers/to_integer.mjs +81 -81
- package/src/helpers/to_list.mjs +56 -56
- package/src/helpers/to_object.mjs +94 -94
- package/src/helpers/to_string.mjs +157 -157
- package/src/helpers/value.mjs +92 -0
- package/tests/classes/Convert.test.mjs +398 -399
- package/tests/classes/Type.test.mjs +1262 -1263
- package/tests/classes/Value.test.mjs +423 -0
- package/tests/constants.test.mjs +75 -0
- package/tests/helpers/array.test.mjs +58 -58
- package/tests/helpers/empty.test.mjs +22 -22
- package/tests/helpers/gettype.test.mjs +74 -74
- package/tests/helpers/is_array.test.mjs +404 -404
- package/tests/helpers/is_assoc.test.mjs +42 -42
- package/tests/helpers/is_bigint.test.mjs +51 -51
- package/tests/helpers/is_bool.test.mjs +43 -43
- package/tests/helpers/is_boolean.test.mjs +43 -43
- package/tests/helpers/is_class.test.mjs +84 -84
- package/tests/helpers/is_float.test.mjs +87 -87
- package/tests/helpers/is_function.test.mjs +83 -83
- package/tests/helpers/is_infinity.test.mjs +46 -46
- package/tests/helpers/is_int.test.mjs +45 -45
- package/tests/helpers/is_integer.test.mjs +64 -64
- package/tests/helpers/is_list.test.mjs +42 -42
- package/tests/helpers/is_nan.test.mjs +43 -43
- package/tests/helpers/is_null.test.mjs +17 -17
- package/tests/helpers/is_number.test.mjs +25 -25
- package/tests/helpers/is_numeric.test.mjs +30 -30
- package/tests/helpers/is_object.test.mjs +52 -52
- package/tests/helpers/is_scalar.test.mjs +21 -21
- package/tests/helpers/is_string.test.mjs +20 -20
- package/tests/helpers/is_symbol.test.mjs +20 -20
- package/tests/helpers/is_undefined.test.mjs +18 -18
- package/tests/helpers/print.test.mjs +62 -62
- package/tests/helpers/print_type.test.mjs +62 -62
- package/tests/helpers/settype.test.mjs +34 -34
- package/tests/helpers/to_array.test.mjs +38 -38
- package/tests/helpers/to_assoc.test.mjs +33 -33
- package/tests/helpers/to_bool.test.mjs +51 -51
- package/tests/helpers/to_boolean.test.mjs +51 -51
- package/tests/helpers/to_float.test.mjs +26 -26
- package/tests/helpers/to_int.test.mjs +48 -48
- package/tests/helpers/to_integer.test.mjs +48 -48
- package/tests/helpers/to_list.test.mjs +32 -32
- package/tests/helpers/to_object.test.mjs +36 -36
- package/tests/helpers/to_string.test.mjs +71 -71
- package/tests/helpers/value.test.mjs +68 -0
|
@@ -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
|
+
});
|