@rogolev/value 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (133) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +19 -1
  3. package/docs/classes/Value/constructor.md +48 -0
  4. package/docs/classes/Value/get.md +51 -0
  5. package/docs/classes/Value/getType.md +71 -0
  6. package/docs/classes/Value/isArray.md +67 -0
  7. package/docs/classes/Value/isAssoc.md +68 -0
  8. package/docs/classes/Value/isBigInt.md +52 -0
  9. package/docs/classes/Value/isBool.md +60 -0
  10. package/docs/classes/Value/isBoolean.md +60 -0
  11. package/docs/classes/Value/isClass.md +55 -0
  12. package/docs/classes/Value/isEmpty.md +84 -0
  13. package/docs/classes/Value/isFloat.md +52 -0
  14. package/docs/classes/Value/isFunction.md +60 -0
  15. package/docs/classes/Value/isInfinity.md +60 -0
  16. package/docs/classes/Value/isInt.md +52 -0
  17. package/docs/classes/Value/isInteger.md +52 -0
  18. package/docs/classes/Value/isList.md +59 -0
  19. package/docs/classes/Value/isNaN.md +79 -0
  20. package/docs/classes/Value/isNull.md +59 -0
  21. package/docs/classes/Value/isNumber.md +80 -0
  22. package/docs/classes/Value/isNumeric.md +79 -0
  23. package/docs/classes/Value/isObject.md +68 -0
  24. package/docs/classes/Value/isScalar.md +72 -0
  25. package/docs/classes/Value/isString.md +67 -0
  26. package/docs/classes/Value/isSymbol.md +75 -0
  27. package/docs/classes/Value/isUndefined.md +67 -0
  28. package/docs/classes/Value/print.md +164 -0
  29. package/docs/classes/Value/printType.md +158 -0
  30. package/docs/classes/Value/setType.md +79 -0
  31. package/docs/classes/Value/toArray.md +85 -0
  32. package/docs/classes/Value/toAssoc.md +85 -0
  33. package/docs/classes/Value/toBool.md +71 -0
  34. package/docs/classes/Value/toBoolean.md +71 -0
  35. package/docs/classes/Value/toFloat.md +72 -0
  36. package/docs/classes/Value/toInt.md +72 -0
  37. package/docs/classes/Value/toInteger.md +72 -0
  38. package/docs/classes/Value/toList.md +77 -0
  39. package/docs/classes/Value/toObject.md +78 -0
  40. package/docs/classes/Value/toPrint.md +115 -0
  41. package/docs/classes/Value/toPrintType.md +110 -0
  42. package/docs/classes/Value/toString.md +134 -0
  43. package/docs/classes/Value.md +113 -0
  44. package/docs/classes.md +2 -0
  45. package/docs/constants.md +47 -0
  46. package/docs/helpers/value.md +95 -0
  47. package/docs/helpers.md +2 -0
  48. package/index.mjs +3 -0
  49. package/package.json +2 -2
  50. package/src/classes/Convert.mjs +818 -819
  51. package/src/classes/Type.mjs +1284 -1285
  52. package/src/classes/Value.mjs +2846 -0
  53. package/src/constants.mjs +14 -0
  54. package/src/helpers/array.mjs +107 -107
  55. package/src/helpers/empty.mjs +70 -70
  56. package/src/helpers/gettype.mjs +149 -133
  57. package/src/helpers/is_array.mjs +128 -128
  58. package/src/helpers/is_assoc.mjs +51 -51
  59. package/src/helpers/is_bigint.mjs +47 -47
  60. package/src/helpers/is_bool.mjs +43 -43
  61. package/src/helpers/is_boolean.mjs +43 -43
  62. package/src/helpers/is_class.mjs +87 -87
  63. package/src/helpers/is_float.mjs +67 -67
  64. package/src/helpers/is_function.mjs +74 -74
  65. package/src/helpers/is_infinity.mjs +52 -52
  66. package/src/helpers/is_int.mjs +57 -57
  67. package/src/helpers/is_integer.mjs +74 -74
  68. package/src/helpers/is_list.mjs +43 -43
  69. package/src/helpers/is_nan.mjs +51 -51
  70. package/src/helpers/is_null.mjs +37 -37
  71. package/src/helpers/is_number.mjs +49 -49
  72. package/src/helpers/is_numeric.mjs +64 -64
  73. package/src/helpers/is_object.mjs +72 -72
  74. package/src/helpers/is_scalar.mjs +45 -45
  75. package/src/helpers/is_string.mjs +46 -46
  76. package/src/helpers/is_symbol.mjs +46 -46
  77. package/src/helpers/is_undefined.mjs +44 -44
  78. package/src/helpers/print.mjs +245 -245
  79. package/src/helpers/print_type.mjs +261 -261
  80. package/src/helpers/settype.mjs +101 -101
  81. package/src/helpers/to_array.mjs +118 -118
  82. package/src/helpers/to_assoc.mjs +98 -98
  83. package/src/helpers/to_bool.mjs +68 -68
  84. package/src/helpers/to_boolean.mjs +64 -64
  85. package/src/helpers/to_float.mjs +72 -72
  86. package/src/helpers/to_int.mjs +93 -93
  87. package/src/helpers/to_integer.mjs +81 -81
  88. package/src/helpers/to_list.mjs +56 -56
  89. package/src/helpers/to_object.mjs +94 -94
  90. package/src/helpers/to_string.mjs +157 -157
  91. package/src/helpers/value.mjs +92 -0
  92. package/tests/classes/Convert.test.mjs +398 -399
  93. package/tests/classes/Type.test.mjs +1262 -1263
  94. package/tests/classes/Value.test.mjs +423 -0
  95. package/tests/constants.test.mjs +75 -0
  96. package/tests/helpers/array.test.mjs +58 -58
  97. package/tests/helpers/empty.test.mjs +22 -22
  98. package/tests/helpers/gettype.test.mjs +74 -74
  99. package/tests/helpers/is_array.test.mjs +404 -404
  100. package/tests/helpers/is_assoc.test.mjs +42 -42
  101. package/tests/helpers/is_bigint.test.mjs +51 -51
  102. package/tests/helpers/is_bool.test.mjs +43 -43
  103. package/tests/helpers/is_boolean.test.mjs +43 -43
  104. package/tests/helpers/is_class.test.mjs +84 -84
  105. package/tests/helpers/is_float.test.mjs +87 -87
  106. package/tests/helpers/is_function.test.mjs +83 -83
  107. package/tests/helpers/is_infinity.test.mjs +46 -46
  108. package/tests/helpers/is_int.test.mjs +45 -45
  109. package/tests/helpers/is_integer.test.mjs +64 -64
  110. package/tests/helpers/is_list.test.mjs +42 -42
  111. package/tests/helpers/is_nan.test.mjs +43 -43
  112. package/tests/helpers/is_null.test.mjs +17 -17
  113. package/tests/helpers/is_number.test.mjs +25 -25
  114. package/tests/helpers/is_numeric.test.mjs +30 -30
  115. package/tests/helpers/is_object.test.mjs +52 -52
  116. package/tests/helpers/is_scalar.test.mjs +21 -21
  117. package/tests/helpers/is_string.test.mjs +20 -20
  118. package/tests/helpers/is_symbol.test.mjs +20 -20
  119. package/tests/helpers/is_undefined.test.mjs +18 -18
  120. package/tests/helpers/print.test.mjs +62 -62
  121. package/tests/helpers/print_type.test.mjs +62 -62
  122. package/tests/helpers/settype.test.mjs +34 -34
  123. package/tests/helpers/to_array.test.mjs +38 -38
  124. package/tests/helpers/to_assoc.test.mjs +33 -33
  125. package/tests/helpers/to_bool.test.mjs +51 -51
  126. package/tests/helpers/to_boolean.test.mjs +51 -51
  127. package/tests/helpers/to_float.test.mjs +26 -26
  128. package/tests/helpers/to_int.test.mjs +48 -48
  129. package/tests/helpers/to_integer.test.mjs +48 -48
  130. package/tests/helpers/to_list.test.mjs +32 -32
  131. package/tests/helpers/to_object.test.mjs +36 -36
  132. package/tests/helpers/to_string.test.mjs +71 -71
  133. package/tests/helpers/value.test.mjs +68 -0
@@ -1,399 +1,398 @@
1
- import { expect, test, describe } from '@jest/globals';
2
- import { Convert } from '../../index.mjs';
3
-
4
- describe('Класс Convert', () => {
5
- describe('Метод Convert.toArray', () => {
6
- test('Должен возвращать пустой массив для null и undefined', () => {
7
- expect(Convert.toArray(null)).toEqual([]);
8
- expect(Convert.toArray(undefined)).toEqual([]);
9
- });
10
-
11
- test('Должен возвращать исходный массив, если он передан', () => {
12
- const input = [1, 2, 3];
13
- expect(Convert.toArray(input)).toBe(input);
14
- });
15
-
16
- test('Должен возвращать ассоциативный массив без прототипа и с итератором Symbol.iterator при передаче объекта', () => {
17
- const result = Convert.toArray({ key: 'value' });
18
-
19
- expect(Object.getPrototypeOf(result)).toBeNull();
20
-
21
- for (const entry of result) {
22
- expect(entry).toEqual(['key', 'value']);
23
- }
24
- });
25
-
26
- test('Должен возвращать массив с примитивными значениями', () => {
27
- expect(Convert.toArray(true)).toEqual([true]);
28
- expect(Convert.toArray(false)).toEqual([false]);
29
- expect(Convert.toArray('example')).toEqual(['example']);
30
- expect(Convert.toArray(123)).toEqual([123]);
31
- });
32
-
33
- test('Должен оборачивать экземпляр класса в массив', () => {
34
- class MyClass {}
35
-
36
- const instance = new MyClass();
37
- expect(Convert.toArray(instance)).toEqual([instance]);
38
- });
39
- });
40
-
41
- describe('Метод Convert.toAssoc', () => {
42
- test('Должен возвращать пустой ассоциативный массив для null и undefined', () => {
43
- expect(Convert.toAssoc(null)).toEqual({});
44
- expect(Convert.toAssoc(undefined)).toEqual({});
45
- });
46
-
47
- test('Должен преобразовывать список в ассоциативный массив', () => {
48
- const input = [1, 2, 3];
49
- expect(Convert.toAssoc(input)).toEqual({ 0: 1, 1: 2, 2: 3 });
50
- });
51
-
52
- test('Должен возвращать исходный ассоциативный массив, если он передан', () => {
53
- const input = { key: 'value' };
54
- expect(Convert.toAssoc(input)).toBe(input);
55
- });
56
-
57
- test('Должен возвращать ассоциативный массив с ключом 0 и переданным значением для примитивов', () => {
58
- expect(Convert.toAssoc(true)).toEqual({ 0: true });
59
- expect(Convert.toAssoc(false)).toEqual({ 0: false });
60
- expect(Convert.toAssoc('example')).toEqual({ 0: 'example' });
61
- expect(Convert.toAssoc(123)).toEqual({ 0: 123 });
62
- });
63
-
64
- test('Должен оборачивать экземпляр класса в ассоциативный массив с ключом 0', () => {
65
- class MyClass {}
66
-
67
- const instance = new MyClass();
68
- expect(Convert.toAssoc(instance)).toEqual({ 0: instance });
69
- });
70
- });
71
-
72
- describe('Метод Convert.toBool', () => {
73
- test('Должен возвращать false для пустого массива', () => {
74
- expect(Convert.toBool([])).toBe(false);
75
- });
76
-
77
- test('Должен возвращать true для непустого массива', () => {
78
- expect(Convert.toBool([1, 2, 3])).toBe(true);
79
- });
80
-
81
- test('Должен возвращать false для пустого ассоциативного массива', () => {
82
- expect(Convert.toBool({})).toBe(false);
83
- });
84
-
85
- test('Должен возвращать true для непустого ассоциативного массива', () => {
86
- expect(Convert.toBool({ key: 'value' })).toBe(true);
87
- });
88
-
89
- test('Должен возвращать true для строки', () => {
90
- expect(Convert.toBool('example')).toBe(true);
91
- });
92
-
93
- test('Должен возвращать true для числа', () => {
94
- expect(Convert.toBool(123)).toBe(true);
95
- });
96
-
97
- test('Должен возвращать false для null и undefined', () => {
98
- expect(Convert.toBool(null)).toBe(false);
99
- expect(Convert.toBool(undefined)).toBe(false);
100
- });
101
-
102
- test('Должен возвращать true для булевых значений', () => {
103
- expect(Convert.toBool(true)).toBe(true);
104
- expect(Convert.toBool(false)).toBe(false);
105
- });
106
-
107
- test('Должен возвращать true для экземпляров класса', () => {
108
- class MyClass {}
109
-
110
- const instance = new MyClass();
111
- expect(Convert.toBool(instance)).toBe(true);
112
- });
113
-
114
- test('Должен возвращать true для классов', () => {
115
- class MyClass {}
116
-
117
- expect(Convert.toBool(MyClass)).toBe(true);
118
- });
119
- });
120
-
121
- describe('Метод Convert.toBoolean', () => {
122
- test('Должен возвращать false для пустого массива', () => {
123
- expect(Convert.toBoolean([])).toBe(false);
124
- });
125
-
126
- test('Должен возвращать true для непустого массива', () => {
127
- expect(Convert.toBoolean([1, 2, 3])).toBe(true);
128
- });
129
-
130
- test('Должен возвращать false для пустого ассоциативного массива', () => {
131
- expect(Convert.toBoolean({})).toBe(false);
132
- });
133
-
134
- test('Должен возвращать true для непустого ассоциативного массива', () => {
135
- expect(Convert.toBoolean({ key: 'value' })).toBe(true);
136
- });
137
-
138
- test('Должен возвращать true для строки', () => {
139
- expect(Convert.toBoolean('example')).toBe(true);
140
- });
141
-
142
- test('Должен возвращать true для числа', () => {
143
- expect(Convert.toBoolean(123)).toBe(true);
144
- });
145
-
146
- test('Должен возвращать false для null и undefined', () => {
147
- expect(Convert.toBoolean(null)).toBe(false);
148
- expect(Convert.toBoolean(undefined)).toBe(false);
149
- });
150
-
151
- test('Должен возвращать true для булевых значений', () => {
152
- expect(Convert.toBoolean(true)).toBe(true);
153
- expect(Convert.toBoolean(false)).toBe(false);
154
- });
155
-
156
- test('Должен возвращать true для экземпляров класса', () => {
157
- class MyClass {}
158
-
159
- const instance = new MyClass();
160
- expect(Convert.toBoolean(instance)).toBe(true);
161
- });
162
-
163
- test('Должен возвращать true для классов', () => {
164
- class MyClass {}
165
-
166
- expect(Convert.toBoolean(MyClass)).toBe(true);
167
- });
168
- });
169
-
170
- describe('Метод Convert.toFloat', () => {
171
- test('Должен возвращать число с плавающей точкой для строки', () => {
172
- expect(Convert.toFloat('123.45')).toBe(123.45);
173
- });
174
-
175
- test('Должен возвращать число с плавающей точкой для целого числа', () => {
176
- expect(Convert.toFloat(123)).toBe(123.0);
177
- });
178
-
179
- test('Должен возвращать 1 для true и 0 для false', () => {
180
- expect(Convert.toFloat(true)).toBe(1.0);
181
- expect(Convert.toFloat(false)).toBe(0.0);
182
- });
183
-
184
- test('Должен возвращать 0 для null и undefined', () => {
185
- expect(Convert.toFloat(null)).toBe(0.0);
186
- expect(Convert.toFloat(undefined)).toBe(0.0);
187
- });
188
-
189
- test('Должен возвращать 0 для нечисловых строк', () => {
190
- expect(Convert.toFloat('example')).toBe(0.0);
191
- });
192
- });
193
-
194
- describe('Метод Convert.toInt', () => {
195
- test('Должен возвращать целое число для строки', () => {
196
- expect(Convert.toInt('123')).toBe(123);
197
- });
198
-
199
- test('Должен возвращать целое число для числа с плавающей точкой', () => {
200
- expect(Convert.toInt(123.45)).toBe(123);
201
- });
202
-
203
- test('Должен возвращать 1 для true и 0 для false', () => {
204
- expect(Convert.toInt(true)).toBe(1);
205
- expect(Convert.toInt(false)).toBe(0);
206
- });
207
-
208
- test('Должен возвращать 0 для null и undefined', () => {
209
- expect(Convert.toInt(null)).toBe(0);
210
- expect(Convert.toInt(undefined)).toBe(0);
211
- });
212
-
213
- test('Должен возвращать 0 для нечисловых строк', () => {
214
- expect(Convert.toInt('example')).toBe(0);
215
- });
216
-
217
- test('Должен возвращать целое число для строки с основанием системы счисления', () => {
218
- expect(Convert.toInt('10', 2)).toBe(2);
219
- expect(Convert.toInt('A', 16)).toBe(10);
220
- expect(Convert.toInt('7', 8)).toBe(7);
221
- });
222
-
223
- test('Должен возвращать целое число для строки с основанием системы счисления 2', () => {
224
- expect(Convert.toInt('1010', 2)).toBe(10);
225
- });
226
-
227
- test('Должен возвращать целое число для строки с основанием системы счисления 16', () => {
228
- expect(Convert.toInt('A', 16)).toBe(10);
229
- });
230
-
231
- test('Должен возвращать целое число для строки с основанием системы счисления 8', () => {
232
- expect(Convert.toInt('7', 8)).toBe(7);
233
- });
234
-
235
- test('Должен выбрасывать исключение для неверного значения параметра base', () => {
236
- expect(() => Convert.toInt('123', 'invalid')).toThrow(TypeError);
237
- });
238
- });
239
-
240
- describe('Метод Convert.toInteger', () => {
241
- test('Должен возвращать целое число для строки', () => {
242
- expect(Convert.toInteger('123')).toBe(123);
243
- });
244
-
245
- test('Должен возвращать целое число для числа с плавающей точкой', () => {
246
- expect(Convert.toInteger(123.45)).toBe(123);
247
- });
248
-
249
- test('Должен возвращать 1 для true и 0 для false', () => {
250
- expect(Convert.toInteger(true)).toBe(1);
251
- expect(Convert.toInteger(false)).toBe(0);
252
- });
253
-
254
- test('Должен возвращать 0 для null и undefined', () => {
255
- expect(Convert.toInteger(null)).toBe(0);
256
- expect(Convert.toInteger(undefined)).toBe(0);
257
- });
258
-
259
- test('Должен возвращать 0 для нечисловых строк', () => {
260
- expect(Convert.toInteger('example')).toBe(0);
261
- });
262
-
263
- test('Должен возвращать целое число для строки с основанием системы счисления', () => {
264
- expect(Convert.toInteger('10', 2)).toBe(2);
265
- expect(Convert.toInteger('A', 16)).toBe(10);
266
- expect(Convert.toInteger('7', 8)).toBe(7);
267
- });
268
-
269
- test('Должен возвращать целое число для строки с основанием системы счисления 2', () => {
270
- expect(Convert.toInteger('1010', 2)).toBe(10);
271
- });
272
-
273
- test('Должен возвращать целое число для строки с основанием системы счисления 16', () => {
274
- expect(Convert.toInteger('A', 16)).toBe(10);
275
- });
276
-
277
- test('Должен возвращать целое число для строки с основанием системы счисления 8', () => {
278
- expect(Convert.toInteger('7', 8)).toBe(7);
279
- });
280
-
281
- test('Должен выбрасывать исключение для неверного значения параметра base', () => {
282
- expect(() => Convert.toInteger('123', 'invalid')).toThrow(TypeError);
283
- });
284
- });
285
-
286
- describe('Метод Convert.toList', () => {
287
- test('Должен возвращать пустой массив для null и undefined', () => {
288
- expect(Convert.toList(null)).toEqual([]);
289
- expect(Convert.toList(undefined)).toEqual([]);
290
- });
291
-
292
- test('Должен возвращать исходный массив, если он передан', () => {
293
- const input = [1, 2, 3];
294
- expect(Convert.toList(input)).toBe(input);
295
- });
296
-
297
- test('Должен возвращать массив значений объекта, если передан ассоциативный массив', () => {
298
- const input = { key: 'value' };
299
- expect(Convert.toList(input)).toEqual(['value']);
300
- });
301
-
302
- test('Должен возвращать массив, содержащий переданное значение для примитивов', () => {
303
- expect(Convert.toList(true)).toEqual([true]);
304
- expect(Convert.toList(false)).toEqual([false]);
305
- expect(Convert.toList('example')).toEqual(['example']);
306
- expect(Convert.toList(123)).toEqual([123]);
307
- });
308
- });
309
-
310
- describe('Метод Convert.toObject', () => {
311
- test('Должен возвращать объект без изменений', () => {
312
- class MyClass {}
313
- const obj = new MyClass();
314
- expect(Convert.toObject(obj)).toBe(obj);
315
- });
316
-
317
- test('Должен возвращать новый экземпляр класса', () => {
318
- class MyClass {}
319
- const instance = Convert.toObject(MyClass);
320
- expect(instance).toBeInstanceOf(MyClass);
321
- });
322
-
323
- test('Должен возвращать объект с элементами массива', () => {
324
- const arr = [1, 2, 3];
325
- const result = Convert.toObject(arr);
326
- expect(result).toEqual({ 0: 1, 1: 2, 2: 3 });
327
- });
328
-
329
- test('Должен возвращать объект с полем value для примитивов', () => {
330
- expect(Convert.toObject('example')).toEqual({ value: 'example' });
331
- expect(Convert.toObject(123)).toEqual({ value: 123 });
332
- expect(Convert.toObject(true)).toEqual({ value: true });
333
- });
334
-
335
- test('Должен возвращать экземпляр анонимного класса для null и undefined', () => {
336
- expect(Convert.toObject(null)).toBeInstanceOf(Object);
337
- expect(Convert.toObject(undefined)).toBeInstanceOf(Object);
338
- });
339
- });
340
-
341
- describe('Метод Convert.toString', () => {
342
- test('Должен возвращать строку без изменений', () => {
343
- expect(Convert.toString('example')).toBe('example');
344
- });
345
-
346
- test('Должен преобразовывать число в строку', () => {
347
- expect(Convert.toString(123)).toBe('123');
348
- });
349
-
350
- test('Должен преобразовывать булевые значения в строку', () => {
351
- expect(Convert.toString(true)).toBe('true');
352
- expect(Convert.toString(false)).toBe('false');
353
- });
354
-
355
- test('Должен преобразовывать null и undefined в строку', () => {
356
- expect(Convert.toString(null)).toBe('null');
357
- expect(Convert.toString(undefined)).toBe('undefined');
358
- });
359
-
360
- test('Должен преобразовывать массив в строку', () => {
361
- const arr = [1, 2, 3];
362
- expect(Convert.toString(arr)).toBe('[\n 1,\n 2,\n 3,\n]');
363
- });
364
-
365
- test('Должен преобразовывать объект в строку', () => {
366
- const obj = { key: 'value' };
367
- expect(Convert.toString(obj)).toBe("{\n key: 'value',\n}");
368
- });
369
-
370
- test('Должен преобразовывать функцию в строку', () => {
371
- const func = function () {};
372
- expect(Convert.toString(func)).toBe('function func() {}');
373
- });
374
-
375
- test('Должен преобразовывать символ в строку', () => {
376
- const symbol = Symbol('example');
377
- expect(Convert.toString(symbol)).toBe('Symbol(example)');
378
- });
379
-
380
- test('Должен преобразовывать BigInt в строку', () => {
381
- const bigInt = BigInt(123);
382
- expect(Convert.toString(bigInt)).toBe('123');
383
- });
384
-
385
- test('Должен преобразовывать класс в строку', () => {
386
- class MyClass {
387
- static test = 'test';
388
- }
389
- expect(Convert.toString(MyClass)).toBe('class MyClass {}');
390
- });
391
-
392
- test('Должен преобразовывать экземпляр класса в строку', () => {
393
- class MyClass {}
394
- const instance = new MyClass();
395
- expect(Convert.toString(instance)).toBe('object MyClass');
396
- });
397
- });
398
- });
399
-
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { Convert } from '../../index.mjs';
3
+
4
+ describe('Класс Convert', () => {
5
+ describe('Метод Convert.toArray', () => {
6
+ test('Должен возвращать пустой массив для null и undefined', () => {
7
+ expect(Convert.toArray(null)).toEqual([]);
8
+ expect(Convert.toArray(undefined)).toEqual([]);
9
+ });
10
+
11
+ test('Должен возвращать исходный массив, если он передан', () => {
12
+ const input = [1, 2, 3];
13
+ expect(Convert.toArray(input)).toBe(input);
14
+ });
15
+
16
+ test('Должен возвращать ассоциативный массив без прототипа и с итератором Symbol.iterator при передаче объекта', () => {
17
+ const result = Convert.toArray({ key: 'value' });
18
+
19
+ expect(Object.getPrototypeOf(result)).toBeNull();
20
+
21
+ for (const entry of result) {
22
+ expect(entry).toEqual(['key', 'value']);
23
+ }
24
+ });
25
+
26
+ test('Должен возвращать массив с примитивными значениями', () => {
27
+ expect(Convert.toArray(true)).toEqual([true]);
28
+ expect(Convert.toArray(false)).toEqual([false]);
29
+ expect(Convert.toArray('example')).toEqual(['example']);
30
+ expect(Convert.toArray(123)).toEqual([123]);
31
+ });
32
+
33
+ test('Должен оборачивать экземпляр класса в массив', () => {
34
+ class MyClass {}
35
+
36
+ const instance = new MyClass();
37
+ expect(Convert.toArray(instance)).toEqual([instance]);
38
+ });
39
+ });
40
+
41
+ describe('Метод Convert.toAssoc', () => {
42
+ test('Должен возвращать пустой ассоциативный массив для null и undefined', () => {
43
+ expect(Convert.toAssoc(null)).toEqual({});
44
+ expect(Convert.toAssoc(undefined)).toEqual({});
45
+ });
46
+
47
+ test('Должен преобразовывать список в ассоциативный массив', () => {
48
+ const input = [1, 2, 3];
49
+ expect(Convert.toAssoc(input)).toEqual({ 0: 1, 1: 2, 2: 3 });
50
+ });
51
+
52
+ test('Должен возвращать исходный ассоциативный массив, если он передан', () => {
53
+ const input = { key: 'value' };
54
+ expect(Convert.toAssoc(input)).toBe(input);
55
+ });
56
+
57
+ test('Должен возвращать ассоциативный массив с ключом 0 и переданным значением для примитивов', () => {
58
+ expect(Convert.toAssoc(true)).toEqual({ 0: true });
59
+ expect(Convert.toAssoc(false)).toEqual({ 0: false });
60
+ expect(Convert.toAssoc('example')).toEqual({ 0: 'example' });
61
+ expect(Convert.toAssoc(123)).toEqual({ 0: 123 });
62
+ });
63
+
64
+ test('Должен оборачивать экземпляр класса в ассоциативный массив с ключом 0', () => {
65
+ class MyClass {}
66
+
67
+ const instance = new MyClass();
68
+ expect(Convert.toAssoc(instance)).toEqual({ 0: instance });
69
+ });
70
+ });
71
+
72
+ describe('Метод Convert.toBool', () => {
73
+ test('Должен возвращать false для пустого массива', () => {
74
+ expect(Convert.toBool([])).toBe(false);
75
+ });
76
+
77
+ test('Должен возвращать true для непустого массива', () => {
78
+ expect(Convert.toBool([1, 2, 3])).toBe(true);
79
+ });
80
+
81
+ test('Должен возвращать false для пустого ассоциативного массива', () => {
82
+ expect(Convert.toBool({})).toBe(false);
83
+ });
84
+
85
+ test('Должен возвращать true для непустого ассоциативного массива', () => {
86
+ expect(Convert.toBool({ key: 'value' })).toBe(true);
87
+ });
88
+
89
+ test('Должен возвращать true для строки', () => {
90
+ expect(Convert.toBool('example')).toBe(true);
91
+ });
92
+
93
+ test('Должен возвращать true для числа', () => {
94
+ expect(Convert.toBool(123)).toBe(true);
95
+ });
96
+
97
+ test('Должен возвращать false для null и undefined', () => {
98
+ expect(Convert.toBool(null)).toBe(false);
99
+ expect(Convert.toBool(undefined)).toBe(false);
100
+ });
101
+
102
+ test('Должен возвращать true для булевых значений', () => {
103
+ expect(Convert.toBool(true)).toBe(true);
104
+ expect(Convert.toBool(false)).toBe(false);
105
+ });
106
+
107
+ test('Должен возвращать true для экземпляров класса', () => {
108
+ class MyClass {}
109
+
110
+ const instance = new MyClass();
111
+ expect(Convert.toBool(instance)).toBe(true);
112
+ });
113
+
114
+ test('Должен возвращать true для классов', () => {
115
+ class MyClass {}
116
+
117
+ expect(Convert.toBool(MyClass)).toBe(true);
118
+ });
119
+ });
120
+
121
+ describe('Метод Convert.toBoolean', () => {
122
+ test('Должен возвращать false для пустого массива', () => {
123
+ expect(Convert.toBoolean([])).toBe(false);
124
+ });
125
+
126
+ test('Должен возвращать true для непустого массива', () => {
127
+ expect(Convert.toBoolean([1, 2, 3])).toBe(true);
128
+ });
129
+
130
+ test('Должен возвращать false для пустого ассоциативного массива', () => {
131
+ expect(Convert.toBoolean({})).toBe(false);
132
+ });
133
+
134
+ test('Должен возвращать true для непустого ассоциативного массива', () => {
135
+ expect(Convert.toBoolean({ key: 'value' })).toBe(true);
136
+ });
137
+
138
+ test('Должен возвращать true для строки', () => {
139
+ expect(Convert.toBoolean('example')).toBe(true);
140
+ });
141
+
142
+ test('Должен возвращать true для числа', () => {
143
+ expect(Convert.toBoolean(123)).toBe(true);
144
+ });
145
+
146
+ test('Должен возвращать false для null и undefined', () => {
147
+ expect(Convert.toBoolean(null)).toBe(false);
148
+ expect(Convert.toBoolean(undefined)).toBe(false);
149
+ });
150
+
151
+ test('Должен возвращать true для булевых значений', () => {
152
+ expect(Convert.toBoolean(true)).toBe(true);
153
+ expect(Convert.toBoolean(false)).toBe(false);
154
+ });
155
+
156
+ test('Должен возвращать true для экземпляров класса', () => {
157
+ class MyClass {}
158
+
159
+ const instance = new MyClass();
160
+ expect(Convert.toBoolean(instance)).toBe(true);
161
+ });
162
+
163
+ test('Должен возвращать true для классов', () => {
164
+ class MyClass {}
165
+
166
+ expect(Convert.toBoolean(MyClass)).toBe(true);
167
+ });
168
+ });
169
+
170
+ describe('Метод Convert.toFloat', () => {
171
+ test('Должен возвращать число с плавающей точкой для строки', () => {
172
+ expect(Convert.toFloat('123.45')).toBe(123.45);
173
+ });
174
+
175
+ test('Должен возвращать число с плавающей точкой для целого числа', () => {
176
+ expect(Convert.toFloat(123)).toBe(123.0);
177
+ });
178
+
179
+ test('Должен возвращать 1 для true и 0 для false', () => {
180
+ expect(Convert.toFloat(true)).toBe(1.0);
181
+ expect(Convert.toFloat(false)).toBe(0.0);
182
+ });
183
+
184
+ test('Должен возвращать 0 для null и undefined', () => {
185
+ expect(Convert.toFloat(null)).toBe(0.0);
186
+ expect(Convert.toFloat(undefined)).toBe(0.0);
187
+ });
188
+
189
+ test('Должен возвращать 0 для нечисловых строк', () => {
190
+ expect(Convert.toFloat('example')).toBe(0.0);
191
+ });
192
+ });
193
+
194
+ describe('Метод Convert.toInt', () => {
195
+ test('Должен возвращать целое число для строки', () => {
196
+ expect(Convert.toInt('123')).toBe(123);
197
+ });
198
+
199
+ test('Должен возвращать целое число для числа с плавающей точкой', () => {
200
+ expect(Convert.toInt(123.45)).toBe(123);
201
+ });
202
+
203
+ test('Должен возвращать 1 для true и 0 для false', () => {
204
+ expect(Convert.toInt(true)).toBe(1);
205
+ expect(Convert.toInt(false)).toBe(0);
206
+ });
207
+
208
+ test('Должен возвращать 0 для null и undefined', () => {
209
+ expect(Convert.toInt(null)).toBe(0);
210
+ expect(Convert.toInt(undefined)).toBe(0);
211
+ });
212
+
213
+ test('Должен возвращать 0 для нечисловых строк', () => {
214
+ expect(Convert.toInt('example')).toBe(0);
215
+ });
216
+
217
+ test('Должен возвращать целое число для строки с основанием системы счисления', () => {
218
+ expect(Convert.toInt('10', 2)).toBe(2);
219
+ expect(Convert.toInt('A', 16)).toBe(10);
220
+ expect(Convert.toInt('7', 8)).toBe(7);
221
+ });
222
+
223
+ test('Должен возвращать целое число для строки с основанием системы счисления 2', () => {
224
+ expect(Convert.toInt('1010', 2)).toBe(10);
225
+ });
226
+
227
+ test('Должен возвращать целое число для строки с основанием системы счисления 16', () => {
228
+ expect(Convert.toInt('A', 16)).toBe(10);
229
+ });
230
+
231
+ test('Должен возвращать целое число для строки с основанием системы счисления 8', () => {
232
+ expect(Convert.toInt('7', 8)).toBe(7);
233
+ });
234
+
235
+ test('Должен выбрасывать исключение для неверного значения параметра base', () => {
236
+ expect(() => Convert.toInt('123', 'invalid')).toThrow(TypeError);
237
+ });
238
+ });
239
+
240
+ describe('Метод Convert.toInteger', () => {
241
+ test('Должен возвращать целое число для строки', () => {
242
+ expect(Convert.toInteger('123')).toBe(123);
243
+ });
244
+
245
+ test('Должен возвращать целое число для числа с плавающей точкой', () => {
246
+ expect(Convert.toInteger(123.45)).toBe(123);
247
+ });
248
+
249
+ test('Должен возвращать 1 для true и 0 для false', () => {
250
+ expect(Convert.toInteger(true)).toBe(1);
251
+ expect(Convert.toInteger(false)).toBe(0);
252
+ });
253
+
254
+ test('Должен возвращать 0 для null и undefined', () => {
255
+ expect(Convert.toInteger(null)).toBe(0);
256
+ expect(Convert.toInteger(undefined)).toBe(0);
257
+ });
258
+
259
+ test('Должен возвращать 0 для нечисловых строк', () => {
260
+ expect(Convert.toInteger('example')).toBe(0);
261
+ });
262
+
263
+ test('Должен возвращать целое число для строки с основанием системы счисления', () => {
264
+ expect(Convert.toInteger('10', 2)).toBe(2);
265
+ expect(Convert.toInteger('A', 16)).toBe(10);
266
+ expect(Convert.toInteger('7', 8)).toBe(7);
267
+ });
268
+
269
+ test('Должен возвращать целое число для строки с основанием системы счисления 2', () => {
270
+ expect(Convert.toInteger('1010', 2)).toBe(10);
271
+ });
272
+
273
+ test('Должен возвращать целое число для строки с основанием системы счисления 16', () => {
274
+ expect(Convert.toInteger('A', 16)).toBe(10);
275
+ });
276
+
277
+ test('Должен возвращать целое число для строки с основанием системы счисления 8', () => {
278
+ expect(Convert.toInteger('7', 8)).toBe(7);
279
+ });
280
+
281
+ test('Должен выбрасывать исключение для неверного значения параметра base', () => {
282
+ expect(() => Convert.toInteger('123', 'invalid')).toThrow(TypeError);
283
+ });
284
+ });
285
+
286
+ describe('Метод Convert.toList', () => {
287
+ test('Должен возвращать пустой массив для null и undefined', () => {
288
+ expect(Convert.toList(null)).toEqual([]);
289
+ expect(Convert.toList(undefined)).toEqual([]);
290
+ });
291
+
292
+ test('Должен возвращать исходный массив, если он передан', () => {
293
+ const input = [1, 2, 3];
294
+ expect(Convert.toList(input)).toBe(input);
295
+ });
296
+
297
+ test('Должен возвращать массив значений объекта, если передан ассоциативный массив', () => {
298
+ const input = { key: 'value' };
299
+ expect(Convert.toList(input)).toEqual(['value']);
300
+ });
301
+
302
+ test('Должен возвращать массив, содержащий переданное значение для примитивов', () => {
303
+ expect(Convert.toList(true)).toEqual([true]);
304
+ expect(Convert.toList(false)).toEqual([false]);
305
+ expect(Convert.toList('example')).toEqual(['example']);
306
+ expect(Convert.toList(123)).toEqual([123]);
307
+ });
308
+ });
309
+
310
+ describe('Метод Convert.toObject', () => {
311
+ test('Должен возвращать объект без изменений', () => {
312
+ class MyClass {}
313
+ const obj = new MyClass();
314
+ expect(Convert.toObject(obj)).toBe(obj);
315
+ });
316
+
317
+ test('Должен возвращать новый экземпляр класса', () => {
318
+ class MyClass {}
319
+ const instance = Convert.toObject(MyClass);
320
+ expect(instance).toBeInstanceOf(MyClass);
321
+ });
322
+
323
+ test('Должен возвращать объект с элементами массива', () => {
324
+ const arr = [1, 2, 3];
325
+ const result = Convert.toObject(arr);
326
+ expect(result).toEqual({ 0: 1, 1: 2, 2: 3 });
327
+ });
328
+
329
+ test('Должен возвращать объект с полем value для примитивов', () => {
330
+ expect(Convert.toObject('example')).toEqual({ value: 'example' });
331
+ expect(Convert.toObject(123)).toEqual({ value: 123 });
332
+ expect(Convert.toObject(true)).toEqual({ value: true });
333
+ });
334
+
335
+ test('Должен возвращать экземпляр анонимного класса для null и undefined', () => {
336
+ expect(Convert.toObject(null)).toBeInstanceOf(Object);
337
+ expect(Convert.toObject(undefined)).toBeInstanceOf(Object);
338
+ });
339
+ });
340
+
341
+ describe('Метод Convert.toString', () => {
342
+ test('Должен возвращать строку без изменений', () => {
343
+ expect(Convert.toString('example')).toBe('example');
344
+ });
345
+
346
+ test('Должен преобразовывать число в строку', () => {
347
+ expect(Convert.toString(123)).toBe('123');
348
+ });
349
+
350
+ test('Должен преобразовывать булевые значения в строку', () => {
351
+ expect(Convert.toString(true)).toBe('true');
352
+ expect(Convert.toString(false)).toBe('false');
353
+ });
354
+
355
+ test('Должен преобразовывать null и undefined в строку', () => {
356
+ expect(Convert.toString(null)).toBe('null');
357
+ expect(Convert.toString(undefined)).toBe('undefined');
358
+ });
359
+
360
+ test('Должен преобразовывать массив в строку', () => {
361
+ const arr = [1, 2, 3];
362
+ expect(Convert.toString(arr)).toBe('[\n 1,\n 2,\n 3,\n]');
363
+ });
364
+
365
+ test('Должен преобразовывать объект в строку', () => {
366
+ const obj = { key: 'value' };
367
+ expect(Convert.toString(obj)).toBe("{\n key: 'value',\n}");
368
+ });
369
+
370
+ test('Должен преобразовывать функцию в строку', () => {
371
+ const func = function () {};
372
+ expect(Convert.toString(func)).toBe('function func() {}');
373
+ });
374
+
375
+ test('Должен преобразовывать символ в строку', () => {
376
+ const symbol = Symbol('example');
377
+ expect(Convert.toString(symbol)).toBe('Symbol(example)');
378
+ });
379
+
380
+ test('Должен преобразовывать BigInt в строку', () => {
381
+ const bigInt = BigInt(123);
382
+ expect(Convert.toString(bigInt)).toBe('123');
383
+ });
384
+
385
+ test('Должен преобразовывать класс в строку', () => {
386
+ class MyClass {
387
+ static test = 'test';
388
+ }
389
+ expect(Convert.toString(MyClass)).toBe('class MyClass {}');
390
+ });
391
+
392
+ test('Должен преобразовывать экземпляр класса в строку', () => {
393
+ class MyClass {}
394
+ const instance = new MyClass();
395
+ expect(Convert.toString(instance)).toBe('object MyClass');
396
+ });
397
+ });
398
+ });