@rogolev/value 0.0.3 → 0.0.5

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 (355) hide show
  1. package/CHANGELOG.md +319 -1
  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/array/array_chunk.md +80 -0
  53. package/docs/helpers/array/array_chunk_with_keys.md +81 -0
  54. package/docs/helpers/array/array_column.md +110 -0
  55. package/docs/helpers/array/array_combine.md +77 -0
  56. package/docs/helpers/array/array_count_values.md +71 -0
  57. package/docs/helpers/array/array_diff.md +97 -0
  58. package/docs/helpers/array/array_diff_assoc.md +81 -0
  59. package/docs/helpers/array/array_diff_key.md +81 -0
  60. package/docs/helpers/array/array_diff_uassoc.md +101 -0
  61. package/docs/helpers/array/array_diff_ukey.md +101 -0
  62. package/docs/helpers/array/array_fill.md +81 -0
  63. package/docs/helpers/array/array_fill_keys.md +73 -0
  64. package/docs/helpers/array/array_filter.md +79 -0
  65. package/docs/helpers/array/array_flip.md +70 -0
  66. package/docs/helpers/array/array_index_max.md +78 -0
  67. package/docs/helpers/array/array_index_min.md +78 -0
  68. package/docs/helpers/array/array_intersect.md +91 -0
  69. package/docs/helpers/array/array_intersect_assoc.md +91 -0
  70. package/docs/helpers/array/array_intersect_key.md +91 -0
  71. package/docs/helpers/array/array_intersect_uassoc.md +101 -0
  72. package/docs/helpers/array/array_intersect_ukey.md +101 -0
  73. package/docs/helpers/array/array_key_exists.md +73 -0
  74. package/docs/helpers/array/array_key_first.md +62 -0
  75. package/docs/helpers/array/array_key_last.md +62 -0
  76. package/docs/helpers/array/array_key_to_lower_case.md +57 -0
  77. package/docs/helpers/array/array_key_to_upper_case.md +57 -0
  78. package/docs/helpers/array/array_keys.md +62 -0
  79. package/docs/helpers/array/array_map.md +69 -0
  80. package/docs/helpers/array/array_merge.md +67 -0
  81. package/docs/helpers/array/array_merge_recursive.md +86 -0
  82. package/docs/helpers/array/array_pad.md +83 -0
  83. package/docs/helpers/array/array_pop.md +64 -0
  84. package/docs/helpers/array/array_product.md +62 -0
  85. package/docs/helpers/array/array_push.md +57 -0
  86. package/docs/helpers/array/array_rand.md +99 -0
  87. package/docs/helpers/array/array_reduce.md +77 -0
  88. package/docs/helpers/array/array_replace.md +85 -0
  89. package/docs/helpers/array/array_replace_recursive.md +87 -0
  90. package/docs/helpers/array/array_reverse.md +55 -0
  91. package/docs/helpers/array/array_search.md +74 -0
  92. package/docs/helpers/array/array_shift.md +64 -0
  93. package/docs/helpers/array/array_slice.md +65 -0
  94. package/docs/helpers/array/array_splice.md +103 -0
  95. package/docs/helpers/array/array_sum.md +55 -0
  96. package/docs/helpers/array/array_udiff.md +97 -0
  97. package/docs/helpers/array/array_udiff_assoc.md +101 -0
  98. package/docs/helpers/array/array_udiff_uassoc.md +88 -0
  99. package/docs/helpers/array/array_uintersect.md +101 -0
  100. package/docs/helpers/array/array_uintersect_assoc.md +102 -0
  101. package/docs/helpers/array/array_uintersect_uassoc.md +135 -0
  102. package/docs/helpers/array/array_unique.md +54 -0
  103. package/docs/helpers/array/array_unshift.md +58 -0
  104. package/docs/helpers/array/array_values.md +54 -0
  105. package/docs/helpers/array/array_walk.md +87 -0
  106. package/docs/helpers/array/array_walk_recursive.md +93 -0
  107. package/docs/helpers/array/count.md +54 -0
  108. package/docs/helpers/array/in_array.md +65 -0
  109. package/docs/helpers/array/natsort.md +60 -0
  110. package/docs/helpers/array/range.md +76 -0
  111. package/docs/helpers/array/shuffle.md +74 -0
  112. package/docs/helpers/array/sort.md +79 -0
  113. package/docs/helpers/expect.md +58 -0
  114. package/docs/helpers/expect_array.md +63 -0
  115. package/docs/helpers/expect_assoc.md +65 -0
  116. package/docs/helpers/expect_bigint.md +63 -0
  117. package/docs/helpers/expect_bool.md +65 -0
  118. package/docs/helpers/expect_boolean.md +65 -0
  119. package/docs/helpers/expect_char.md +63 -0
  120. package/docs/helpers/expect_class.md +63 -0
  121. package/docs/helpers/expect_float.md +65 -0
  122. package/docs/helpers/expect_function.md +63 -0
  123. package/docs/helpers/expect_infinity.md +65 -0
  124. package/docs/helpers/expect_int.md +65 -0
  125. package/docs/helpers/expect_integer.md +65 -0
  126. package/docs/helpers/expect_list.md +63 -0
  127. package/docs/helpers/expect_nan.md +63 -0
  128. package/docs/helpers/expect_null.md +63 -0
  129. package/docs/helpers/expect_number.md +63 -0
  130. package/docs/helpers/expect_numeric.md +63 -0
  131. package/docs/helpers/expect_object.md +64 -0
  132. package/docs/helpers/expect_scalar.md +63 -0
  133. package/docs/helpers/expect_string.md +63 -0
  134. package/docs/helpers/expect_symbol.md +63 -0
  135. package/docs/helpers/expect_undefined.md +64 -0
  136. package/docs/helpers/is_char.md +84 -0
  137. package/docs/helpers/is_equal.md +75 -0
  138. package/docs/helpers/string/is_digit_char.md +70 -0
  139. package/docs/helpers/string/is_whitespace_char.md +70 -0
  140. package/docs/helpers/string/natcompare.md +69 -0
  141. package/docs/helpers/string/natcompare_numeric.md +70 -0
  142. package/docs/helpers.md +172 -1
  143. package/index.mjs +91 -1
  144. package/package.json +1 -1
  145. package/prettier.config.mjs +2 -1
  146. package/src/classes/Expect.mjs +1445 -0
  147. package/src/classes/Type.mjs +2739 -1284
  148. package/src/constants.mjs +83 -14
  149. package/src/helpers/array/array_chunk.mjs +102 -0
  150. package/src/helpers/array/array_chunk_with_keys.mjs +102 -0
  151. package/src/helpers/array/array_column.mjs +131 -0
  152. package/src/helpers/array/array_combine.mjs +26 -0
  153. package/src/helpers/array/array_count_values.mjs +82 -0
  154. package/src/helpers/array/array_diff.mjs +77 -0
  155. package/src/helpers/array/array_diff_assoc.mjs +56 -0
  156. package/src/helpers/array/array_diff_key.mjs +56 -0
  157. package/src/helpers/array/array_diff_uassoc.mjs +76 -0
  158. package/src/helpers/array/array_diff_ukey.mjs +71 -0
  159. package/src/helpers/array/array_fill.mjs +108 -0
  160. package/src/helpers/array/array_fill_keys.mjs +90 -0
  161. package/src/helpers/array/array_filter.mjs +105 -0
  162. package/src/helpers/array/array_flip.mjs +58 -0
  163. package/src/helpers/array/array_index_max.mjs +82 -0
  164. package/src/helpers/array/array_index_min.mjs +82 -0
  165. package/src/helpers/array/array_intersect.mjs +71 -0
  166. package/src/helpers/array/array_intersect_assoc.mjs +67 -0
  167. package/src/helpers/array/array_intersect_key.mjs +67 -0
  168. package/src/helpers/array/array_intersect_uassoc.mjs +77 -0
  169. package/src/helpers/array/array_intersect_ukey.mjs +72 -0
  170. package/src/helpers/array/array_key_exists.mjs +83 -0
  171. package/src/helpers/array/array_key_first.mjs +73 -0
  172. package/src/helpers/array/array_key_last.mjs +74 -0
  173. package/src/helpers/array/array_key_to_lower_case.mjs +71 -0
  174. package/src/helpers/array/array_key_to_upper_case.mjs +71 -0
  175. package/src/helpers/array/array_keys.mjs +65 -0
  176. package/src/helpers/array/array_map.mjs +84 -0
  177. package/src/helpers/array/array_merge.mjs +95 -0
  178. package/src/helpers/array/array_merge_recursive.mjs +153 -0
  179. package/src/helpers/array/array_pad.mjs +105 -0
  180. package/src/helpers/array/array_pop.mjs +82 -0
  181. package/src/helpers/array/array_product.mjs +67 -0
  182. package/src/helpers/array/array_push.mjs +75 -0
  183. package/src/helpers/array/array_rand.mjs +129 -0
  184. package/src/helpers/array/array_reduce.mjs +90 -0
  185. package/src/helpers/array/array_replace.mjs +25 -0
  186. package/src/helpers/array/array_replace_recursive.mjs +109 -0
  187. package/src/helpers/array/array_reverse.mjs +62 -0
  188. package/src/helpers/array/array_search.mjs +104 -0
  189. package/src/helpers/array/array_shift.mjs +78 -0
  190. package/src/helpers/array/array_slice.mjs +99 -0
  191. package/src/helpers/array/array_splice.mjs +218 -0
  192. package/src/helpers/array/array_sum.mjs +60 -0
  193. package/src/helpers/array/array_udiff.mjs +91 -0
  194. package/src/helpers/array/array_udiff_assoc.mjs +71 -0
  195. package/src/helpers/array/array_udiff_uassoc.mjs +124 -0
  196. package/src/helpers/array/array_uintersect.mjs +72 -0
  197. package/src/helpers/array/array_uintersect_assoc.mjs +77 -0
  198. package/src/helpers/array/array_uintersect_uassoc.mjs +121 -0
  199. package/src/helpers/array/array_unique.mjs +77 -0
  200. package/src/helpers/array/array_unshift.mjs +64 -0
  201. package/src/helpers/array/array_values.mjs +57 -0
  202. package/src/helpers/array/array_walk.mjs +95 -0
  203. package/src/helpers/array/array_walk_recursive.mjs +104 -0
  204. package/src/helpers/array/count.mjs +57 -0
  205. package/src/helpers/array/in_array.mjs +67 -0
  206. package/src/helpers/array/natsort.mjs +62 -0
  207. package/src/helpers/array/range.mjs +121 -0
  208. package/src/helpers/array/shuffle.mjs +73 -0
  209. package/src/helpers/array/sort.mjs +69 -0
  210. package/src/helpers/expect.mjs +44 -0
  211. package/src/helpers/expect_array.mjs +66 -0
  212. package/src/helpers/expect_assoc.mjs +66 -0
  213. package/src/helpers/expect_bigint.mjs +66 -0
  214. package/src/helpers/expect_bool.mjs +66 -0
  215. package/src/helpers/expect_boolean.mjs +57 -0
  216. package/src/helpers/expect_char.mjs +66 -0
  217. package/src/helpers/expect_class.mjs +66 -0
  218. package/src/helpers/expect_float.mjs +66 -0
  219. package/src/helpers/expect_function.mjs +66 -0
  220. package/src/helpers/expect_infinity.mjs +66 -0
  221. package/src/helpers/expect_int.mjs +66 -0
  222. package/src/helpers/expect_integer.mjs +57 -0
  223. package/src/helpers/expect_list.mjs +66 -0
  224. package/src/helpers/expect_nan.mjs +66 -0
  225. package/src/helpers/expect_null.mjs +66 -0
  226. package/src/helpers/expect_number.mjs +66 -0
  227. package/src/helpers/expect_numeric.mjs +66 -0
  228. package/src/helpers/expect_object.mjs +67 -0
  229. package/src/helpers/expect_scalar.mjs +66 -0
  230. package/src/helpers/expect_string.mjs +65 -0
  231. package/src/helpers/expect_symbol.mjs +66 -0
  232. package/src/helpers/expect_undefined.mjs +66 -0
  233. package/src/helpers/is_char.mjs +54 -0
  234. package/src/helpers/is_equal.mjs +94 -0
  235. package/src/helpers/string/is_digit_char.mjs +60 -0
  236. package/src/helpers/string/is_whitespace_char.mjs +54 -0
  237. package/src/helpers/string/natcompare.mjs +107 -0
  238. package/src/helpers/string/natcompare_numeric.mjs +131 -0
  239. package/tests/classes/Expect/toBe.test.mjs +60 -0
  240. package/tests/classes/Expect/toBeArray.test.mjs +46 -0
  241. package/tests/classes/Expect/toBeAssoc.test.mjs +48 -0
  242. package/tests/classes/Expect/toBeBigInt.test.mjs +46 -0
  243. package/tests/classes/Expect/toBeBool.test.mjs +48 -0
  244. package/tests/classes/Expect/toBeBoolean.test.mjs +48 -0
  245. package/tests/classes/Expect/toBeChar.test.mjs +46 -0
  246. package/tests/classes/Expect/toBeClass.test.mjs +48 -0
  247. package/tests/classes/Expect/toBeFloat.test.mjs +48 -0
  248. package/tests/classes/Expect/toBeFunction.test.mjs +51 -0
  249. package/tests/classes/Expect/toBeInfinity.test.mjs +48 -0
  250. package/tests/classes/Expect/toBeInt.test.mjs +48 -0
  251. package/tests/classes/Expect/toBeInteger.test.mjs +48 -0
  252. package/tests/classes/Expect/toBeList.test.mjs +46 -0
  253. package/tests/classes/Expect/toBeNaN.test.mjs +46 -0
  254. package/tests/classes/Expect/toBeNull.test.mjs +46 -0
  255. package/tests/classes/Expect/toBeNumber.test.mjs +46 -0
  256. package/tests/classes/Expect/toBeNumeric.test.mjs +53 -0
  257. package/tests/classes/Expect/toBeObject.test.mjs +47 -0
  258. package/tests/classes/Expect/toBeScalar.test.mjs +63 -0
  259. package/tests/classes/Expect/toBeString.test.mjs +46 -0
  260. package/tests/classes/Expect/toBeSymbol.test.mjs +46 -0
  261. package/tests/classes/Expect/toBeUndefined.test.mjs +50 -0
  262. package/tests/classes/Expect/toEqual.test.mjs +66 -0
  263. package/tests/classes/Expect/toStrictEqual.test.mjs +73 -0
  264. package/tests/classes/Type.test.mjs +1320 -1262
  265. package/tests/helpers/array/array_chunk.test.mjs +49 -0
  266. package/tests/helpers/array/array_chunk_with_keys.test.mjs +45 -0
  267. package/tests/helpers/array/array_column.test.mjs +87 -0
  268. package/tests/helpers/array/array_combine.test.mjs +41 -0
  269. package/tests/helpers/array/array_count_values.test.mjs +40 -0
  270. package/tests/helpers/array/array_diff.test.mjs +78 -0
  271. package/tests/helpers/array/array_diff_assoc.test.mjs +64 -0
  272. package/tests/helpers/array/array_diff_key.test.mjs +64 -0
  273. package/tests/helpers/array/array_diff_uassoc.test.mjs +73 -0
  274. package/tests/helpers/array/array_diff_ukey.test.mjs +77 -0
  275. package/tests/helpers/array/array_fill.test.mjs +47 -0
  276. package/tests/helpers/array/array_fill_keys.test.mjs +35 -0
  277. package/tests/helpers/array/array_filter.test.mjs +38 -0
  278. package/tests/helpers/array/array_flip.test.mjs +33 -0
  279. package/tests/helpers/array/array_index_max.test.mjs +41 -0
  280. package/tests/helpers/array/array_index_min.test.mjs +41 -0
  281. package/tests/helpers/array/array_intersect.test.mjs +65 -0
  282. package/tests/helpers/array/array_intersect_assoc.test.mjs +65 -0
  283. package/tests/helpers/array/array_intersect_key.test.mjs +65 -0
  284. package/tests/helpers/array/array_intersect_uassoc.test.mjs +76 -0
  285. package/tests/helpers/array/array_intersect_ukey.test.mjs +74 -0
  286. package/tests/helpers/array/array_key_exists.test.mjs +36 -0
  287. package/tests/helpers/array/array_key_first.test.mjs +29 -0
  288. package/tests/helpers/array/array_key_last.test.mjs +29 -0
  289. package/tests/helpers/array/array_key_to_lower_case.test.mjs +23 -0
  290. package/tests/helpers/array/array_key_to_upper_case.test.mjs +23 -0
  291. package/tests/helpers/array/array_keys.test.mjs +27 -0
  292. package/tests/helpers/array/array_map.test.mjs +32 -0
  293. package/tests/helpers/array/array_merge.test.mjs +37 -0
  294. package/tests/helpers/array/array_merge_recursive.test.mjs +65 -0
  295. package/tests/helpers/array/array_pad.test.mjs +48 -0
  296. package/tests/helpers/array/array_pop.test.mjs +29 -0
  297. package/tests/helpers/array/array_product.test.mjs +33 -0
  298. package/tests/helpers/array/array_push.test.mjs +31 -0
  299. package/tests/helpers/array/array_rand.test.mjs +59 -0
  300. package/tests/helpers/array/array_reduce.test.mjs +44 -0
  301. package/tests/helpers/array/array_replace.test.mjs +46 -0
  302. package/tests/helpers/array/array_replace_recursive.test.mjs +46 -0
  303. package/tests/helpers/array/array_reverse.test.mjs +31 -0
  304. package/tests/helpers/array/array_search.test.mjs +48 -0
  305. package/tests/helpers/array/array_shift.test.mjs +29 -0
  306. package/tests/helpers/array/array_slice.test.mjs +49 -0
  307. package/tests/helpers/array/array_splice.test.mjs +67 -0
  308. package/tests/helpers/array/array_sum.test.mjs +27 -0
  309. package/tests/helpers/array/array_udiff.test.mjs +95 -0
  310. package/tests/helpers/array/array_udiff_assoc.test.mjs +77 -0
  311. package/tests/helpers/array/array_udiff_uassoc.test.mjs +89 -0
  312. package/tests/helpers/array/array_uintersect.test.mjs +78 -0
  313. package/tests/helpers/array/array_uintersect_assoc.test.mjs +80 -0
  314. package/tests/helpers/array/array_uintersect_uassoc.test.mjs +122 -0
  315. package/tests/helpers/array/array_unique.test.mjs +27 -0
  316. package/tests/helpers/array/array_unshift.test.mjs +31 -0
  317. package/tests/helpers/array/array_values.test.mjs +27 -0
  318. package/tests/helpers/array/array_walk.test.mjs +48 -0
  319. package/tests/helpers/array/array_walk_recursive.test.mjs +53 -0
  320. package/tests/helpers/array/count.test.mjs +27 -0
  321. package/tests/helpers/array/in_array.test.mjs +52 -0
  322. package/tests/helpers/array/natsort.test.mjs +71 -0
  323. package/tests/helpers/array/range.test.mjs +51 -0
  324. package/tests/helpers/array/shuffle.test.mjs +42 -0
  325. package/tests/helpers/array/sort.test.mjs +60 -0
  326. package/tests/helpers/array.test.mjs +58 -58
  327. package/tests/helpers/expect.test.mjs +95 -0
  328. package/tests/helpers/expect_array.test.mjs +71 -0
  329. package/tests/helpers/expect_assoc.test.mjs +61 -0
  330. package/tests/helpers/expect_bigint.test.mjs +63 -0
  331. package/tests/helpers/expect_bool.test.mjs +59 -0
  332. package/tests/helpers/expect_boolean.test.mjs +61 -0
  333. package/tests/helpers/expect_char.test.mjs +63 -0
  334. package/tests/helpers/expect_class.test.mjs +64 -0
  335. package/tests/helpers/expect_float.test.mjs +64 -0
  336. package/tests/helpers/expect_function.test.mjs +65 -0
  337. package/tests/helpers/expect_infinity.test.mjs +62 -0
  338. package/tests/helpers/expect_int.test.mjs +57 -0
  339. package/tests/helpers/expect_integer.test.mjs +59 -0
  340. package/tests/helpers/expect_list.test.mjs +73 -0
  341. package/tests/helpers/expect_nan.test.mjs +57 -0
  342. package/tests/helpers/expect_null.test.mjs +57 -0
  343. package/tests/helpers/expect_number.test.mjs +57 -0
  344. package/tests/helpers/expect_numeric.test.mjs +57 -0
  345. package/tests/helpers/expect_object.test.mjs +63 -0
  346. package/tests/helpers/expect_scalar.test.mjs +72 -0
  347. package/tests/helpers/expect_string.test.mjs +65 -0
  348. package/tests/helpers/expect_symbol.test.mjs +66 -0
  349. package/tests/helpers/expect_undefined.test.mjs +59 -0
  350. package/tests/helpers/is_char.test.mjs +40 -0
  351. package/tests/helpers/is_equal.test.mjs +110 -0
  352. package/tests/helpers/string/is_digit_char.test.mjs +32 -0
  353. package/tests/helpers/string/is_whitespace_char.test.mjs +32 -0
  354. package/tests/helpers/string/natcompare.test.mjs +100 -0
  355. package/tests/helpers/string/natcompare_numeric.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;