@rogolev/value 0.0.1
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/.prettierignore +4 -0
- package/CHANGELOG.md +56 -0
- package/LICENSE +41 -0
- package/README.md +91 -0
- package/babel.config.json +20 -0
- package/docs/helpers/array.md +80 -0
- package/docs/helpers/empty.md +77 -0
- package/docs/helpers/gettype.md +69 -0
- package/docs/helpers/is_array.md +105 -0
- package/docs/helpers/is_assoc.md +59 -0
- package/docs/helpers/is_bigint.md +57 -0
- package/docs/helpers/is_bool.md +50 -0
- package/docs/helpers/is_boolean.md +50 -0
- package/docs/helpers/is_class.md +73 -0
- package/docs/helpers/is_float.md +71 -0
- package/docs/helpers/is_function.md +62 -0
- package/docs/helpers/is_infinity.md +61 -0
- package/docs/helpers/is_int.md +81 -0
- package/docs/helpers/is_integer.md +82 -0
- package/docs/helpers/is_list.md +51 -0
- package/docs/helpers/is_nan.md +59 -0
- package/docs/helpers/is_null.md +49 -0
- package/docs/helpers/is_number.md +67 -0
- package/docs/helpers/is_numeric.md +76 -0
- package/docs/helpers/is_object.md +69 -0
- package/docs/helpers/is_scalar.md +60 -0
- package/docs/helpers/is_string.md +58 -0
- package/docs/helpers/is_symbol.md +58 -0
- package/docs/helpers/is_undefined.md +56 -0
- package/docs/helpers/print.md +187 -0
- package/docs/helpers/print_type.md +225 -0
- package/docs/helpers/settype.md +78 -0
- package/docs/helpers/to_array.md +106 -0
- package/docs/helpers/to_assoc.md +91 -0
- package/docs/helpers/to_bool.md +76 -0
- package/docs/helpers/to_boolean.md +77 -0
- package/docs/helpers/to_float.md +70 -0
- package/docs/helpers/to_int.md +87 -0
- package/docs/helpers/to_integer.md +87 -0
- package/docs/helpers/to_list.md +47 -0
- package/docs/helpers/to_object.md +76 -0
- package/docs/helpers/to_string.md +134 -0
- package/docs/helpers.md +51 -0
- package/docs/types/NaN.md +30 -0
- package/docs/types/array.md +252 -0
- package/docs/types/bigint.md +34 -0
- package/docs/types/boolean.md +47 -0
- package/docs/types/class.md +36 -0
- package/docs/types/float.md +35 -0
- package/docs/types/function.md +121 -0
- package/docs/types/infinity.md +32 -0
- package/docs/types/integer.md +35 -0
- package/docs/types/null.md +23 -0
- package/docs/types/object.md +62 -0
- package/docs/types/string.md +33 -0
- package/docs/types/symbol.md +29 -0
- package/docs/types/undefined.md +25 -0
- package/docs/types.md +44 -0
- package/eslint.config.mjs +1664 -0
- package/index.mjs +37 -0
- package/jest.config.mjs +31 -0
- package/package.json +47 -0
- package/prettier.config.mjs +224 -0
- package/src/helpers/array.mjs +107 -0
- package/src/helpers/empty.mjs +70 -0
- package/src/helpers/gettype.mjs +133 -0
- package/src/helpers/is_array.mjs +128 -0
- package/src/helpers/is_assoc.mjs +51 -0
- package/src/helpers/is_bigint.mjs +47 -0
- package/src/helpers/is_bool.mjs +43 -0
- package/src/helpers/is_boolean.mjs +43 -0
- package/src/helpers/is_class.mjs +87 -0
- package/src/helpers/is_float.mjs +67 -0
- package/src/helpers/is_function.mjs +74 -0
- package/src/helpers/is_infinity.mjs +52 -0
- package/src/helpers/is_int.mjs +57 -0
- package/src/helpers/is_integer.mjs +74 -0
- package/src/helpers/is_list.mjs +43 -0
- package/src/helpers/is_nan.mjs +51 -0
- package/src/helpers/is_null.mjs +37 -0
- package/src/helpers/is_number.mjs +49 -0
- package/src/helpers/is_numeric.mjs +64 -0
- package/src/helpers/is_object.mjs +72 -0
- package/src/helpers/is_scalar.mjs +45 -0
- package/src/helpers/is_string.mjs +46 -0
- package/src/helpers/is_symbol.mjs +46 -0
- package/src/helpers/is_undefined.mjs +44 -0
- package/src/helpers/print.mjs +245 -0
- package/src/helpers/print_type.mjs +261 -0
- package/src/helpers/settype.mjs +101 -0
- package/src/helpers/to_array.mjs +118 -0
- package/src/helpers/to_assoc.mjs +98 -0
- package/src/helpers/to_bool.mjs +68 -0
- package/src/helpers/to_boolean.mjs +64 -0
- package/src/helpers/to_float.mjs +72 -0
- package/src/helpers/to_int.mjs +93 -0
- package/src/helpers/to_integer.mjs +81 -0
- package/src/helpers/to_list.mjs +56 -0
- package/src/helpers/to_object.mjs +94 -0
- package/src/helpers/to_string.mjs +157 -0
- package/tests/helpers/array.test.mjs +58 -0
- package/tests/helpers/empty.test.mjs +22 -0
- package/tests/helpers/gettype.test.mjs +74 -0
- package/tests/helpers/is_array.test.mjs +404 -0
- package/tests/helpers/is_assoc.test.mjs +42 -0
- package/tests/helpers/is_bigint.test.mjs +51 -0
- package/tests/helpers/is_bool.test.mjs +43 -0
- package/tests/helpers/is_boolean.test.mjs +43 -0
- package/tests/helpers/is_class.test.mjs +84 -0
- package/tests/helpers/is_float.test.mjs +87 -0
- package/tests/helpers/is_function.test.mjs +83 -0
- package/tests/helpers/is_infinity.test.mjs +46 -0
- package/tests/helpers/is_int.test.mjs +45 -0
- package/tests/helpers/is_integer.test.mjs +64 -0
- package/tests/helpers/is_list.test.mjs +42 -0
- package/tests/helpers/is_nan.test.mjs +43 -0
- package/tests/helpers/is_null.test.mjs +17 -0
- package/tests/helpers/is_number.test.mjs +25 -0
- package/tests/helpers/is_numeric.test.mjs +30 -0
- package/tests/helpers/is_object.test.mjs +52 -0
- package/tests/helpers/is_scalar.test.mjs +21 -0
- package/tests/helpers/is_string.test.mjs +20 -0
- package/tests/helpers/is_symbol.test.mjs +20 -0
- package/tests/helpers/is_undefined.test.mjs +18 -0
- package/tests/helpers/print.test.mjs +62 -0
- package/tests/helpers/print_type.test.mjs +62 -0
- package/tests/helpers/settype.test.mjs +34 -0
- package/tests/helpers/to_array.test.mjs +38 -0
- package/tests/helpers/to_assoc.test.mjs +33 -0
- package/tests/helpers/to_bool.test.mjs +51 -0
- package/tests/helpers/to_boolean.test.mjs +51 -0
- package/tests/helpers/to_float.test.mjs +26 -0
- package/tests/helpers/to_int.test.mjs +48 -0
- package/tests/helpers/to_integer.test.mjs +48 -0
- package/tests/helpers/to_list.test.mjs +32 -0
- package/tests/helpers/to_object.test.mjs +36 -0
- package/tests/helpers/to_string.test.mjs +71 -0
|
@@ -0,0 +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
|
+
});
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { expect, test } from '@jest/globals';
|
|
2
|
+
import { is_assoc } from '../../index.mjs';
|
|
3
|
+
|
|
4
|
+
describe('Функция is_assoc', () => {
|
|
5
|
+
test('должна возвращать true для ассоциативных массивов', () => {
|
|
6
|
+
expect(is_assoc({ foo: 'bar' })).toBe(true);
|
|
7
|
+
expect(is_assoc({})).toBe(true);
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
test('должна возвращать false для обычных массивов', () => {
|
|
11
|
+
expect(is_assoc([])).toBe(false);
|
|
12
|
+
expect(is_assoc([1, 2, 3])).toBe(false);
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
test('должна возвращать false для строк', () => {
|
|
16
|
+
expect(is_assoc('string')).toBe(false);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
test('должна возвращать false для чисел', () => {
|
|
20
|
+
expect(is_assoc(42)).toBe(false);
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
test('должна возвращать false для null и undefined', () => {
|
|
24
|
+
expect(is_assoc(null)).toBe(false);
|
|
25
|
+
expect(is_assoc(undefined)).toBe(false);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
test('должна возвращать false для логических значений', () => {
|
|
29
|
+
expect(is_assoc(true)).toBe(false);
|
|
30
|
+
expect(is_assoc(false)).toBe(false);
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
test('должна возвращать false для функций', () => {
|
|
34
|
+
function func() {}
|
|
35
|
+
expect(is_assoc(func)).toBe(false);
|
|
36
|
+
expect(is_assoc(() => {})).toBe(false);
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
test('должна возвращать false для символов', () => {
|
|
40
|
+
expect(is_assoc(Symbol('symbol'))).toBe(false);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { expect, test } from '@jest/globals';
|
|
2
|
+
import { is_bigint } from '../../index.mjs';
|
|
3
|
+
|
|
4
|
+
describe('Функция is_bigint', () => {
|
|
5
|
+
test('должна возвращать true для значений типа bigint', () => {
|
|
6
|
+
expect(is_bigint(BigInt(123456))).toBe(true);
|
|
7
|
+
expect(is_bigint(BigInt(-123456))).toBe(true);
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
test('должна возвращать false для чисел', () => {
|
|
11
|
+
expect(is_bigint(42)).toBe(false);
|
|
12
|
+
expect(is_bigint(-42)).toBe(false);
|
|
13
|
+
expect(is_bigint(0)).toBe(false);
|
|
14
|
+
expect(is_bigint(3.14)).toBe(false);
|
|
15
|
+
expect(is_bigint(-0.99)).toBe(false);
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
test('должна возвращать false для специальных чисел', () => {
|
|
19
|
+
expect(is_bigint(NaN)).toBe(false);
|
|
20
|
+
expect(is_bigint(Infinity)).toBe(false);
|
|
21
|
+
expect(is_bigint(-Infinity)).toBe(false);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
test('должна возвращать false для строк', () => {
|
|
25
|
+
expect(is_bigint('42')).toBe(false);
|
|
26
|
+
expect(is_bigint('3.14')).toBe(false);
|
|
27
|
+
expect(is_bigint('')).toBe(false);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
test('должна возвращать false для логических значений', () => {
|
|
31
|
+
expect(is_bigint(true)).toBe(false);
|
|
32
|
+
expect(is_bigint(false)).toBe(false);
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
test('должна возвращать false для null и undefined', () => {
|
|
36
|
+
expect(is_bigint(null)).toBe(false);
|
|
37
|
+
expect(is_bigint(undefined)).toBe(false);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
test('должна возвращать false для объектов и массивов', () => {
|
|
41
|
+
expect(is_bigint({})).toBe(false);
|
|
42
|
+
expect(is_bigint([])).toBe(false);
|
|
43
|
+
expect(is_bigint({ foo: 42 })).toBe(false);
|
|
44
|
+
expect(is_bigint([1, 2, 3])).toBe(false);
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
test('должна возвращать false для функций', () => {
|
|
48
|
+
expect(is_bigint(() => {})).toBe(false);
|
|
49
|
+
expect(is_bigint(() => {})).toBe(false);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { expect, test, describe } from '@jest/globals';
|
|
2
|
+
import { is_bool } from '../../index.mjs';
|
|
3
|
+
|
|
4
|
+
describe('Функция is_bool', () => {
|
|
5
|
+
test('должна возвращать true для значения true', () => {
|
|
6
|
+
expect(is_bool(true)).toBe(true);
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
test('должна возвращать true для значения false', () => {
|
|
10
|
+
expect(is_bool(false)).toBe(true);
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
test('должна возвращать false для значения числа', () => {
|
|
14
|
+
expect(is_bool(0)).toBe(false);
|
|
15
|
+
expect(is_bool(1)).toBe(false);
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
test('должна возвращать false для строки', () => {
|
|
19
|
+
expect(is_bool('true')).toBe(false);
|
|
20
|
+
expect(is_bool('false')).toBe(false);
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
test('должна возвращать false для объекта', () => {
|
|
24
|
+
expect(is_bool({})).toBe(false);
|
|
25
|
+
expect(is_bool([])).toBe(false);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
test('должна возвращать false для null', () => {
|
|
29
|
+
expect(is_bool(null)).toBe(false);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
test('должна возвращать false для undefined', () => {
|
|
33
|
+
expect(is_bool(undefined)).toBe(false);
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
test('должна возвращать false для функции', () => {
|
|
37
|
+
expect(is_bool(() => {})).toBe(false);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
test('должна возвращать false для объекта Boolean', () => {
|
|
41
|
+
expect(is_bool(new Boolean(true))).toBe(false);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { expect, test, describe } from '@jest/globals';
|
|
2
|
+
import { is_boolean } from '../../index.mjs';
|
|
3
|
+
|
|
4
|
+
describe('Функция is_boolean', () => {
|
|
5
|
+
test('должна возвращать true для значения true', () => {
|
|
6
|
+
expect(is_boolean(true)).toBe(true);
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
test('должна возвращать true для значения false', () => {
|
|
10
|
+
expect(is_boolean(false)).toBe(true);
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
test('должна возвращать false для значения числа', () => {
|
|
14
|
+
expect(is_boolean(0)).toBe(false);
|
|
15
|
+
expect(is_boolean(1)).toBe(false);
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
test('должна возвращать false для строки', () => {
|
|
19
|
+
expect(is_boolean('true')).toBe(false);
|
|
20
|
+
expect(is_boolean('false')).toBe(false);
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
test('должна возвращать false для объекта', () => {
|
|
24
|
+
expect(is_boolean({})).toBe(false);
|
|
25
|
+
expect(is_boolean([])).toBe(false);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
test('должна возвращать false для null', () => {
|
|
29
|
+
expect(is_boolean(null)).toBe(false);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
test('должна возвращать false для undefined', () => {
|
|
33
|
+
expect(is_boolean(undefined)).toBe(false);
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
test('должна возвращать false для функции', () => {
|
|
37
|
+
expect(is_boolean(() => {})).toBe(false);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
test('должна возвращать false для объекта Boolean', () => {
|
|
41
|
+
expect(is_boolean(new Boolean(true))).toBe(false);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { expect, test } from '@jest/globals';
|
|
2
|
+
import { is_class } from '../../index.mjs';
|
|
3
|
+
|
|
4
|
+
describe('Функция is_class', () => {
|
|
5
|
+
test('должна возвращать true для класса', () => {
|
|
6
|
+
class MyClass {}
|
|
7
|
+
expect(is_class(MyClass)).toBe(true);
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
test('должна возвращать false для функции-конструктора', () => {
|
|
11
|
+
function MyFunction() {}
|
|
12
|
+
expect(is_class(MyFunction)).toBe(false);
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
test('должна возвращать false для объектов', () => {
|
|
16
|
+
expect(is_class({})).toBe(false);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
test('должна возвращать false для массивов', () => {
|
|
20
|
+
expect(is_class([])).toBe(false);
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
test('должна возвращать false для null', () => {
|
|
24
|
+
expect(is_class(null)).toBe(false);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
test('должна возвращать false для чисел', () => {
|
|
28
|
+
expect(is_class(42)).toBe(false);
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
test('должна возвращать false для строк', () => {
|
|
32
|
+
expect(is_class('hello')).toBe(false);
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
test('должна возвращать false для булевых значений', () => {
|
|
36
|
+
expect(is_class(true)).toBe(false);
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
test('должна возвращать false для встроенных объектов, таких как Map', () => {
|
|
40
|
+
expect(is_class(new Map())).toBe(false);
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
test('должна возвращать false для встроенных объектов, таких как Date', () => {
|
|
44
|
+
expect(is_class(new Date())).toBe(false);
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
test('должна возвращать false для объекта, созданного через Object.create(null)', () => {
|
|
48
|
+
const noProtoObject = Object.create(null);
|
|
49
|
+
noProtoObject.foo = 'bar';
|
|
50
|
+
expect(is_class(noProtoObject)).toBe(false);
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
test('должна возвращать false для стрелочных функций', () => {
|
|
54
|
+
expect(is_class(() => {})).toBe(false);
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
test('должна возвращать false для async функций', () => {
|
|
58
|
+
async function asyncFunc() {}
|
|
59
|
+
expect(is_class(asyncFunc)).toBe(false);
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
test('должна возвращать false для генераторов', () => {
|
|
63
|
+
function* generatorFunc() {}
|
|
64
|
+
expect(is_class(generatorFunc)).toBe(false);
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
test('должна возвращать false для async генераторов', () => {
|
|
68
|
+
async function* asyncGeneratorFunc() {}
|
|
69
|
+
expect(is_class(asyncGeneratorFunc)).toBe(false);
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
test('должна возвращать false для символов', () => {
|
|
73
|
+
expect(is_class(Symbol('symbol'))).toBe(false);
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
test('должна возвращать false для объектов с методом toString', () => {
|
|
77
|
+
const obj = {
|
|
78
|
+
toString() {
|
|
79
|
+
return 'class';
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
expect(is_class(obj)).toBe(false);
|
|
83
|
+
});
|
|
84
|
+
});
|