@rogolev/value 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+ });