@rogolev/value 0.0.1 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (152) hide show
  1. package/.prettierignore +4 -4
  2. package/CHANGELOG.md +82 -56
  3. package/LICENSE +41 -41
  4. package/README.md +118 -91
  5. package/babel.config.json +20 -20
  6. package/docs/classes/Convert/toArray.md +100 -0
  7. package/docs/classes/Convert/toAssoc.md +90 -0
  8. package/docs/classes/Convert/toBool.md +72 -0
  9. package/docs/classes/Convert/toBoolean.md +72 -0
  10. package/docs/classes/Convert/toFloat.md +69 -0
  11. package/docs/classes/Convert/toInt.md +86 -0
  12. package/docs/classes/Convert/toInteger.md +86 -0
  13. package/docs/classes/Convert/toList.md +73 -0
  14. package/docs/classes/Convert/toObject.md +76 -0
  15. package/docs/classes/Convert/toString.md +125 -0
  16. package/docs/classes/Convert.md +44 -0
  17. package/docs/classes/Type/isArray.md +106 -0
  18. package/docs/classes/Type/isAssoc.md +57 -0
  19. package/docs/classes/Type/isBigInt.md +49 -0
  20. package/docs/classes/Type/isBool.md +51 -0
  21. package/docs/classes/Type/isBoolean.md +51 -0
  22. package/docs/classes/Type/isClass.md +60 -0
  23. package/docs/classes/Type/isEmpty.md +53 -0
  24. package/docs/classes/Type/isFloat.md +77 -0
  25. package/docs/classes/Type/isFunction.md +64 -0
  26. package/docs/classes/Type/isInfinity.md +59 -0
  27. package/docs/classes/Type/isInt.md +77 -0
  28. package/docs/classes/Type/isInteger.md +77 -0
  29. package/docs/classes/Type/isList.md +49 -0
  30. package/docs/classes/Type/isNaN.md +57 -0
  31. package/docs/classes/Type/isNull.md +49 -0
  32. package/docs/classes/Type/isNumber.md +60 -0
  33. package/docs/classes/Type/isNumeric.md +58 -0
  34. package/docs/classes/Type/isObject.md +53 -0
  35. package/docs/classes/Type/isScalar.md +54 -0
  36. package/docs/classes/Type/isString.md +54 -0
  37. package/docs/classes/Type/isSymbol.md +56 -0
  38. package/docs/classes/Type/isUndefined.md +52 -0
  39. package/docs/classes/Type.md +74 -0
  40. package/docs/classes/Value/constructor.md +48 -0
  41. package/docs/classes/Value/get.md +51 -0
  42. package/docs/classes/Value/getType.md +71 -0
  43. package/docs/classes/Value/isArray.md +67 -0
  44. package/docs/classes/Value/isAssoc.md +68 -0
  45. package/docs/classes/Value/isBigInt.md +52 -0
  46. package/docs/classes/Value/isBool.md +60 -0
  47. package/docs/classes/Value/isBoolean.md +60 -0
  48. package/docs/classes/Value/isClass.md +55 -0
  49. package/docs/classes/Value/isEmpty.md +84 -0
  50. package/docs/classes/Value/isFloat.md +52 -0
  51. package/docs/classes/Value/isFunction.md +60 -0
  52. package/docs/classes/Value/isInfinity.md +60 -0
  53. package/docs/classes/Value/isInt.md +52 -0
  54. package/docs/classes/Value/isInteger.md +52 -0
  55. package/docs/classes/Value/isList.md +59 -0
  56. package/docs/classes/Value/isNaN.md +79 -0
  57. package/docs/classes/Value/isNull.md +59 -0
  58. package/docs/classes/Value/isNumber.md +80 -0
  59. package/docs/classes/Value/isNumeric.md +79 -0
  60. package/docs/classes/Value/isObject.md +68 -0
  61. package/docs/classes/Value/isScalar.md +72 -0
  62. package/docs/classes/Value/isString.md +67 -0
  63. package/docs/classes/Value/isSymbol.md +75 -0
  64. package/docs/classes/Value/isUndefined.md +67 -0
  65. package/docs/classes/Value/print.md +164 -0
  66. package/docs/classes/Value/printType.md +158 -0
  67. package/docs/classes/Value/setType.md +79 -0
  68. package/docs/classes/Value/toArray.md +85 -0
  69. package/docs/classes/Value/toAssoc.md +85 -0
  70. package/docs/classes/Value/toBool.md +71 -0
  71. package/docs/classes/Value/toBoolean.md +71 -0
  72. package/docs/classes/Value/toFloat.md +72 -0
  73. package/docs/classes/Value/toInt.md +72 -0
  74. package/docs/classes/Value/toInteger.md +72 -0
  75. package/docs/classes/Value/toList.md +77 -0
  76. package/docs/classes/Value/toObject.md +78 -0
  77. package/docs/classes/Value/toPrint.md +115 -0
  78. package/docs/classes/Value/toPrintType.md +110 -0
  79. package/docs/classes/Value/toString.md +134 -0
  80. package/docs/classes/Value.md +113 -0
  81. package/docs/classes.md +11 -0
  82. package/docs/constants.md +47 -0
  83. package/docs/helpers/array.md +80 -80
  84. package/docs/helpers/empty.md +77 -77
  85. package/docs/helpers/gettype.md +69 -69
  86. package/docs/helpers/is_array.md +105 -105
  87. package/docs/helpers/is_assoc.md +59 -59
  88. package/docs/helpers/is_bigint.md +57 -57
  89. package/docs/helpers/is_bool.md +50 -50
  90. package/docs/helpers/is_boolean.md +50 -50
  91. package/docs/helpers/is_class.md +73 -73
  92. package/docs/helpers/is_float.md +71 -71
  93. package/docs/helpers/is_function.md +62 -62
  94. package/docs/helpers/is_infinity.md +61 -61
  95. package/docs/helpers/is_int.md +81 -81
  96. package/docs/helpers/is_integer.md +82 -82
  97. package/docs/helpers/is_list.md +51 -51
  98. package/docs/helpers/is_nan.md +59 -59
  99. package/docs/helpers/is_null.md +49 -49
  100. package/docs/helpers/is_number.md +67 -67
  101. package/docs/helpers/is_numeric.md +76 -76
  102. package/docs/helpers/is_object.md +69 -69
  103. package/docs/helpers/is_scalar.md +60 -60
  104. package/docs/helpers/is_string.md +58 -58
  105. package/docs/helpers/is_symbol.md +58 -58
  106. package/docs/helpers/is_undefined.md +56 -56
  107. package/docs/helpers/print.md +187 -187
  108. package/docs/helpers/print_type.md +225 -225
  109. package/docs/helpers/settype.md +78 -78
  110. package/docs/helpers/to_array.md +106 -106
  111. package/docs/helpers/to_assoc.md +91 -91
  112. package/docs/helpers/to_bool.md +76 -76
  113. package/docs/helpers/to_boolean.md +77 -77
  114. package/docs/helpers/to_float.md +70 -70
  115. package/docs/helpers/to_int.md +87 -87
  116. package/docs/helpers/to_integer.md +87 -87
  117. package/docs/helpers/to_list.md +47 -47
  118. package/docs/helpers/to_object.md +76 -76
  119. package/docs/helpers/to_string.md +134 -134
  120. package/docs/helpers/value.md +95 -0
  121. package/docs/helpers.md +53 -51
  122. package/docs/types/NaN.md +30 -30
  123. package/docs/types/array.md +252 -252
  124. package/docs/types/bigint.md +34 -34
  125. package/docs/types/boolean.md +47 -47
  126. package/docs/types/class.md +36 -36
  127. package/docs/types/float.md +35 -35
  128. package/docs/types/function.md +121 -121
  129. package/docs/types/infinity.md +32 -32
  130. package/docs/types/integer.md +35 -35
  131. package/docs/types/null.md +23 -23
  132. package/docs/types/object.md +62 -62
  133. package/docs/types/string.md +33 -33
  134. package/docs/types/symbol.md +29 -29
  135. package/docs/types/undefined.md +25 -25
  136. package/docs/types.md +44 -44
  137. package/eslint.config.mjs +1664 -1664
  138. package/index.mjs +43 -37
  139. package/jest.config.mjs +31 -31
  140. package/package.json +48 -47
  141. package/prettier.config.mjs +224 -224
  142. package/src/classes/Convert.mjs +818 -0
  143. package/src/classes/Type.mjs +1284 -0
  144. package/src/classes/Value.mjs +2846 -0
  145. package/src/constants.mjs +14 -0
  146. package/src/helpers/gettype.mjs +30 -14
  147. package/src/helpers/value.mjs +92 -0
  148. package/tests/classes/Convert.test.mjs +398 -0
  149. package/tests/classes/Type.test.mjs +1262 -0
  150. package/tests/classes/Value.test.mjs +423 -0
  151. package/tests/constants.test.mjs +75 -0
  152. package/tests/helpers/value.test.mjs +68 -0
@@ -0,0 +1,14 @@
1
+ export const TYPE_NULL = 'null';
2
+ export const TYPE_NAN = 'NaN';
3
+ export const TYPE_UNDEFINED = 'undefined';
4
+ export const TYPE_INFINITY = 'infinity';
5
+ export const TYPE_BOOLEAN = 'boolean';
6
+ export const TYPE_INTEGER = 'integer';
7
+ export const TYPE_BIGINT = 'bigint';
8
+ export const TYPE_FLOAT = 'float';
9
+ export const TYPE_STRING = 'string';
10
+ export const TYPE_SYMBOL = 'symbol';
11
+ export const TYPE_CLASS = 'class';
12
+ export const TYPE_FUNCTION = 'function';
13
+ export const TYPE_ARRAY = 'array';
14
+ export const TYPE_OBJECT = 'object';
@@ -12,6 +12,22 @@ import is_bool from './is_bool.mjs';
12
12
  import is_string from './is_string.mjs';
13
13
  import is_symbol from './is_symbol.mjs';
14
14
  import is_function from './is_function.mjs';
15
+ import {
16
+ TYPE_ARRAY,
17
+ TYPE_BIGINT,
18
+ TYPE_BOOLEAN,
19
+ TYPE_CLASS,
20
+ TYPE_FLOAT,
21
+ TYPE_FUNCTION,
22
+ TYPE_INFINITY,
23
+ TYPE_INTEGER,
24
+ TYPE_NAN,
25
+ TYPE_NULL,
26
+ TYPE_OBJECT,
27
+ TYPE_STRING,
28
+ TYPE_SYMBOL,
29
+ TYPE_UNDEFINED,
30
+ } from '../constants.mjs';
15
31
 
16
32
  /**
17
33
  * Определяет тип переданного значения.
@@ -74,59 +90,59 @@ import is_function from './is_function.mjs';
74
90
  */
75
91
  export default function gettype(value) {
76
92
  if (is_null(value)) {
77
- return 'null';
93
+ return TYPE_NULL;
78
94
  }
79
95
 
80
96
  if (is_nan(value)) {
81
- return 'NaN';
97
+ return TYPE_NAN;
82
98
  }
83
99
 
84
100
  if (is_undefined(value)) {
85
- return 'undefined';
101
+ return TYPE_UNDEFINED;
86
102
  }
87
103
 
88
104
  if (is_infinity(value)) {
89
- return 'infinity';
105
+ return TYPE_INFINITY;
90
106
  }
91
107
 
92
108
  if (is_bool(value)) {
93
- return 'boolean';
109
+ return TYPE_BOOLEAN;
94
110
  }
95
111
 
96
112
  if (is_int(value)) {
97
- return 'integer';
113
+ return TYPE_INTEGER;
98
114
  }
99
115
 
100
116
  if (is_bigint(value)) {
101
- return 'bigint';
117
+ return TYPE_BIGINT;
102
118
  }
103
119
 
104
120
  if (is_float(value)) {
105
- return 'float';
121
+ return TYPE_FLOAT;
106
122
  }
107
123
 
108
124
  if (is_string(value)) {
109
- return 'string';
125
+ return TYPE_STRING;
110
126
  }
111
127
 
112
128
  if (is_symbol(value)) {
113
- return 'symbol';
129
+ return TYPE_SYMBOL;
114
130
  }
115
131
 
116
132
  if (is_class(value)) {
117
- return 'class';
133
+ return TYPE_CLASS;
118
134
  }
119
135
 
120
136
  if (is_function(value)) {
121
- return 'function';
137
+ return TYPE_FUNCTION;
122
138
  }
123
139
 
124
140
  if (is_array(value)) {
125
- return 'array';
141
+ return TYPE_ARRAY;
126
142
  }
127
143
 
128
144
  if (is_object(value)) {
129
- return 'object';
145
+ return TYPE_OBJECT;
130
146
  }
131
147
 
132
148
  return typeof value;
@@ -0,0 +1,92 @@
1
+ import Value from '../classes/Value.mjs';
2
+
3
+ /**
4
+ * Создает новый экземпляр класса `Value` с заданным значением.
5
+ *
6
+ * ### Описание
7
+ *
8
+ * Функция `value` используется для создания нового экземпляра класса `Value` с переданным значением.
9
+ * Это позволяет легко обернуть значение в экземпляр класса `Value` и использовать методы класса для работы с этим значением.
10
+ *
11
+ * ### Параметры
12
+ *
13
+ * - `val` (any)
14
+ * Значение, которое необходимо обернуть в экземпляр класса `Value`.
15
+ *
16
+ * ### Возвращаемое значение
17
+ *
18
+ * Возвращает новый экземпляр класса `Value` с переданным значением.
19
+ *
20
+ * ### Примеры использования
21
+ *
22
+ * 1. Создание экземпляра класса `Value` с числом:
23
+ *
24
+ * ```js
25
+ * const valueInstance = value(123);
26
+ * console.log(valueInstance.get()); // 123
27
+ * console.log(valueInstance.getType()); // 'integer'
28
+ * console.log(valueInstance.isNumber()); // true
29
+ * ```
30
+ *
31
+ * 2. Создание экземпляра класса `Value` со строкой:
32
+ *
33
+ * ```js
34
+ * const valueInstance = value('example');
35
+ * console.log(valueInstance.get()); // 'example'
36
+ * console.log(valueInstance.getType()); // 'string'
37
+ * console.log(valueInstance.isString()); // true
38
+ * ```
39
+ *
40
+ * 3. Создание экземпляра класса `Value` с объектом:
41
+ *
42
+ * ```js
43
+ * const obj = { key: 'value' };
44
+ * const valueInstance = value(obj);
45
+ * console.log(valueInstance.get()); // { key: 'value' }
46
+ * console.log(valueInstance.getType()); // 'object'
47
+ * console.log(valueInstance.isObject()); // true
48
+ * ```
49
+ *
50
+ * 4. Создание экземпляра класса `Value` с массивом:
51
+ *
52
+ * ```js
53
+ * const arr = [1, 2, 3];
54
+ * const valueInstance = value(arr);
55
+ * console.log(valueInstance.get()); // [1, 2, 3]
56
+ * console.log(valueInstance.getType()); // 'array'
57
+ * console.log(valueInstance.isArray()); // true
58
+ * ```
59
+ *
60
+ * 5. Создание экземпляра класса `Value` с булевым значением:
61
+ *
62
+ * ```js
63
+ * const valueInstance = value(true);
64
+ * console.log(valueInstance.get()); // true
65
+ * console.log(valueInstance.getType()); // 'boolean'
66
+ * console.log(valueInstance.isBool()); // true
67
+ * ```
68
+ *
69
+ * 6. Создание экземпляра класса `Value` с null:
70
+ *
71
+ * ```js
72
+ * const valueInstance = value(null);
73
+ * console.log(valueInstance.get()); // null
74
+ * console.log(valueInstance.getType()); // 'null'
75
+ * console.log(valueInstance.isNull()); // true
76
+ * ```
77
+ *
78
+ * 7. Создание экземпляра класса `Value` с undefined:
79
+ *
80
+ * ```js
81
+ * const valueInstance = value(undefined);
82
+ * console.log(valueInstance.get()); // undefined
83
+ * console.log(valueInstance.getType()); // 'undefined'
84
+ * console.log(valueInstance.isUndefined()); // true
85
+ * ```
86
+ *
87
+ * @param {any} val Значение, которое необходимо обернуть в экземпляр класса `Value`.
88
+ * @returns {Value} Возвращает новый экземпляр класса `Value` с переданным значением.
89
+ */
90
+ export default function value(val) {
91
+ return new Value(val);
92
+ }
@@ -0,0 +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
+ });