@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,94 @@
|
|
|
1
|
+
import is_array from './is_array.mjs';
|
|
2
|
+
import is_class from './is_class.mjs';
|
|
3
|
+
import is_null from './is_null.mjs';
|
|
4
|
+
import is_object from './is_object.mjs';
|
|
5
|
+
import is_undefined from './is_undefined.mjs';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Приводит значение переменной к объекту.
|
|
9
|
+
*
|
|
10
|
+
* ### Описание
|
|
11
|
+
*
|
|
12
|
+
* Функция `to_object` используется для преобразования различных типов данных в объект. Если значение уже является объектом, оно возвращается без изменений. Если значение является классом, возвращается новый экземпляр этого класса. Если значение является массивом, элементы массива копируются в новый объект. Для других значений создается объект с полем `value`, содержащим это значение.
|
|
13
|
+
*
|
|
14
|
+
* ### Параметры
|
|
15
|
+
*
|
|
16
|
+
* - `value` (any)
|
|
17
|
+
* Переменная, значение которой необходимо привести к объекту.
|
|
18
|
+
*
|
|
19
|
+
* ### Возвращаемое значение
|
|
20
|
+
*
|
|
21
|
+
* Возвращает объект, соответствующий переданному значению.
|
|
22
|
+
*
|
|
23
|
+
* ### Примеры использования
|
|
24
|
+
*
|
|
25
|
+
* 1. Преобразование объекта:
|
|
26
|
+
*
|
|
27
|
+
* ```js
|
|
28
|
+
* class MyClass {}
|
|
29
|
+
* const obj = new MyClass();
|
|
30
|
+
* const result = to_object(obj);
|
|
31
|
+
* // Результат: obj
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* 2. Преобразование класса:
|
|
35
|
+
*
|
|
36
|
+
* ```js
|
|
37
|
+
* class MyClass {}
|
|
38
|
+
* const result = to_object(MyClass);
|
|
39
|
+
* // Результат: экземпляр MyClass
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* 3. Преобразование null и undefined:
|
|
43
|
+
*
|
|
44
|
+
* ```js
|
|
45
|
+
* const result1 = to_object(null);
|
|
46
|
+
* // Результат: экземпляр анонимного класса
|
|
47
|
+
*
|
|
48
|
+
* const result2 = to_object(undefined);
|
|
49
|
+
* // Результат: экземпляр анонимного класса
|
|
50
|
+
* ```
|
|
51
|
+
*
|
|
52
|
+
* 4. Преобразование массива:
|
|
53
|
+
*
|
|
54
|
+
* ```js
|
|
55
|
+
* const arr = [1, 2, 3];
|
|
56
|
+
* const result = to_object(arr);
|
|
57
|
+
* // Результат: объект с элементами массива
|
|
58
|
+
* ```
|
|
59
|
+
*
|
|
60
|
+
* 5. Преобразование других значений:
|
|
61
|
+
*
|
|
62
|
+
* ```js
|
|
63
|
+
* const result = to_object('example');
|
|
64
|
+
* // Результат: объект с полем value, содержащим 'example'
|
|
65
|
+
* ```
|
|
66
|
+
*
|
|
67
|
+
* @param {any} value Переменная, значение которой необходимо привести к объекту.
|
|
68
|
+
* @returns {object} Возвращает приведенное к объекту значение переменной `value`.
|
|
69
|
+
*/
|
|
70
|
+
export default function to_object(value) {
|
|
71
|
+
if (is_object(value)) {
|
|
72
|
+
return value;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (is_class(value)) {
|
|
76
|
+
return new value();
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const object = new (class {})();
|
|
80
|
+
|
|
81
|
+
if (is_null(value) || is_undefined(value)) {
|
|
82
|
+
return object;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (is_array(value)) {
|
|
86
|
+
Object.assign(object, value);
|
|
87
|
+
|
|
88
|
+
return object;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
object.value = value;
|
|
92
|
+
|
|
93
|
+
return object;
|
|
94
|
+
}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import is_array from './is_array.mjs';
|
|
2
|
+
import is_class from './is_class.mjs';
|
|
3
|
+
import is_function from './is_function.mjs';
|
|
4
|
+
import is_object from './is_object.mjs';
|
|
5
|
+
import is_string from './is_string.mjs';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Приводит значение переменной к строке.
|
|
9
|
+
*
|
|
10
|
+
* ### Описание
|
|
11
|
+
*
|
|
12
|
+
* Функция `to_string` используется для преобразования различных типов данных в строку. Она обрабатывает массивы, объекты, классы, функции, символы и другие типы данных, возвращая их строковое представление.
|
|
13
|
+
*
|
|
14
|
+
* ### Параметры
|
|
15
|
+
*
|
|
16
|
+
* - `value` (any)
|
|
17
|
+
* Переменная, значение которой необходимо привести к строке.
|
|
18
|
+
*
|
|
19
|
+
* ### Возвращаемое значение
|
|
20
|
+
*
|
|
21
|
+
* Возвращает строку, соответствующую переданному значению.
|
|
22
|
+
*
|
|
23
|
+
* ### Примеры использования
|
|
24
|
+
*
|
|
25
|
+
* 1. Преобразование строки:
|
|
26
|
+
*
|
|
27
|
+
* ```js
|
|
28
|
+
* const result = to_string('example');
|
|
29
|
+
* // Результат: 'example'
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* 2. Преобразование числа:
|
|
33
|
+
*
|
|
34
|
+
* ```js
|
|
35
|
+
* const result = to_string(123);
|
|
36
|
+
* // Результат: '123'
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* 3. Преобразование булевых значений:
|
|
40
|
+
*
|
|
41
|
+
* ```js
|
|
42
|
+
* const result1 = to_string(true);
|
|
43
|
+
* // Результат: 'true'
|
|
44
|
+
*
|
|
45
|
+
* const result2 = to_string(false);
|
|
46
|
+
* // Результат: 'false'
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* 4. Преобразование null и undefined:
|
|
50
|
+
*
|
|
51
|
+
* ```js
|
|
52
|
+
* const result1 = to_string(null);
|
|
53
|
+
* // Результат: 'null'
|
|
54
|
+
*
|
|
55
|
+
* const result2 = to_string(undefined);
|
|
56
|
+
* // Результат: 'undefined'
|
|
57
|
+
* ```
|
|
58
|
+
*
|
|
59
|
+
* 5. Преобразование массива:
|
|
60
|
+
*
|
|
61
|
+
* ```js
|
|
62
|
+
* const arr = [1, 2, 3];
|
|
63
|
+
* const result = to_string(arr);
|
|
64
|
+
* // Результат: '[\n 1,\n 2,\n 3,\n]'
|
|
65
|
+
* ```
|
|
66
|
+
*
|
|
67
|
+
* 6. Преобразование объекта:
|
|
68
|
+
*
|
|
69
|
+
* ```js
|
|
70
|
+
* const obj = { key: 'value' };
|
|
71
|
+
* const result = to_string(obj);
|
|
72
|
+
* // Результат: '{\n key: 'value',\n}'
|
|
73
|
+
* ```
|
|
74
|
+
*
|
|
75
|
+
* 7. Преобразование функции:
|
|
76
|
+
*
|
|
77
|
+
* ```js
|
|
78
|
+
* const func = function() {};
|
|
79
|
+
* const result = to_string(func);
|
|
80
|
+
* // Результат: 'function func() {}'
|
|
81
|
+
* ```
|
|
82
|
+
*
|
|
83
|
+
* 8. Преобразование символа:
|
|
84
|
+
*
|
|
85
|
+
* ```js
|
|
86
|
+
* const symbol = Symbol('example');
|
|
87
|
+
* const result = to_string(symbol);
|
|
88
|
+
* // Результат: 'Symbol(example)'
|
|
89
|
+
* ```
|
|
90
|
+
*
|
|
91
|
+
* 9. Преобразование BigInt:
|
|
92
|
+
*
|
|
93
|
+
* ```js
|
|
94
|
+
* const bigInt = BigInt(123);
|
|
95
|
+
* const result = to_string(bigInt);
|
|
96
|
+
* // Результат: '123'
|
|
97
|
+
* ```
|
|
98
|
+
*
|
|
99
|
+
* 10. Преобразование класса:
|
|
100
|
+
*
|
|
101
|
+
* ```js
|
|
102
|
+
* class MyClass {
|
|
103
|
+
* static test = 'test';
|
|
104
|
+
* }
|
|
105
|
+
* const result = to_string(MyClass);
|
|
106
|
+
* // Результат: 'class MyClass {}'
|
|
107
|
+
* ```
|
|
108
|
+
*
|
|
109
|
+
* 11. Преобразование экземпляра класса:
|
|
110
|
+
*
|
|
111
|
+
* ```js
|
|
112
|
+
* class MyClass {}
|
|
113
|
+
* const instance = new MyClass();
|
|
114
|
+
* const result = to_string(instance);
|
|
115
|
+
* // Результат: 'object MyClass'
|
|
116
|
+
* ```
|
|
117
|
+
*
|
|
118
|
+
* @param {any} value Переменная, значение которой необходимо привести к строке.
|
|
119
|
+
* @returns {string} Возвращает приведенное к строке значение переменной `value`.
|
|
120
|
+
*/
|
|
121
|
+
export default function to_string(value) {
|
|
122
|
+
if (Array.isArray(value)) {
|
|
123
|
+
let string = '[';
|
|
124
|
+
|
|
125
|
+
for (const v of value) {
|
|
126
|
+
string += `\n ${is_string(v) ? "'" : ''}${to_string(v).replace(/\n/g, '\n ')}${is_string(v) ? "'" : ''},`;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
return (string += string.length > 1 ? '\n]' : ']');
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
if (is_array(value)) {
|
|
133
|
+
let string = '{';
|
|
134
|
+
|
|
135
|
+
for (const [k, v] of Object.entries(value)) {
|
|
136
|
+
string += `\n ${k}: ${is_string(v) ? "'" : ''}${to_string(v).replace(/\n/g, '\n ')}${is_string(v) ? "'" : ''},`;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
return (string += string.length > 1 ? '\n}' : '}');
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
if (is_class(value)) {
|
|
143
|
+
return `class ${value.name ? `${value.name} ` : ''}{}`;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
if (is_object(value)) {
|
|
147
|
+
return value.toString() === '[object Object]' ?
|
|
148
|
+
`object ${Object.getPrototypeOf(value).constructor.name}`
|
|
149
|
+
: value.toString();
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
if (is_function(value)) {
|
|
153
|
+
return `function ${value.name}() {}`;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
return String(value);
|
|
157
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { expect, test, describe } from '@jest/globals';
|
|
2
|
+
import { array } from '../../index.mjs';
|
|
3
|
+
|
|
4
|
+
describe('Функция array', () => {
|
|
5
|
+
test('Должна возвращать массив с единственным элементом, если передан один массив', () => {
|
|
6
|
+
const input = [1, 2, 3];
|
|
7
|
+
const result = array(input);
|
|
8
|
+
expect(result).toEqual([1, 2, 3]);
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
test('Должна добавлять элементы в массив, если передано несколько значений', () => {
|
|
12
|
+
const result = array(1, [2, 3], { a: 10, b: 20 });
|
|
13
|
+
expect(result).toEqual([1, [2, 3], { a: 10, b: 20 }]);
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
test('Должна обрабатывать ассоциативные массивы (объекты с ключами и значениями)', () => {
|
|
17
|
+
const assoc = { key1: 'value1', key2: 'value2' };
|
|
18
|
+
const result = array(assoc);
|
|
19
|
+
expect(result).toEqual(assoc); // Элемент должен быть объектом
|
|
20
|
+
expect(Object.getPrototypeOf(result)).toBeNull(); // Прототип должен быть null
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
test('Должна создавать итератор для ассоциативного массива', () => {
|
|
24
|
+
const assoc = { key: 'value', anotherKey: 'anotherValue' };
|
|
25
|
+
const result = array(assoc);
|
|
26
|
+
|
|
27
|
+
const iteratorOutput = [];
|
|
28
|
+
for (const [key, value] of result) {
|
|
29
|
+
iteratorOutput.push([key, value]);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
expect(iteratorOutput).toEqual([
|
|
33
|
+
['key', 'value'],
|
|
34
|
+
['anotherKey', 'anotherValue'],
|
|
35
|
+
]);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
test('Должна возвращать исходный массив, если он передан как единственный аргумент', () => {
|
|
39
|
+
const nestedArray = [1, 2, 3];
|
|
40
|
+
const result = array(nestedArray);
|
|
41
|
+
expect(result).toBe(nestedArray); // Массив должен быть возвращен напрямую
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
test('Должна работать с примитивными значениями', () => {
|
|
45
|
+
const result = array(42, 'test', true, null);
|
|
46
|
+
expect(result).toEqual([42, 'test', true, null]);
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
test('Должна возвращать массив, если передано несколько различных типов', () => {
|
|
50
|
+
const result = array(1, 'text', [2, 3], { foo: 'bar' });
|
|
51
|
+
expect(result).toEqual([1, 'text', [2, 3], { foo: 'bar' }]);
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
test('Должна возвращать массив с объектами и ассоциативными массивами', () => {
|
|
55
|
+
const result = array({ key1: 'value1' }, [1, 2], { key2: 'value2' });
|
|
56
|
+
expect(result).toEqual([{ key1: 'value1' }, [1, 2], { key2: 'value2' }]);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { expect, test, describe } from '@jest/globals';
|
|
2
|
+
import { empty } from '../../index.mjs';
|
|
3
|
+
|
|
4
|
+
describe('Функция empty', () => {
|
|
5
|
+
test('Должна возвращать true для пустых значений', () => {
|
|
6
|
+
expect(empty(null)).toBe(true);
|
|
7
|
+
expect(empty(undefined)).toBe(true);
|
|
8
|
+
expect(empty('')).toBe(true);
|
|
9
|
+
expect(empty(0)).toBe(true);
|
|
10
|
+
expect(empty(false)).toBe(true);
|
|
11
|
+
expect(empty([])).toBe(true);
|
|
12
|
+
expect(empty({})).toBe(true);
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
test('Должна возвращать false для непустых значений', () => {
|
|
16
|
+
expect(empty('example')).toBe(false);
|
|
17
|
+
expect(empty(123)).toBe(false);
|
|
18
|
+
expect(empty(true)).toBe(false);
|
|
19
|
+
expect(empty([1, 2, 3])).toBe(false);
|
|
20
|
+
expect(empty({ key: 'value' })).toBe(false);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { expect, test } from '@jest/globals';
|
|
2
|
+
import { gettype } from '../../index.mjs';
|
|
3
|
+
|
|
4
|
+
describe('Функция gettype', () => {
|
|
5
|
+
test('должна возвращать "null" для null', () => {
|
|
6
|
+
expect(gettype(null)).toBe('null');
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
test('должна возвращать "NaN" для NaN', () => {
|
|
10
|
+
expect(gettype(NaN)).toBe('NaN');
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
test('должна возвращать "undefined" для undefined', () => {
|
|
14
|
+
expect(gettype(undefined)).toBe('undefined');
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
test('должна возвращать "infinity" для Infinity и -Infinity', () => {
|
|
18
|
+
expect(gettype(Infinity)).toBe('infinity');
|
|
19
|
+
expect(gettype(-Infinity)).toBe('infinity');
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
test('должна возвращать "boolean" для логических значений', () => {
|
|
23
|
+
expect(gettype(true)).toBe('boolean');
|
|
24
|
+
expect(gettype(false)).toBe('boolean');
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
test('должна возвращать "integer" для целых чисел', () => {
|
|
28
|
+
expect(gettype(42)).toBe('integer');
|
|
29
|
+
expect(gettype(-42)).toBe('integer');
|
|
30
|
+
expect(gettype(0)).toBe('integer');
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
test('должна возвращать "bigint" для значений типа BigInt', () => {
|
|
34
|
+
expect(gettype(BigInt(123456))).toBe('bigint');
|
|
35
|
+
expect(gettype(BigInt(-123456))).toBe('bigint');
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
test('должна возвращать "float" для чисел с плавающей точкой', () => {
|
|
39
|
+
expect(gettype(3.14)).toBe('float');
|
|
40
|
+
expect(gettype(-0.99)).toBe('float');
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
test('должна возвращать "string" для строк', () => {
|
|
44
|
+
expect(gettype('hello')).toBe('string');
|
|
45
|
+
expect(gettype('')).toBe('string');
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
test('должна возвращать "symbol" для символов', () => {
|
|
49
|
+
expect(gettype(Symbol('symbol'))).toBe('symbol');
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
test('должна возвращать "class" для классов', () => {
|
|
53
|
+
class MyClass {}
|
|
54
|
+
expect(gettype(MyClass)).toBe('class');
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
test('должна возвращать "function" для функций', () => {
|
|
58
|
+
function func() {}
|
|
59
|
+
expect(gettype(func)).toBe('function');
|
|
60
|
+
expect(gettype(() => {})).toBe('function');
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
test('должна возвращать "array" для массивов', () => {
|
|
64
|
+
expect(gettype([])).toBe('array');
|
|
65
|
+
expect(gettype([1, 2, 3])).toBe('array');
|
|
66
|
+
expect(gettype({})).toBe('array');
|
|
67
|
+
expect(gettype({ foo: 'bar' })).toBe('array');
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
test('должна возвращать "object" для объектов', () => {
|
|
71
|
+
class MyClass {}
|
|
72
|
+
expect(gettype(new MyClass())).toBe('object');
|
|
73
|
+
});
|
|
74
|
+
});
|