@rogolev/value 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (156) hide show
  1. package/CHANGELOG.md +177 -0
  2. package/docs/classes/Expect/toBe.md +61 -0
  3. package/docs/classes/Expect/toBeArray.md +52 -0
  4. package/docs/classes/Expect/toBeAssoc.md +53 -0
  5. package/docs/classes/Expect/toBeBigInt.md +52 -0
  6. package/docs/classes/Expect/toBeBool.md +53 -0
  7. package/docs/classes/Expect/toBeBoolean.md +53 -0
  8. package/docs/classes/Expect/toBeChar.md +53 -0
  9. package/docs/classes/Expect/toBeClass.md +53 -0
  10. package/docs/classes/Expect/toBeFloat.md +53 -0
  11. package/docs/classes/Expect/toBeFunction.md +52 -0
  12. package/docs/classes/Expect/toBeInfinity.md +53 -0
  13. package/docs/classes/Expect/toBeInt.md +53 -0
  14. package/docs/classes/Expect/toBeInteger.md +53 -0
  15. package/docs/classes/Expect/toBeList.md +53 -0
  16. package/docs/classes/Expect/toBeNaN.md +53 -0
  17. package/docs/classes/Expect/toBeNull.md +51 -0
  18. package/docs/classes/Expect/toBeNumber.md +52 -0
  19. package/docs/classes/Expect/toBeNumeric.md +53 -0
  20. package/docs/classes/Expect/toBeObject.md +52 -0
  21. package/docs/classes/Expect/toBeScalar.md +53 -0
  22. package/docs/classes/Expect/toBeString.md +52 -0
  23. package/docs/classes/Expect/toBeSymbol.md +53 -0
  24. package/docs/classes/Expect/toBeUndefined.md +54 -0
  25. package/docs/classes/Expect/toEqual.md +69 -0
  26. package/docs/classes/Expect/toStrictEqual.md +70 -0
  27. package/docs/classes/Expect.md +87 -0
  28. package/docs/classes/Type/expectArray.md +63 -0
  29. package/docs/classes/Type/expectAssoc.md +65 -0
  30. package/docs/classes/Type/expectBigInt.md +63 -0
  31. package/docs/classes/Type/expectBool.md +65 -0
  32. package/docs/classes/Type/expectBoolean.md +65 -0
  33. package/docs/classes/Type/expectChar.md +63 -0
  34. package/docs/classes/Type/expectClass.md +63 -0
  35. package/docs/classes/Type/expectFloat.md +68 -0
  36. package/docs/classes/Type/expectFunction.md +63 -0
  37. package/docs/classes/Type/expectInfinity.md +65 -0
  38. package/docs/classes/Type/expectInt.md +64 -0
  39. package/docs/classes/Type/expectInteger.md +64 -0
  40. package/docs/classes/Type/expectList.md +63 -0
  41. package/docs/classes/Type/expectNaN.md +63 -0
  42. package/docs/classes/Type/expectNull.md +63 -0
  43. package/docs/classes/Type/expectNumber.md +63 -0
  44. package/docs/classes/Type/expectNumeric.md +63 -0
  45. package/docs/classes/Type/expectObject.md +64 -0
  46. package/docs/classes/Type/expectScalar.md +63 -0
  47. package/docs/classes/Type/expectString.md +63 -0
  48. package/docs/classes/Type/expectSymbol.md +63 -0
  49. package/docs/classes/Type/expectUndefined.md +63 -0
  50. package/docs/classes/Type.md +101 -2
  51. package/docs/classes.md +2 -1
  52. package/docs/helpers/expect.md +58 -0
  53. package/docs/helpers/expect_array.md +63 -0
  54. package/docs/helpers/expect_assoc.md +65 -0
  55. package/docs/helpers/expect_bigint.md +63 -0
  56. package/docs/helpers/expect_bool.md +65 -0
  57. package/docs/helpers/expect_boolean.md +65 -0
  58. package/docs/helpers/expect_char.md +63 -0
  59. package/docs/helpers/expect_class.md +63 -0
  60. package/docs/helpers/expect_float.md +65 -0
  61. package/docs/helpers/expect_function.md +63 -0
  62. package/docs/helpers/expect_infinity.md +65 -0
  63. package/docs/helpers/expect_int.md +65 -0
  64. package/docs/helpers/expect_integer.md +65 -0
  65. package/docs/helpers/expect_list.md +63 -0
  66. package/docs/helpers/expect_nan.md +63 -0
  67. package/docs/helpers/expect_null.md +63 -0
  68. package/docs/helpers/expect_number.md +63 -0
  69. package/docs/helpers/expect_numeric.md +63 -0
  70. package/docs/helpers/expect_object.md +64 -0
  71. package/docs/helpers/expect_scalar.md +63 -0
  72. package/docs/helpers/expect_string.md +63 -0
  73. package/docs/helpers/expect_symbol.md +63 -0
  74. package/docs/helpers/expect_undefined.md +64 -0
  75. package/docs/helpers/is_equal.md +75 -0
  76. package/docs/helpers.md +47 -0
  77. package/index.mjs +25 -0
  78. package/package.json +1 -2
  79. package/src/classes/Expect.mjs +1445 -0
  80. package/src/classes/Type.mjs +2739 -1284
  81. package/src/constants.mjs +83 -14
  82. package/src/helpers/expect.mjs +44 -0
  83. package/src/helpers/expect_array.mjs +66 -0
  84. package/src/helpers/expect_assoc.mjs +66 -0
  85. package/src/helpers/expect_bigint.mjs +66 -0
  86. package/src/helpers/expect_bool.mjs +66 -0
  87. package/src/helpers/expect_boolean.mjs +57 -0
  88. package/src/helpers/expect_char.mjs +66 -0
  89. package/src/helpers/expect_class.mjs +66 -0
  90. package/src/helpers/expect_float.mjs +66 -0
  91. package/src/helpers/expect_function.mjs +66 -0
  92. package/src/helpers/expect_infinity.mjs +66 -0
  93. package/src/helpers/expect_int.mjs +66 -0
  94. package/src/helpers/expect_integer.mjs +57 -0
  95. package/src/helpers/expect_list.mjs +66 -0
  96. package/src/helpers/expect_nan.mjs +66 -0
  97. package/src/helpers/expect_null.mjs +66 -0
  98. package/src/helpers/expect_number.mjs +66 -0
  99. package/src/helpers/expect_numeric.mjs +66 -0
  100. package/src/helpers/expect_object.mjs +67 -0
  101. package/src/helpers/expect_scalar.mjs +66 -0
  102. package/src/helpers/expect_string.mjs +65 -0
  103. package/src/helpers/expect_symbol.mjs +66 -0
  104. package/src/helpers/expect_undefined.mjs +66 -0
  105. package/src/helpers/is_equal.mjs +94 -0
  106. package/tests/classes/Expect/toBe.test.mjs +60 -0
  107. package/tests/classes/Expect/toBeArray.test.mjs +46 -0
  108. package/tests/classes/Expect/toBeAssoc.test.mjs +48 -0
  109. package/tests/classes/Expect/toBeBigInt.test.mjs +46 -0
  110. package/tests/classes/Expect/toBeBool.test.mjs +48 -0
  111. package/tests/classes/Expect/toBeBoolean.test.mjs +48 -0
  112. package/tests/classes/Expect/toBeChar.test.mjs +46 -0
  113. package/tests/classes/Expect/toBeClass.test.mjs +48 -0
  114. package/tests/classes/Expect/toBeFloat.test.mjs +48 -0
  115. package/tests/classes/Expect/toBeFunction.test.mjs +51 -0
  116. package/tests/classes/Expect/toBeInfinity.test.mjs +48 -0
  117. package/tests/classes/Expect/toBeInt.test.mjs +48 -0
  118. package/tests/classes/Expect/toBeInteger.test.mjs +48 -0
  119. package/tests/classes/Expect/toBeList.test.mjs +46 -0
  120. package/tests/classes/Expect/toBeNaN.test.mjs +46 -0
  121. package/tests/classes/Expect/toBeNull.test.mjs +46 -0
  122. package/tests/classes/Expect/toBeNumber.test.mjs +46 -0
  123. package/tests/classes/Expect/toBeNumeric.test.mjs +53 -0
  124. package/tests/classes/Expect/toBeObject.test.mjs +47 -0
  125. package/tests/classes/Expect/toBeScalar.test.mjs +63 -0
  126. package/tests/classes/Expect/toBeString.test.mjs +46 -0
  127. package/tests/classes/Expect/toBeSymbol.test.mjs +46 -0
  128. package/tests/classes/Expect/toBeUndefined.test.mjs +50 -0
  129. package/tests/classes/Expect/toEqual.test.mjs +66 -0
  130. package/tests/classes/Expect/toStrictEqual.test.mjs +73 -0
  131. package/tests/classes/Type.test.mjs +1320 -1262
  132. package/tests/helpers/array.test.mjs +58 -58
  133. package/tests/helpers/expect.test.mjs +95 -0
  134. package/tests/helpers/expect_array.test.mjs +71 -0
  135. package/tests/helpers/expect_assoc.test.mjs +61 -0
  136. package/tests/helpers/expect_bigint.test.mjs +63 -0
  137. package/tests/helpers/expect_bool.test.mjs +59 -0
  138. package/tests/helpers/expect_boolean.test.mjs +61 -0
  139. package/tests/helpers/expect_char.test.mjs +63 -0
  140. package/tests/helpers/expect_class.test.mjs +64 -0
  141. package/tests/helpers/expect_float.test.mjs +64 -0
  142. package/tests/helpers/expect_function.test.mjs +65 -0
  143. package/tests/helpers/expect_infinity.test.mjs +62 -0
  144. package/tests/helpers/expect_int.test.mjs +57 -0
  145. package/tests/helpers/expect_integer.test.mjs +59 -0
  146. package/tests/helpers/expect_list.test.mjs +73 -0
  147. package/tests/helpers/expect_nan.test.mjs +57 -0
  148. package/tests/helpers/expect_null.test.mjs +57 -0
  149. package/tests/helpers/expect_number.test.mjs +57 -0
  150. package/tests/helpers/expect_numeric.test.mjs +57 -0
  151. package/tests/helpers/expect_object.test.mjs +63 -0
  152. package/tests/helpers/expect_scalar.test.mjs +72 -0
  153. package/tests/helpers/expect_string.test.mjs +65 -0
  154. package/tests/helpers/expect_symbol.test.mjs +66 -0
  155. package/tests/helpers/expect_undefined.test.mjs +59 -0
  156. package/tests/helpers/is_equal.test.mjs +110 -0
@@ -0,0 +1,1445 @@
1
+ import expect_array from '../helpers/expect_array.mjs';
2
+ import expect_assoc from '../helpers/expect_assoc.mjs';
3
+ import expect_bigint from '../helpers/expect_bigint.mjs';
4
+ import expect_bool from '../helpers/expect_bool.mjs';
5
+ import expect_char from '../helpers/expect_char.mjs';
6
+ import expect_class from '../helpers/expect_class.mjs';
7
+ import expect_float from '../helpers/expect_float.mjs';
8
+ import expect_function from '../helpers/expect_function.mjs';
9
+ import expect_infinity from '../helpers/expect_infinity.mjs';
10
+ import expect_int from '../helpers/expect_int.mjs';
11
+ import expect_list from '../helpers/expect_list.mjs';
12
+ import expect_nan from '../helpers/expect_nan.mjs';
13
+ import expect_null from '../helpers/expect_null.mjs';
14
+ import expect_number from '../helpers/expect_number.mjs';
15
+ import expect_numeric from '../helpers/expect_numeric.mjs';
16
+ import expect_object from '../helpers/expect_object.mjs';
17
+ import expect_scalar from '../helpers/expect_scalar.mjs';
18
+ import expect_string from '../helpers/expect_string.mjs';
19
+ import expect_symbol from '../helpers/expect_symbol.mjs';
20
+ import expect_undefined from '../helpers/expect_undefined.mjs';
21
+ import is_equal from '../helpers/is_equal.mjs';
22
+ import is_string from '../helpers/is_string.mjs';
23
+
24
+ /**
25
+ * Класс `Expect` предоставляет методы для проверки значений.
26
+ *
27
+ * ### Описание
28
+ *
29
+ * Класс `Expect` используется для создания объектов, которые могут проверять различные свойства и типы значений.
30
+ * Он предоставляет методы для проверки, такие как `toBe`, `toBeArray`, `toBeBigInt` и многие другие.
31
+ * Каждый метод выбрасывает ошибку, если проверка не проходит, и возвращает `true`, если проверка успешна.
32
+ *
33
+ * ### Методы
34
+ *
35
+ * - `toBe(expected, message)`: Проверяет, что фактическое значение строго равно ожидаемому значению.
36
+ * - `toBeArray(message)`: Проверяет, что фактическое значение является массивом.
37
+ * - `toBeAssoc(message)`: Проверяет, что фактическое значение является ассоциативным массивом.
38
+ * - `toBeBigInt(message)`: Проверяет, что фактическое значение является BigInt.
39
+ * - `toBeBool(message)`: Проверяет, что фактическое значение является логическим типом (boolean).
40
+ * - `toBeBoolean(message)`: Проверяет, что фактическое значение является логическим типом (boolean).
41
+ * - `toBeChar(message)`: Проверяет, что фактическое значение является символом (char).
42
+ * - `toBeClass(message)`: Проверяет, что фактическое значение является классом.
43
+ * - `toBeFloat(message)`: Проверяет, что фактическое значение является числом с плавающей запятой (float).
44
+ * - `toBeFunction(message)`: Проверяет, является ли значение функцией.
45
+ * - `toBeInfinity(message)`: Проверяет, является ли значение бесконечностью (Infinity).
46
+ * - `toBeInt(message)`: Проверяет, является ли значение целым числом (integer).
47
+ * - `toBeInteger(message)`: Проверяет, является ли значение целым числом (integer).
48
+ * - `toBeList(message)`: Проверяет, является ли значение списком (list).
49
+ * - `toBeNaN(message)`: Проверяет, является ли значение NaN (Not-a-Number).
50
+ * - `toBeNull(message)`: Проверяет, является ли значение null.
51
+ * - `toBeNumber(message)`: Проверяет, является ли значение числом.
52
+ * - `toBeNumeric(message)`: Проверяет, является ли значение числовым.
53
+ * - `toBeObject(message)`: Проверяет, является ли значение объектом.
54
+ * - `toBeScalar(message)`: Проверяет, является ли значение скалярным (boolean, number, string, или symbol).
55
+ * - `toBeString(message)`: Проверяет, является ли значение строкой.
56
+ * - `toBeSymbol(message)`: Проверяет, является ли значение символом (Symbol).
57
+ * - `toBeUndefined(message)`: Проверяет, является ли значение undefined.
58
+ * - `toEqual(expected, message)`: Проверяет, что фактическое значение эквивалентно ожидаемому значению.
59
+ * - `toStrictEqual(expected, message)`: Проверяет, что фактическое значение строго эквивалентно ожидаемому значению.
60
+ *
61
+ * ### Примеры использования
62
+ *
63
+ * 1. Создание экземпляра класса `Expect` и проверка значения:
64
+ *
65
+ * ```js
66
+ * const expect = new Expect(5);
67
+ * expect.toBe(5); // true
68
+ * ```
69
+ *
70
+ * 2. Проверка значения, являющегося массивом:
71
+ *
72
+ * ```js
73
+ * const expect = new Expect([1, 2, 3]);
74
+ * expect.toBeArray(); // true
75
+ * ```
76
+ *
77
+ * 3. Проверка значения, являющегося BigInt:
78
+ *
79
+ * ```js
80
+ * const expect = new Expect(123n);
81
+ * expect.toBeBigInt(); // true
82
+ * ```
83
+ */
84
+ class Expect {
85
+ /**
86
+ * Приватное поле, содержащее значение, которое будет проверяться методами класса.
87
+ *
88
+ * ### Описание
89
+ *
90
+ * Поле `#actual` используется для хранения значения, переданного в конструктор класса `Expect`.
91
+ * Это значение затем используется различными методами класса для выполнения проверок.
92
+ * Поле является приватным, что означает, что оно не может быть доступно или изменено извне класса.
93
+ */
94
+ #actual;
95
+
96
+ /**
97
+ * Создает экземпляр класса `Expect`.
98
+ *
99
+ * ### Описание
100
+ *
101
+ * Конструктор класса `Expect` используется для создания нового экземпляра этого класса.
102
+ * Он принимает одно значение, которое будет проверяться методами класса.
103
+ * Это значение сохраняется в приватное поле `#actual`.
104
+ *
105
+ * ### Параметры
106
+ *
107
+ * - `actual` (any): Значение, которое будет проверяться методами класса.
108
+ *
109
+ * ### Примеры использования
110
+ *
111
+ * 1. Создание экземпляра класса `Expect` с числовым значением:
112
+ *
113
+ * ```js
114
+ * const expect = new Expect(5);
115
+ * ```
116
+ *
117
+ * 2. Создание экземпляра класса `Expect` со строковым значением:
118
+ *
119
+ * ```js
120
+ * const expect = new Expect('hello');
121
+ * ```
122
+ *
123
+ * 3. Создание экземпляра класса `Expect` с объектом:
124
+ *
125
+ * ```js
126
+ * const expect = new Expect({ a: 1, b: 2 });
127
+ * ```
128
+ *
129
+ * @param {any} actual Значение, которое будет проверяться методами класса.
130
+ */
131
+ constructor(actual) {
132
+ this.#actual = actual;
133
+ }
134
+
135
+ /**
136
+ * Проверяет, что фактическое значение строго равно ожидаемому значению.
137
+ *
138
+ * ### Описание
139
+ *
140
+ * Метод `toBe` используется для проверки, что фактическое значение (`actual`) строго равно ожидаемому значению (`expected`).
141
+ * Строгое равенство проверяется с использованием метода `Object.is`, который учитывает типы значений.
142
+ * Если значения не равны, выбрасывается ошибка типа `TypeError` с указанным сообщением.
143
+ *
144
+ * ### Параметры
145
+ *
146
+ * - `expected` (any): Ожидаемое значение для сравнения.
147
+ * - `message` (string): Сообщение об ошибке, если значения не равны. По умолчанию пустая строка.
148
+ *
149
+ * ### Возвращаемое значение
150
+ *
151
+ * Возвращает `true`, если значения равны.
152
+ *
153
+ * ### Примеры использования
154
+ *
155
+ * 1. Проверка равенства чисел:
156
+ *
157
+ * ```js
158
+ * const expect = new Expect(5);
159
+ * expect.toBe(5); // true
160
+ * ```
161
+ *
162
+ * 2. Проверка равенства строк:
163
+ *
164
+ * ```js
165
+ * const expect = new Expect('hello');
166
+ * expect.toBe('hello'); // true
167
+ * ```
168
+ *
169
+ * 3. Проверка неравенства с сообщением об ошибке:
170
+ *
171
+ * ```js
172
+ * const expect = new Expect(5);
173
+ * try {
174
+ * expect.toBe(10, 'Значения не равны');
175
+ * } catch (e) {
176
+ * console.error(e.message); // Значения не равны
177
+ * }
178
+ * ```
179
+ *
180
+ * @param {any} expected Ожидаемое значение для сравнения.
181
+ * @param {string} [message=''] Сообщение об ошибке, если значения не равны.
182
+ * @returns {boolean} Возвращает `true`, если значения равны.
183
+ * @throws {TypeError} Если значения не равны.
184
+ */
185
+ toBe(expected, message = '') {
186
+ if (!is_string(message)) {
187
+ throw new TypeError('Параметр "message" должен быть строкой.');
188
+ }
189
+
190
+ if (!Object.is(this.#actual, expected)) {
191
+ throw new TypeError(message);
192
+ }
193
+
194
+ return true;
195
+ }
196
+
197
+ /**
198
+ * Проверяет, что фактическое значение является массивом.
199
+ *
200
+ * ### Описание
201
+ *
202
+ * Метод `toBeArray` используется для проверки, что фактическое значение (`actual`) является массивом.
203
+ * Если значение не является массивом, выбрасывается ошибка типа `TypeError` с указанным сообщением.
204
+ *
205
+ * ### Параметры
206
+ *
207
+ * - `message` (string): Сообщение об ошибке, если значение не является массивом. По умолчанию пустая строка.
208
+ *
209
+ * ### Возвращаемое значение
210
+ *
211
+ * Возвращает `true`, если значение является массивом.
212
+ *
213
+ * ### Примеры использования
214
+ *
215
+ * 1. Проверка значения, являющегося массивом:
216
+ *
217
+ * ```js
218
+ * const expect = new Expect([1, 2, 3]);
219
+ * expect.toBeArray(); // true
220
+ * ```
221
+ *
222
+ * 2. Проверка значения, не являющегося массивом:
223
+ *
224
+ * ```js
225
+ * const expect = new Expect('not an array');
226
+ * try {
227
+ * expect.toBeArray('Значение должно быть массивом');
228
+ * } catch (e) {
229
+ * console.error(e.message); // Значение должно быть массивом
230
+ * }
231
+ * ```
232
+ *
233
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является массивом.
234
+ * @returns {boolean} Возвращает `true`, если значение является массивом.
235
+ * @throws {TypeError} Если значение не является массивом.
236
+ */
237
+ toBeArray(message = '') {
238
+ return expect_array(this.#actual, message);
239
+ }
240
+
241
+ /**
242
+ * Проверяет, что фактическое значение является ассоциативным массивом.
243
+ *
244
+ * ### Описание
245
+ *
246
+ * Метод `toBeAssoc` используется для проверки, что фактическое значение (`actual`) является ассоциативным массивом.
247
+ * Если значение не является ассоциативным массивом, выбрасывается ошибка типа `TypeError` с указанным сообщением.
248
+ *
249
+ * ### Параметры
250
+ *
251
+ * - `message` (string): Сообщение об ошибке, если значение не является ассоциативным массивом. По умолчанию пустая строка.
252
+ *
253
+ * ### Возвращаемое значение
254
+ *
255
+ * Возвращает `true`, если значение является ассоциативным массивом.
256
+ *
257
+ * ### Примеры использования
258
+ *
259
+ * 1. Проверка значения, являющегося ассоциативным массивом:
260
+ *
261
+ * ```js
262
+ * const expect = new Expect({ a: 1, b: 2, c: 3 });
263
+ * expect.toBeAssoc(); // true
264
+ * ```
265
+ *
266
+ * 2. Проверка значения, не являющегося ассоциативным массивом:
267
+ *
268
+ * ```js
269
+ * const expect = new Expect([1, 2, 3]);
270
+ * try {
271
+ * expect.toBeAssoc('Значение должно быть ассоциативным массивом');
272
+ * } catch (e) {
273
+ * console.error(e.message); // Значение должно быть ассоциативным массивом
274
+ * }
275
+ * ```
276
+ *
277
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является ассоциативным массивом.
278
+ * @returns {boolean} Возвращает `true`, если значение является ассоциативным массивом.
279
+ * @throws {TypeError} Если значение не является ассоциативным массивом.
280
+ */
281
+ toBeAssoc(message = '') {
282
+ return expect_assoc(this.#actual, message);
283
+ }
284
+
285
+ /**
286
+ * Проверяет, что фактическое значение является BigInt.
287
+ *
288
+ * ### Описание
289
+ *
290
+ * Метод `toBeBigInt` используется для проверки, что фактическое значение (`actual`) является BigInt.
291
+ * Если значение не является BigInt, выбрасывается ошибка типа `TypeError` с указанным сообщением.
292
+ *
293
+ * ### Параметры
294
+ *
295
+ * - `message` (string): Сообщение об ошибке, если значение не является BigInt. По умолчанию пустая строка.
296
+ *
297
+ * ### Возвращаемое значение
298
+ *
299
+ * Возвращает `true`, если значение является BigInt.
300
+ *
301
+ * ### Примеры использования
302
+ *
303
+ * 1. Проверка значения, являющегося BigInt:
304
+ *
305
+ * ```js
306
+ * const expect = new Expect(123n);
307
+ * expect.toBeBigInt(); // true
308
+ * ```
309
+ *
310
+ * 2. Проверка значения, не являющегося BigInt:
311
+ *
312
+ * ```js
313
+ * const expect = new Expect(123);
314
+ * try {
315
+ * expect.toBeBigInt('Значение должно быть BigInt');
316
+ * } catch (e) {
317
+ * console.error(e.message); // Значение должно быть BigInt
318
+ * }
319
+ * ```
320
+ *
321
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является BigInt.
322
+ * @returns {boolean} Возвращает `true`, если значение является BigInt.
323
+ * @throws {TypeError} Если значение не является BigInt.
324
+ */
325
+ toBeBigInt(message = '') {
326
+ return expect_bigint(this.#actual, message);
327
+ }
328
+
329
+ /**
330
+ * Проверяет, что фактическое значение является логическим типом (boolean).
331
+ *
332
+ * ### Описание
333
+ *
334
+ * Метод `toBeBool` используется для проверки, что фактическое значение (`actual`) является логическим типом (`boolean`).
335
+ * Если значение не является логическим типом, выбрасывается ошибка типа `TypeError` с указанным сообщением.
336
+ *
337
+ * ### Параметры
338
+ *
339
+ * - `message` (string): Сообщение об ошибке, если значение не является логическим типом. По умолчанию пустая строка.
340
+ *
341
+ * ### Возвращаемое значение
342
+ *
343
+ * Возвращает `true`, если значение является логическим типом.
344
+ *
345
+ * ### Примеры использования
346
+ *
347
+ * 1. Проверка значения, являющегося логическим типом:
348
+ *
349
+ * ```js
350
+ * const expect = new Expect(true);
351
+ * expect.toBeBool(); // true
352
+ * ```
353
+ *
354
+ * 2. Проверка значения, не являющегося логическим типом:
355
+ *
356
+ * ```js
357
+ * const expect = new Expect(1);
358
+ * try {
359
+ * expect.toBeBool('Значение должно быть логическим типом');
360
+ * } catch (e) {
361
+ * console.error(e.message); // Значение должно быть логическим типом
362
+ * }
363
+ * ```
364
+ *
365
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является логическим типом.
366
+ * @returns {boolean} Возвращает `true`, если значение является логическим типом.
367
+ * @throws {TypeError} Если значение не является логическим типом.
368
+ */
369
+ toBeBool(message = '') {
370
+ return expect_bool(this.#actual, message);
371
+ }
372
+
373
+ /**
374
+ * Проверяет, что фактическое значение является логическим типом (boolean).
375
+ *
376
+ * ### Описание
377
+ *
378
+ * Метод `toBeBoolean` используется для проверки, что фактическое значение (`actual`) является логическим типом (`boolean`).
379
+ * Если значение не является логическим типом, выбрасывается ошибка типа `TypeError` с указанным сообщением.
380
+ *
381
+ * ### Параметры
382
+ *
383
+ * - `message` (string): Сообщение об ошибке, если значение не является логическим типом. По умолчанию пустая строка.
384
+ *
385
+ * ### Возвращаемое значение
386
+ *
387
+ * Возвращает `true`, если значение является логическим типом.
388
+ *
389
+ * ### Примеры использования
390
+ *
391
+ * 1. Проверка значения, являющегося логическим типом:
392
+ *
393
+ * ```js
394
+ * const expect = new Expect(false);
395
+ * expect.toBeBoolean(); // true
396
+ * ```
397
+ *
398
+ * 2. Проверка значения, не являющегося логическим типом:
399
+ *
400
+ * ```js
401
+ * const expect = new Expect(0);
402
+ * try {
403
+ * expect.toBeBoolean('Значение должно быть логическим типом');
404
+ * } catch (e) {
405
+ * console.error(e.message); // Значение должно быть логическим типом
406
+ * }
407
+ * ```
408
+ *
409
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является логическим типом.
410
+ * @returns {boolean} Возвращает `true`, если значение является логическим типом.
411
+ * @throws {TypeError} Если значение не является логическим типом.
412
+ */
413
+ toBeBoolean(message = '') {
414
+ return expect_bool(this.#actual, message);
415
+ }
416
+
417
+ /**
418
+ * Проверяет, что фактическое значение является символом (char).
419
+ *
420
+ * ### Описание
421
+ *
422
+ * Метод `toBeChar` используется для проверки, что фактическое значение (`actual`) является символом (строкой длиной 1).
423
+ * Если значение не является символом, выбрасывается ошибка типа `TypeError` с указанным сообщением.
424
+ *
425
+ * ### Параметры
426
+ *
427
+ * - `message` (string): Сообщение об ошибке, если значение не является символом. По умолчанию пустая строка.
428
+ *
429
+ * ### Возвращаемое значение
430
+ *
431
+ * Возвращает `true`, если значение является символом.
432
+ *
433
+ * ### Примеры использования
434
+ *
435
+ * 1. Проверка значения, являющегося символом:
436
+ *
437
+ * ```js
438
+ * const expect = new Expect('a');
439
+ * expect.toBeChar(); // true
440
+ * ```
441
+ *
442
+ * 2. Проверка значения, не являющегося символом:
443
+ *
444
+ * ```js
445
+ * const expect = new Expect('abc');
446
+ * try {
447
+ * expect.toBeChar('Значение должно быть символом');
448
+ * } catch (e) {
449
+ * console.error(e.message); // Значение должно быть символом
450
+ * }
451
+ * ```
452
+ *
453
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является символом.
454
+ * @returns {boolean} Возвращает `true`, если значение является символом.
455
+ * @throws {TypeError} Если значение не является символом.
456
+ */
457
+ toBeChar(message = '') {
458
+ return expect_char(this.#actual, message);
459
+ }
460
+
461
+ /**
462
+ * Проверяет, что фактическое значение является классом.
463
+ *
464
+ * ### Описание
465
+ *
466
+ * Метод `toBeClass` используется для проверки, что фактическое значение (`actual`) является классом.
467
+ * Если значение не является классом, выбрасывается ошибка типа `TypeError` с указанным сообщением.
468
+ *
469
+ * ### Параметры
470
+ *
471
+ * - `message` (string): Сообщение об ошибке, если значение не является классом. По умолчанию пустая строка.
472
+ *
473
+ * ### Возвращаемое значение
474
+ *
475
+ * Возвращает `true`, если значение является классом.
476
+ *
477
+ * ### Примеры использования
478
+ *
479
+ * 1. Проверка значения, являющегося классом:
480
+ *
481
+ * ```js
482
+ * class MyClass {}
483
+ * const expect = new Expect(MyClass);
484
+ * expect.toBeClass(); // true
485
+ * ```
486
+ *
487
+ * 2. Проверка значения, не являющегося классом:
488
+ *
489
+ * ```js
490
+ * const expect = new Expect(function() {});
491
+ * try {
492
+ * expect.toBeClass('Значение должно быть классом');
493
+ * } catch (e) {
494
+ * console.error(e.message); // Значение должно быть классом
495
+ * }
496
+ * ```
497
+ *
498
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является классом.
499
+ * @returns {boolean} Возвращает `true`, если значение является классом.
500
+ * @throws {TypeError} Если значение не является классом.
501
+ */
502
+ toBeClass(message = '') {
503
+ return expect_class(this.#actual, message);
504
+ }
505
+
506
+ /**
507
+ * Проверяет, что фактическое значение является числом с плавающей запятой (float).
508
+ *
509
+ * ### Описание
510
+ *
511
+ * Метод `toBeFloat` используется для проверки, что фактическое значение (`actual`) является числом с плавающей запятой (float).
512
+ * Если значение не является числом с плавающей запятой, выбрасывается ошибка типа `TypeError` с указанным сообщением.
513
+ *
514
+ * ### Параметры
515
+ *
516
+ * - `message` (string): Сообщение об ошибке, если значение не является числом с плавающей запятой. По умолчанию пустая строка.
517
+ *
518
+ * ### Возвращаемое значение
519
+ *
520
+ * Возвращает `true`, если значение является числом с плавающей запятой.
521
+ *
522
+ * ### Примеры использования
523
+ *
524
+ * 1. Проверка значения, являющегося числом с плавающей запятой:
525
+ *
526
+ * ```js
527
+ * const expect = new Expect(3.14);
528
+ * expect.toBeFloat(); // true
529
+ * ```
530
+ *
531
+ * 2. Проверка значения, не являющегося числом с плавающей запятой:
532
+ *
533
+ * ```js
534
+ * const expect = new Expect(3);
535
+ * try {
536
+ * expect.toBeFloat('Значение должно быть числом с плавающей запятой');
537
+ * } catch (e) {
538
+ * console.error(e.message); // Значение должно быть числом с плавающей запятой
539
+ * }
540
+ * ```
541
+ *
542
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является числом с плавающей запятой.
543
+ * @returns {boolean} Возвращает `true`, если значение является числом с плавающей запятой.
544
+ * @throws {TypeError} Если значение не является числом с плавающей запятой.
545
+ */
546
+ toBeFloat(message = '') {
547
+ return expect_float(this.#actual, message);
548
+ }
549
+
550
+ /**
551
+ * Проверяет, является ли значение функцией, и выбрасывает ошибку с указанным сообщением, если это не так.
552
+ *
553
+ * ### Описание
554
+ *
555
+ * Метод `toBeFunction` используется для проверки, является ли переданное значение функцией.
556
+ * Если значение не является функцией, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
557
+ *
558
+ * ### Параметры
559
+ *
560
+ * - `message` (string): Сообщение об ошибке, если значение не является функцией. По умолчанию пустая строка.
561
+ *
562
+ * ### Возвращаемое значение
563
+ *
564
+ * Возвращает `true`, если значение является функцией.
565
+ *
566
+ * ### Примеры использования
567
+ *
568
+ * 1. Проверка значения, являющегося функцией:
569
+ *
570
+ * ```js
571
+ * function myFunction() {}
572
+ * const result = new Expect(myFunction).toBeFunction();
573
+ * console.log(result); // true
574
+ * ```
575
+ *
576
+ * 2. Проверка значения, не являющегося функцией:
577
+ *
578
+ * ```js
579
+ * try {
580
+ * const result = new Expect(123).toBeFunction('Значение должно быть функцией.');
581
+ * } catch (e) {
582
+ * console.error(e.message); // Значение должно быть функцией.
583
+ * }
584
+ * ```
585
+ *
586
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
587
+ *
588
+ * ```js
589
+ * try {
590
+ * const result = new Expect('not a function').toBeFunction('Ожидалась функция.');
591
+ * } catch (e) {
592
+ * console.error(e.message); // Ожидалась функция.
593
+ * }
594
+ * ```
595
+ *
596
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является функцией.
597
+ * @returns {boolean} Возвращает `true`, если значение является функцией.
598
+ * @throws {TypeError} Если значение не является функцией или если параметр `message` не является строкой.
599
+ */
600
+ toBeFunction(message = '') {
601
+ return expect_function(this.#actual, message);
602
+ }
603
+
604
+ /**
605
+ * Проверяет, является ли значение бесконечностью (Infinity), и выбрасывает ошибку с указанным сообщением, если это не так.
606
+ *
607
+ * ### Описание
608
+ *
609
+ * Метод `toBeInfinity` используется для проверки, является ли переданное значение бесконечностью (Infinity).
610
+ * Если значение не является бесконечностью, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
611
+ *
612
+ * ### Параметры
613
+ *
614
+ * - `message` (string): Сообщение об ошибке, если значение не является бесконечностью. По умолчанию пустая строка.
615
+ *
616
+ * ### Возвращаемое значение
617
+ *
618
+ * Возвращает `true`, если значение является бесконечностью.
619
+ *
620
+ * ### Примеры использования
621
+ *
622
+ * 1. Проверка значения, являющегося бесконечностью:
623
+ *
624
+ * ```js
625
+ * const value = Infinity;
626
+ * const result = new Expect(value).toBeInfinity();
627
+ * console.log(result); // true
628
+ * ```
629
+ *
630
+ * 2. Проверка значения, не являющегося бесконечностью:
631
+ *
632
+ * ```js
633
+ * try {
634
+ * const result = new Expect(123).toBeInfinity('Значение должно быть бесконечностью.');
635
+ * } catch (e) {
636
+ * console.error(e.message); // Значение должно быть бесконечностью.
637
+ * }
638
+ * ```
639
+ *
640
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
641
+ *
642
+ * ```js
643
+ * try {
644
+ * const result = new Expect('not infinity').toBeInfinity('Ожидалась бесконечность.');
645
+ * } catch (e) {
646
+ * console.error(e.message); // Ожидалась бесконечность.
647
+ * }
648
+ * ```
649
+ *
650
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является бесконечностью.
651
+ * @returns {boolean} Возвращает `true`, если значение является бесконечностью.
652
+ * @throws {TypeError} Если значение не является бесконечностью или если параметр `message` не является строкой.
653
+ */
654
+ toBeInfinity(message = '') {
655
+ return expect_infinity(this.#actual, message);
656
+ }
657
+
658
+ /**
659
+ * Проверяет, является ли значение целым числом (integer), и выбрасывает ошибку с указанным сообщением, если это не так.
660
+ *
661
+ * ### Описание
662
+ *
663
+ * Метод `toBeInt` используется для проверки, является ли переданное значение целым числом (integer).
664
+ * Если значение не является целым числом, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
665
+ *
666
+ * ### Параметры
667
+ *
668
+ * - `message` (string): Сообщение об ошибке, если значение не является целым числом. По умолчанию пустая строка.
669
+ *
670
+ * ### Возвращаемое значение
671
+ *
672
+ * Возвращает `true`, если значение является целым числом.
673
+ *
674
+ * ### Примеры использования
675
+ *
676
+ * 1. Проверка значения, являющегося целым числом:
677
+ *
678
+ * ```js
679
+ * const value = 123;
680
+ * const result = new Expect(value).toBeInt();
681
+ * console.log(result); // true
682
+ * ```
683
+ *
684
+ * 2. Проверка значения, не являющегося целым числом:
685
+ *
686
+ * ```js
687
+ * try {
688
+ * const result = new Expect(123.45).toBeInt('Значение должно быть целым числом.');
689
+ * } catch (e) {
690
+ * console.error(e.message); // Значение должно быть целым числом.
691
+ * }
692
+ * ```
693
+ *
694
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
695
+ *
696
+ * ```js
697
+ * try {
698
+ * const result = new Expect('123').toBeInt('Ожидалось целое число.');
699
+ * } catch (e) {
700
+ * console.error(e.message); // Ожидалось целое число.
701
+ * }
702
+ * ```
703
+ *
704
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является целым числом.
705
+ * @returns {boolean} Возвращает `true`, если значение является целым числом.
706
+ * @throws {TypeError} Если значение не является целым числом или если параметр `message` не является строкой.
707
+ */
708
+ toBeInt(message = '') {
709
+ return expect_int(this.#actual, message);
710
+ }
711
+
712
+ /**
713
+ * Проверяет, является ли значение целым числом (integer), и выбрасывает ошибку с указанным сообщением, если это не так.
714
+ *
715
+ * ### Описание
716
+ *
717
+ * Метод `toBeInteger` используется для проверки, является ли переданное значение целым числом (integer).
718
+ * Если значение не является целым числом, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
719
+ *
720
+ * ### Параметры
721
+ *
722
+ * - `message` (string): Сообщение об ошибке, если значение не является целым числом. По умолчанию пустая строка.
723
+ *
724
+ * ### Возвращаемое значение
725
+ *
726
+ * Возвращает `true`, если значение является целым числом.
727
+ *
728
+ * ### Примеры использования
729
+ *
730
+ * 1. Проверка значения, являющегося целым числом:
731
+ *
732
+ * ```js
733
+ * const value = 123;
734
+ * const result = new Expect(value).toBeInteger();
735
+ * console.log(result); // true
736
+ * ```
737
+ *
738
+ * 2. Проверка значения, не являющегося целым числом:
739
+ *
740
+ * ```js
741
+ * try {
742
+ * const result = new Expect(123.45).toBeInteger('Значение должно быть целым числом.');
743
+ * } catch (e) {
744
+ * console.error(e.message); // Значение должно быть целым числом.
745
+ * }
746
+ * ```
747
+ *
748
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
749
+ *
750
+ * ```js
751
+ * try {
752
+ * const result = new Expect('123').toBeInteger('Ожидалось целое число.');
753
+ * } catch (e) {
754
+ * console.error(e.message); // Ожидалось целое число.
755
+ * }
756
+ * ```
757
+ *
758
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является целым числом.
759
+ * @returns {boolean} Возвращает `true`, если значение является целым числом.
760
+ * @throws {TypeError} Если значение не является целым числом или если параметр `message` не является строкой.
761
+ */
762
+ toBeInteger(message = '') {
763
+ return expect_int(this.#actual, message);
764
+ }
765
+
766
+ /**
767
+ * Проверяет, является ли значение списком (list), и выбрасывает ошибку с указанным сообщением, если это не так.
768
+ *
769
+ * ### Описание
770
+ *
771
+ * Метод `toBeList` используется для проверки, является ли переданное значение списком (list).
772
+ * Если значение не является списком, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
773
+ *
774
+ * ### Параметры
775
+ *
776
+ * - `message` (string): Сообщение об ошибке, если значение не является списком. По умолчанию пустая строка.
777
+ *
778
+ * ### Возвращаемое значение
779
+ *
780
+ * Возвращает `true`, если значение является списком.
781
+ *
782
+ * ### Примеры использования
783
+ *
784
+ * 1. Проверка значения, являющегося списком:
785
+ *
786
+ * ```js
787
+ * const value = [1, 2, 3];
788
+ * const result = new Expect(value).toBeList();
789
+ * console.log(result); // true
790
+ * ```
791
+ *
792
+ * 2. Проверка значения, не являющегося списком:
793
+ *
794
+ * ```js
795
+ * try {
796
+ * const result = new Expect('not a list').toBeList('Значение должно быть списком.');
797
+ * } catch (e) {
798
+ * console.error(e.message); // Значение должно быть списком.
799
+ * }
800
+ * ```
801
+ *
802
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
803
+ *
804
+ * ```js
805
+ * try {
806
+ * const result = new Expect(123).toBeList('Ожидался список.');
807
+ * } catch (e) {
808
+ * console.error(e.message); // Ожидался список.
809
+ * }
810
+ * ```
811
+ *
812
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является списком.
813
+ * @returns {boolean} Возвращает `true`, если значение является списком.
814
+ * @throws {TypeError} Если значение не является списком или если параметр `message` не является строкой.
815
+ */
816
+ toBeList(message = '') {
817
+ return expect_list(this.#actual, message);
818
+ }
819
+
820
+ /**
821
+ * Проверяет, является ли значение NaN (Not-a-Number), и выбрасывает ошибку с указанным сообщением, если это не так.
822
+ *
823
+ * ### Описание
824
+ *
825
+ * Метод `toBeNaN` используется для проверки, является ли переданное значение NaN (Not-a-Number).
826
+ * Если значение не является NaN, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
827
+ *
828
+ * ### Параметры
829
+ *
830
+ * - `message` (string): Сообщение об ошибке, если значение не является NaN. По умолчанию пустая строка.
831
+ *
832
+ * ### Возвращаемое значение
833
+ *
834
+ * Возвращает `true`, если значение является NaN.
835
+ *
836
+ * ### Примеры использования
837
+ *
838
+ * 1. Проверка значения, являющегося NaN:
839
+ *
840
+ * ```js
841
+ * const value = NaN;
842
+ * const result = new Expect(value).toBeNaN();
843
+ * console.log(result); // true
844
+ * ```
845
+ *
846
+ * 2. Проверка значения, не являющегося NaN:
847
+ *
848
+ * ```js
849
+ * try {
850
+ * const result = new Expect(123).toBeNaN('Значение должно быть NaN.');
851
+ * } catch (e) {
852
+ * console.error(e.message); // Значение должно быть NaN.
853
+ * }
854
+ * ```
855
+ *
856
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
857
+ *
858
+ * ```js
859
+ * try {
860
+ * const result = new Expect('not NaN').toBeNaN('Ожидалось значение NaN.');
861
+ * } catch (e) {
862
+ * console.error(e.message); // Ожидалось значение NaN.
863
+ * }
864
+ * ```
865
+ *
866
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является NaN.
867
+ * @returns {boolean} Возвращает `true`, если значение является NaN.
868
+ * @throws {TypeError} Если значение не является NaN или если параметр `message` не является строкой.
869
+ */
870
+ toBeNaN(message = '') {
871
+ return expect_nan(this.#actual, message);
872
+ }
873
+
874
+ /**
875
+ * Проверяет, является ли значение null, и выбрасывает ошибку с указанным сообщением, если это не так.
876
+ *
877
+ * ### Описание
878
+ *
879
+ * Метод `toBeNull` используется для проверки, является ли переданное значение null.
880
+ * Если значение не является null, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
881
+ *
882
+ * ### Параметры
883
+ *
884
+ * - `message` (string): Сообщение об ошибке, если значение не является null. По умолчанию пустая строка.
885
+ *
886
+ * ### Возвращаемое значение
887
+ *
888
+ * Возвращает `true`, если значение является null.
889
+ *
890
+ * ### Примеры использования
891
+ *
892
+ * 1. Проверка значения, являющегося null:
893
+ *
894
+ * ```js
895
+ * const value = null;
896
+ * const result = new Expect(value).toBeNull();
897
+ * console.log(result); // true
898
+ * ```
899
+ *
900
+ * 2. Проверка значения, не являющегося null:
901
+ *
902
+ * ```js
903
+ * try {
904
+ * const result = new Expect(123).toBeNull('Значение должно быть null.');
905
+ * } catch (e) {
906
+ * console.error(e.message); // Значение должно быть null.
907
+ * }
908
+ * ```
909
+ *
910
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
911
+ *
912
+ * ```js
913
+ * try {
914
+ * const result = new Expect('not null').toBeNull('Ожидалось значение null.');
915
+ * } catch (e) {
916
+ * console.error(e.message); // Ожидалось значение null.
917
+ * }
918
+ * ```
919
+ *
920
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является null.
921
+ * @returns {boolean} Возвращает `true`, если значение является null.
922
+ * @throws {TypeError} Если значение не является null или если параметр `message` не является строкой.
923
+ */
924
+ toBeNull(message = '') {
925
+ return expect_null(this.#actual, message);
926
+ }
927
+
928
+ /**
929
+ * Проверяет, является ли значение числом, и выбрасывает ошибку с указанным сообщением, если это не так.
930
+ *
931
+ * ### Описание
932
+ *
933
+ * Метод `toBeNumber` используется для проверки, является ли переданное значение числом.
934
+ * Если значение не является числом, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
935
+ *
936
+ * ### Параметры
937
+ *
938
+ * - `message` (string): Сообщение об ошибке, если значение не является числом. По умолчанию пустая строка.
939
+ *
940
+ * ### Возвращаемое значение
941
+ *
942
+ * Возвращает `true`, если значение является числом.
943
+ *
944
+ * ### Примеры использования
945
+ *
946
+ * 1. Проверка значения, являющегося числом:
947
+ *
948
+ * ```js
949
+ * const value = 123;
950
+ * const result = new Expect(value).toBeNumber();
951
+ * console.log(result); // true
952
+ * ```
953
+ *
954
+ * 2. Проверка значения, не являющегося числом:
955
+ *
956
+ * ```js
957
+ * try {
958
+ * const result = new Expect('123').toBeNumber('Значение должно быть числом.');
959
+ * } catch (e) {
960
+ * console.error(e.message); // Значение должно быть числом.
961
+ * }
962
+ * ```
963
+ *
964
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
965
+ *
966
+ * ```js
967
+ * try {
968
+ * const result = new Expect('not a number').toBeNumber('Ожидалось число.');
969
+ * } catch (e) {
970
+ * console.error(e.message); // Ожидалось число.
971
+ * }
972
+ * ```
973
+ *
974
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является числом.
975
+ * @returns {boolean} Возвращает `true`, если значение является числом.
976
+ * @throws {TypeError} Если значение не является числом или если параметр `message` не является строкой.
977
+ */
978
+ toBeNumber(message = '') {
979
+ return expect_number(this.#actual, message);
980
+ }
981
+
982
+ /**
983
+ * Проверяет, является ли значение числовым, и выбрасывает ошибку с указанным сообщением, если это не так.
984
+ *
985
+ * ### Описание
986
+ *
987
+ * Метод `toBeNumeric` используется для проверки, является ли переданное значение числовым.
988
+ * Если значение не является числовым, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
989
+ *
990
+ * ### Параметры
991
+ *
992
+ * - `message` (string): Сообщение об ошибке, если значение не является числовым. По умолчанию пустая строка.
993
+ *
994
+ * ### Возвращаемое значение
995
+ *
996
+ * Возвращает `true`, если значение является числовым.
997
+ *
998
+ * ### Примеры использования
999
+ *
1000
+ * 1. Проверка значения, являющегося числовым:
1001
+ *
1002
+ * ```js
1003
+ * const value = '123';
1004
+ * const result = new Expect(value).toBeNumeric();
1005
+ * console.log(result); // true
1006
+ * ```
1007
+ *
1008
+ * 2. Проверка значения, не являющегося числовым:
1009
+ *
1010
+ * ```js
1011
+ * try {
1012
+ * const result = new Expect('abc').toBeNumeric('Значение должно быть числовым.');
1013
+ * } catch (e) {
1014
+ * console.error(e.message); // Значение должно быть числовым.
1015
+ * }
1016
+ * ```
1017
+ *
1018
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
1019
+ *
1020
+ * ```js
1021
+ * try {
1022
+ * const result = new Expect({}).toBeNumeric('Ожидалось числовое значение.');
1023
+ * } catch (e) {
1024
+ * console.error(e.message); // Ожидалось числовое значение.
1025
+ * }
1026
+ * ```
1027
+ *
1028
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является числовым.
1029
+ * @returns {boolean} Возвращает `true`, если значение является числовым.
1030
+ * @throws {TypeError} Если значение не является числовым или если параметр `message` не является строкой.
1031
+ */
1032
+ toBeNumeric(message = '') {
1033
+ return expect_numeric(this.#actual, message);
1034
+ }
1035
+
1036
+ /**
1037
+ * Проверяет, является ли значение объектом, и выбрасывает ошибку с указанным сообщением, если это не так.
1038
+ *
1039
+ * ### Описание
1040
+ *
1041
+ * Метод `toBeObject` используется для проверки, является ли переданное значение объектом.
1042
+ * Если значение не является объектом, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
1043
+ *
1044
+ * ### Параметры
1045
+ *
1046
+ * - `message` (string): Сообщение об ошибке, если значение не является объектом. По умолчанию пустая строка.
1047
+ *
1048
+ * ### Возвращаемое значение
1049
+ *
1050
+ * Возвращает `true`, если значение является объектом.
1051
+ *
1052
+ * ### Примеры использования
1053
+ *
1054
+ * 1. Проверка значения, являющегося объектом:
1055
+ *
1056
+ * ```js
1057
+ * const value = { a: 1, b: 2 };
1058
+ * const result = new Expect(value).toBeObject();
1059
+ * console.log(result); // true
1060
+ * ```
1061
+ *
1062
+ * 2. Проверка значения, не являющегося объектом:
1063
+ *
1064
+ * ```js
1065
+ * try {
1066
+ * const result = new Expect(123).toBeObject('Значение должно быть объектом.');
1067
+ * } catch (e) {
1068
+ * console.error(e.message); // Значение должно быть объектом.
1069
+ * }
1070
+ * ```
1071
+ *
1072
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
1073
+ *
1074
+ * ```js
1075
+ * try {
1076
+ * const result = new Expect('not an object').toBeObject('Ожидался объект.');
1077
+ * } catch (e) {
1078
+ * console.error(e.message); // Ожидался объект.
1079
+ * }
1080
+ * ```
1081
+ *
1082
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является объектом.
1083
+ * @returns {boolean} Возвращает `true`, если значение является объектом.
1084
+ * @throws {TypeError} Если значение не является объектом или если параметр `message` не является строкой.
1085
+ */
1086
+ toBeObject(message = '') {
1087
+ return expect_object(this.#actual, message);
1088
+ }
1089
+
1090
+ /**
1091
+ * Проверяет, является ли значение скалярным (boolean, number, string, или symbol), и выбрасывает ошибку с указанным сообщением, если это не так.
1092
+ *
1093
+ * ### Описание
1094
+ *
1095
+ * Метод `toBeScalar` используется для проверки, является ли переданное значение скалярным (boolean, number, string, или symbol).
1096
+ * Если значение не является скалярным, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
1097
+ *
1098
+ * ### Параметры
1099
+ *
1100
+ * - `message` (string): Сообщение об ошибке, если значение не является скалярным. По умолчанию пустая строка.
1101
+ *
1102
+ * ### Возвращаемое значение
1103
+ *
1104
+ * Возвращает `true`, если значение является скалярным.
1105
+ *
1106
+ * ### Примеры использования
1107
+ *
1108
+ * 1. Проверка значения, являющегося скалярным:
1109
+ *
1110
+ * ```js
1111
+ * const value = 123;
1112
+ * const result = new Expect(value).toBeScalar();
1113
+ * console.log(result); // true
1114
+ * ```
1115
+ *
1116
+ * 2. Проверка значения, не являющегося скалярным:
1117
+ *
1118
+ * ```js
1119
+ * try {
1120
+ * const result = new Expect([1, 2, 3]).toBeScalar('Значение должно быть скалярным.');
1121
+ * } catch (e) {
1122
+ * console.error(e.message); // Значение должно быть скалярным.
1123
+ * }
1124
+ * ```
1125
+ *
1126
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
1127
+ *
1128
+ * ```js
1129
+ * try {
1130
+ * const result = new Expect({}).toBeScalar('Ожидалось скалярное значение.');
1131
+ * } catch (e) {
1132
+ * console.error(e.message); // Ожидалось скалярное значение.
1133
+ * }
1134
+ * ```
1135
+ *
1136
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является скалярным.
1137
+ * @returns {boolean} Возвращает `true`, если значение является скалярным.
1138
+ * @throws {TypeError} Если значение не является скалярным или если параметр `message` не является строкой.
1139
+ */
1140
+ toBeScalar(message = '') {
1141
+ return expect_scalar(this.#actual, message);
1142
+ }
1143
+
1144
+ /**
1145
+ * Проверяет, является ли значение строкой, и выбрасывает ошибку с указанным сообщением, если это не так.
1146
+ *
1147
+ * ### Описание
1148
+ *
1149
+ * Метод `toBeString` используется для проверки, является ли переданное значение строкой.
1150
+ * Если значение не является строкой, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
1151
+ *
1152
+ * ### Параметры
1153
+ *
1154
+ * - `message` (string): Сообщение об ошибке, если значение не является строкой. По умолчанию пустая строка.
1155
+ *
1156
+ * ### Возвращаемое значение
1157
+ *
1158
+ * Возвращает `true`, если значение является строкой.
1159
+ *
1160
+ * ### Примеры использования
1161
+ *
1162
+ * 1. Проверка значения, являющегося строкой:
1163
+ *
1164
+ * ```js
1165
+ * const value = 'Hello, world!';
1166
+ * const result = new Expect(value).toBeString();
1167
+ * console.log(result); // true
1168
+ * ```
1169
+ *
1170
+ * 2. Проверка значения, не являющегося строкой:
1171
+ *
1172
+ * ```js
1173
+ * try {
1174
+ * const result = new Expect(123).toBeString('Значение должно быть строкой.');
1175
+ * } catch (e) {
1176
+ * console.error(e.message); // Значение должно быть строкой.
1177
+ * }
1178
+ * ```
1179
+ *
1180
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
1181
+ *
1182
+ * ```js
1183
+ * try {
1184
+ * const result = new Expect(true).toBeString('Ожидалась строка.');
1185
+ * } catch (e) {
1186
+ * console.error(e.message); // Ожидалась строка.
1187
+ * }
1188
+ * ```
1189
+ *
1190
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является строкой.
1191
+ * @returns {boolean} Возвращает `true`, если значение является строкой.
1192
+ * @throws {TypeError} Если значение не является строкой или если параметр `message` не является строкой.
1193
+ */
1194
+ toBeString(message = '') {
1195
+ return expect_string(this.#actual, message);
1196
+ }
1197
+
1198
+ /**
1199
+ * Проверяет, является ли значение символом (Symbol), и выбрасывает ошибку с указанным сообщением, если это не так.
1200
+ *
1201
+ * ### Описание
1202
+ *
1203
+ * Метод `toBeSymbol` используется для проверки, является ли переданное значение символом (Symbol).
1204
+ * Если значение не является символом, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
1205
+ *
1206
+ * ### Параметры
1207
+ *
1208
+ * - `message` (string): Сообщение об ошибке, если значение не является символом. По умолчанию пустая строка.
1209
+ *
1210
+ * ### Возвращаемое значение
1211
+ *
1212
+ * Возвращает `true`, если значение является символом.
1213
+ *
1214
+ * ### Примеры использования
1215
+ *
1216
+ * 1. Проверка значения, являющегося символом:
1217
+ *
1218
+ * ```js
1219
+ * const value = Symbol('example');
1220
+ * const result = new Expect(value).toBeSymbol();
1221
+ * console.log(result); // true
1222
+ * ```
1223
+ *
1224
+ * 2. Проверка значения, не являющегося символом:
1225
+ *
1226
+ * ```js
1227
+ * try {
1228
+ * const result = new Expect('not a symbol').toBeSymbol('Значение должно быть символом.');
1229
+ * } catch (e) {
1230
+ * console.error(e.message); // Значение должно быть символом.
1231
+ * }
1232
+ * ```
1233
+ *
1234
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
1235
+ *
1236
+ * ```js
1237
+ * try {
1238
+ * const result = new Expect(123).toBeSymbol('Ожидался символ.');
1239
+ * } catch (e) {
1240
+ * console.error(e.message); // Ожидался символ.
1241
+ * }
1242
+ * ```
1243
+ *
1244
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является символом.
1245
+ * @returns {boolean} Возвращает `true`, если значение является символом.
1246
+ * @throws {TypeError} Если значение не является символом или если параметр `message` не является строкой.
1247
+ */
1248
+ toBeSymbol(message = '') {
1249
+ return expect_symbol(this.#actual, message);
1250
+ }
1251
+
1252
+ /**
1253
+ * Проверяет, является ли значение undefined, и выбрасывает ошибку с указанным сообщением, если это не так.
1254
+ *
1255
+ * ### Описание
1256
+ *
1257
+ * Метод `toBeUndefined` используется для проверки, является ли переданное значение undefined.
1258
+ * Если значение не является undefined, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
1259
+ *
1260
+ * ### Параметры
1261
+ *
1262
+ * - `message` (string): Сообщение об ошибке, если значение не является undefined. По умолчанию пустая строка.
1263
+ *
1264
+ * ### Возвращаемое значение
1265
+ *
1266
+ * Возвращает `true`, если значение является undefined.
1267
+ *
1268
+ * ### Примеры использования
1269
+ *
1270
+ * 1. Проверка значения, являющегося undefined:
1271
+ *
1272
+ * ```js
1273
+ * let value;
1274
+ * const result = new Expect(value).toBeUndefined();
1275
+ * console.log(result); // true
1276
+ * ```
1277
+ *
1278
+ * 2. Проверка значения, не являющегося undefined:
1279
+ *
1280
+ * ```js
1281
+ * try {
1282
+ * const result = new Expect(123).toBeUndefined('Значение должно быть undefined.');
1283
+ * } catch (e) {
1284
+ * console.error(e.message); // Значение должно быть undefined.
1285
+ * }
1286
+ * ```
1287
+ *
1288
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
1289
+ *
1290
+ * ```js
1291
+ * try {
1292
+ * const result = new Expect('not undefined').toBeUndefined('Ожидалось значение undefined.');
1293
+ * } catch (e) {
1294
+ * console.error(e.message); // Ожидалось значение undefined.
1295
+ * }
1296
+ * ```
1297
+ *
1298
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является undefined.
1299
+ * @returns {boolean} Возвращает `true`, если значение является undefined.
1300
+ * @throws {TypeError} Если значение не является undefined или если параметр `message` не является строкой.
1301
+ */
1302
+ toBeUndefined(message = '') {
1303
+ return expect_undefined(this.#actual, message);
1304
+ }
1305
+
1306
+ /**
1307
+ * Проверяет, что фактическое значение эквивалентно ожидаемому значению.
1308
+ *
1309
+ * ### Описание
1310
+ *
1311
+ * Метод `toEqual` используется для проверки, что фактическое значение (`actual`) эквивалентно ожидаемому значению (`expected`).
1312
+ * Эквивалентность проверяется с использованием функции `is_equal`, которая рекурсивно сравнивает ключи и значения объектов и массивов.
1313
+ * Если значения не эквивалентны, выбрасывается ошибка типа `TypeError` с указанным сообщением.
1314
+ *
1315
+ * ### Параметры
1316
+ *
1317
+ * - `expected` (any): Ожидаемое значение для сравнения.
1318
+ * - `message` (string): Сообщение об ошибке, если значения не эквивалентны. По умолчанию пустая строка.
1319
+ *
1320
+ * ### Возвращаемое значение
1321
+ *
1322
+ * Возвращает `true`, если значения эквивалентны.
1323
+ *
1324
+ * ### Примеры использования
1325
+ *
1326
+ * 1. Проверка эквивалентности чисел:
1327
+ *
1328
+ * ```js
1329
+ * const expect = new Expect(5);
1330
+ * expect.toEqual(5); // true
1331
+ * ```
1332
+ *
1333
+ * 2. Проверка эквивалентности строк:
1334
+ *
1335
+ * ```js
1336
+ * const expect = new Expect('hello');
1337
+ * expect.toEqual('hello'); // true
1338
+ * ```
1339
+ *
1340
+ * 3. Проверка эквивалентности объектов:
1341
+ *
1342
+ * ```js
1343
+ * const expect = new Expect({ a: 1, b: 2 });
1344
+ * expect.toEqual({ a: 1, b: 2 }); // true
1345
+ * ```
1346
+ *
1347
+ * 4. Проверка неэквивалентности с сообщением об ошибке:
1348
+ *
1349
+ * ```js
1350
+ * const expect = new Expect(5);
1351
+ * try {
1352
+ * expect.toEqual(10, 'Значения не эквивалентны');
1353
+ * } catch (e) {
1354
+ * console.error(e.message); // Значения не эквивалентны
1355
+ * }
1356
+ * ```
1357
+ *
1358
+ * @param {any} expected Ожидаемое значение для сравнения.
1359
+ * @param {string} [message=''] Сообщение об ошибке, если значения не эквивалентны.
1360
+ * @returns {boolean} Возвращает `true`, если значения эквивалентны.
1361
+ * @throws {TypeError} Если значения не эквивалентны.
1362
+ */
1363
+ toEqual(expected, message = '') {
1364
+ if (!is_string(message)) {
1365
+ throw new TypeError('Параметр "message" должен быть строкой.');
1366
+ }
1367
+
1368
+ if (!is_equal(this.#actual, expected)) {
1369
+ throw new TypeError(message);
1370
+ }
1371
+
1372
+ return true;
1373
+ }
1374
+
1375
+ /**
1376
+ * Проверяет, что фактическое значение строго эквивалентно ожидаемому значению.
1377
+ *
1378
+ * ### Описание
1379
+ *
1380
+ * Метод `toStrictEqual` используется для проверки, что фактическое значение (`actual`) строго эквивалентно ожидаемому значению (`expected`).
1381
+ * Строгая эквивалентность проверяется с использованием функции `is_equal` в строгом режиме, которая рекурсивно сравнивает ключи и значения объектов и массивов с учетом типов.
1382
+ * Если значения не строго эквивалентны, выбрасывается ошибка типа `TypeError` с указанным сообщением.
1383
+ *
1384
+ * ### Параметры
1385
+ *
1386
+ * - `expected` (any): Ожидаемое значение для сравнения.
1387
+ * - `message` (string): Сообщение об ошибке, если значения не строго эквивалентны. По умолчанию пустая строка.
1388
+ *
1389
+ * ### Возвращаемое значение
1390
+ *
1391
+ * Возвращает `true`, если значения строго эквивалентны.
1392
+ *
1393
+ * ### Примеры использования
1394
+ *
1395
+ * 1. Проверка строгой эквивалентности чисел:
1396
+ *
1397
+ * ```js
1398
+ * const expect = new Expect(5);
1399
+ * expect.toStrictEqual(5); // true
1400
+ * ```
1401
+ *
1402
+ * 2. Проверка строгой эквивалентности строк:
1403
+ *
1404
+ * ```js
1405
+ * const expect = new Expect('hello');
1406
+ * expect.toStrictEqual('hello'); // true
1407
+ * ```
1408
+ *
1409
+ * 3. Проверка строгой эквивалентности объектов:
1410
+ *
1411
+ * ```js
1412
+ * const expect = new Expect({ a: 1, b: 2 });
1413
+ * expect.toStrictEqual({ a: 1, b: 2 }); // true
1414
+ * ```
1415
+ *
1416
+ * 4. Проверка нестрогой эквивалентности с сообщением об ошибке:
1417
+ *
1418
+ * ```js
1419
+ * const expect = new Expect(5);
1420
+ * try {
1421
+ * expect.toStrictEqual('5', 'Значения не строго эквивалентны');
1422
+ * } catch (e) {
1423
+ * console.error(e.message); // Значения не строго эквивалентны
1424
+ * }
1425
+ * ```
1426
+ *
1427
+ * @param {any} expected Ожидаемое значение для сравнения.
1428
+ * @param {string} [message=''] Сообщение об ошибке, если значения не строго эквивалентны.
1429
+ * @returns {boolean} Возвращает `true`, если значения строго эквивалентны.
1430
+ * @throws {TypeError} Если значения не строго эквивалентны.
1431
+ */
1432
+ toStrictEqual(expected, message = '') {
1433
+ if (!is_string(message)) {
1434
+ throw new TypeError('Параметр "message" должен быть строкой.');
1435
+ }
1436
+
1437
+ if (!is_equal(this.#actual, expected, true)) {
1438
+ throw new TypeError(message);
1439
+ }
1440
+
1441
+ return true;
1442
+ }
1443
+ }
1444
+
1445
+ export default Expect;