@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,131 @@
1
+ import is_string from '../is_string.mjs';
2
+ import is_digit_char from './is_digit_char.mjs';
3
+
4
+ /**
5
+ * Сравнивает две строки, содержащие числовые значения, в естественном порядке.
6
+ *
7
+ * ### Описание
8
+ *
9
+ * Функция `natcompare_numeric` используется для сравнения двух строк, содержащих числовые значения, в естественном порядке.
10
+ * Она поддерживает строки с ведущими нулями и игнорирует их при сравнении.
11
+ *
12
+ * ### Параметры
13
+ *
14
+ * - `a` (string): Первая строка для сравнения.
15
+ * - `b` (string): Вторая строка для сравнения.
16
+ *
17
+ * ### Возвращаемое значение
18
+ *
19
+ * Возвращает отрицательное значение, если `a` меньше `b`, ноль, если `a` равно `b`, и положительное значение, если `a` больше `b`.
20
+ *
21
+ * ### Примеры использования
22
+ *
23
+ * 1. Сравнение строк с числовыми значениями:
24
+ *
25
+ * ```js
26
+ * const result = natcompare_numeric('10', '2');
27
+ * console.log(result); // 1
28
+ * ```
29
+ *
30
+ * 2. Сравнение строк с ведущими нулями:
31
+ *
32
+ * ```js
33
+ * const result = natcompare_numeric('0010', '10');
34
+ * console.log(result); // 0
35
+ * ```
36
+ *
37
+ * 3. Сравнение строк с пробелами:
38
+ *
39
+ * ```js
40
+ * const result = natcompare_numeric(' 10', '10');
41
+ * console.log(result); // 0
42
+ * ```
43
+ *
44
+ * 4. Сравнение строк с буквами и числами:
45
+ *
46
+ * ```js
47
+ * const result = natcompare_numeric('a10', 'a2');
48
+ * console.log(result); // 1
49
+ * ```
50
+ *
51
+ * 5. Сравнение строк с разными символами:
52
+ *
53
+ * ```js
54
+ * const result = natcompare_numeric('10-', '10+');
55
+ * console.log(result); // 0
56
+ * ```
57
+ *
58
+ * @param {string} a Первая строка для сравнения.
59
+ * @param {string} b Вторая строка для сравнения.
60
+ * @returns {number} Возвращает отрицательное значение, если `a` меньше `b`, ноль, если `a` равно `b`, и положительное значение, если `a` больше `b`.
61
+ * @throws {TypeError} Если параметры не являются строками.
62
+ */
63
+ export default function natcompare_numeric(a, b) {
64
+ if (!is_string(a)) {
65
+ throw new TypeError('Параметр "a" должен быть строкой.');
66
+ }
67
+
68
+ if (!is_string(b)) {
69
+ throw new TypeError('Параметр "b" должен быть строкой.');
70
+ }
71
+
72
+ a = a.trim();
73
+ b = b.trim();
74
+
75
+ let result = 0;
76
+
77
+ let ia = 0;
78
+ let ib = 0;
79
+
80
+ // Пропускаем ведущие нули
81
+ while (ia < a.length && a[ia] === '0') {
82
+ ia++;
83
+ }
84
+ while (ib < b.length && b[ib] === '0') {
85
+ ib++;
86
+ }
87
+
88
+ // Сравниваем оставшиеся части строк
89
+ while (ia < a.length && ib < b.length) {
90
+ const ca = a[ia];
91
+ const cb = b[ib];
92
+
93
+ if (!is_digit_char(ca) && !is_digit_char(cb)) {
94
+ ia++;
95
+ ib++;
96
+ continue;
97
+ }
98
+
99
+ if (!is_digit_char(ca)) {
100
+ ia++;
101
+ continue;
102
+ }
103
+
104
+ if (!is_digit_char(cb)) {
105
+ ib++;
106
+ continue;
107
+ }
108
+
109
+ if (ca < cb) {
110
+ if (result === 0) {
111
+ result = -1;
112
+ }
113
+ } else if (ca > cb) {
114
+ if (result === 0) {
115
+ result = 1;
116
+ }
117
+ }
118
+
119
+ ia++;
120
+ ib++;
121
+ }
122
+
123
+ // Если одна строка длиннее другой, она считается больше
124
+ if (ia < a.length) {
125
+ return 1;
126
+ } else if (ib < b.length) {
127
+ return -1;
128
+ }
129
+
130
+ return result;
131
+ }
@@ -0,0 +1,60 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { Expect } from '../../../index.mjs';
3
+
4
+ describe('Метод toBe класса Expect', () => {
5
+ test('Должен возвращать true, если значения строго равны (числа)', () => {
6
+ const expectInstance = new Expect(5);
7
+ expect(expectInstance.toBe(5)).toBe(true);
8
+ });
9
+
10
+ test('Должен возвращать true, если значения строго равны (строки)', () => {
11
+ const expectInstance = new Expect('hello');
12
+ expect(expectInstance.toBe('hello')).toBe(true);
13
+ });
14
+
15
+ test('Должен выбрасывать ошибку, если значения не равны (числа)', () => {
16
+ const expectInstance = new Expect(5);
17
+ expect(() => expectInstance.toBe(10)).toThrow(TypeError);
18
+ expect(() => expectInstance.toBe(10)).toThrow('');
19
+ });
20
+
21
+ test('Должен выбрасывать ошибку с пользовательским сообщением, если значения не равны', () => {
22
+ const expectInstance = new Expect(5);
23
+ expect(() => expectInstance.toBe(10, 'Значения не равны')).toThrow(TypeError);
24
+ expect(() => expectInstance.toBe(10, 'Значения не равны')).toThrow('Значения не равны');
25
+ });
26
+
27
+ test('Должен выбрасывать ошибку, если параметр message не является строкой', () => {
28
+ const expectInstance = new Expect(5);
29
+ expect(() => expectInstance.toBe(5, 123)).toThrow(TypeError);
30
+ expect(() => expectInstance.toBe(5, 123)).toThrow(
31
+ 'Параметр "message" должен быть строкой.',
32
+ );
33
+ });
34
+
35
+ test('Должен возвращать true, если значения строго равны (объекты)', () => {
36
+ const obj = { a: 1, b: 2 };
37
+ const expectInstance = new Expect(obj);
38
+ expect(expectInstance.toBe(obj)).toBe(true);
39
+ });
40
+
41
+ test('Должен выбрасывать ошибку, если значения не равны (объекты)', () => {
42
+ const obj1 = { a: 1, b: 2 };
43
+ const obj2 = { a: 1, b: 3 };
44
+ const expectInstance = new Expect(obj1);
45
+ expect(() => expectInstance.toBe(obj2)).toThrow(TypeError);
46
+ });
47
+
48
+ test('Должен возвращать true, если значения строго равны (массивы)', () => {
49
+ const arr = [1, 2, 3];
50
+ const expectInstance = new Expect(arr);
51
+ expect(expectInstance.toBe(arr)).toBe(true);
52
+ });
53
+
54
+ test('Должен выбрасывать ошибку, если значения не равны (массивы)', () => {
55
+ const arr1 = [1, 2, 3];
56
+ const arr2 = [1, 2, 4];
57
+ const expectInstance = new Expect(arr1);
58
+ expect(() => expectInstance.toBe(arr2)).toThrow(TypeError);
59
+ });
60
+ });
@@ -0,0 +1,46 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { Expect } from '../../../index.mjs';
3
+
4
+ describe('Метод toBeArray класса Expect', () => {
5
+ test('Должен возвращать true, если значение является массивом', () => {
6
+ const expectInstance = new Expect([1, 2, 3]);
7
+ expect(expectInstance.toBeArray()).toBe(true);
8
+ });
9
+
10
+ test('Должен выбрасывать ошибку, если значение не является массивом', () => {
11
+ const expectInstance = new Expect('not an array');
12
+ expect(() => expectInstance.toBeArray()).toThrow(TypeError);
13
+ expect(() => expectInstance.toBeArray()).toThrow('');
14
+ });
15
+
16
+ test('Должен выбрасывать ошибку с пользовательским сообщением, если значение не является массивом', () => {
17
+ const expectInstance = new Expect('not an array');
18
+ expect(() => expectInstance.toBeArray('Значение должно быть массивом')).toThrow(TypeError);
19
+ expect(() => expectInstance.toBeArray('Значение должно быть массивом')).toThrow(
20
+ 'Значение должно быть массивом',
21
+ );
22
+ });
23
+
24
+ test('Должен выбрасывать ошибку, если параметр message не является строкой', () => {
25
+ const expectInstance = new Expect([1, 2, 3]);
26
+ expect(() => expectInstance.toBeArray(123)).toThrow(TypeError);
27
+ expect(() => expectInstance.toBeArray(123)).toThrow(
28
+ 'Параметр "message" должен быть строкой.',
29
+ );
30
+ });
31
+
32
+ test('Должен возвращать true, если значение является пустым массивом', () => {
33
+ const expectInstance = new Expect([]);
34
+ expect(expectInstance.toBeArray()).toBe(true);
35
+ });
36
+
37
+ test('Должен возвращать true, если значение является массивом объектов', () => {
38
+ const expectInstance = new Expect([{ a: 1 }, { b: 2 }]);
39
+ expect(expectInstance.toBeArray()).toBe(true);
40
+ });
41
+
42
+ test('Должен возвращать true, если значение является ассоциативным массивом', () => {
43
+ const expectInstance = new Expect({ a: 1, b: 2 });
44
+ expect(expectInstance.toBeArray()).toBe(true);
45
+ });
46
+ });
@@ -0,0 +1,48 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { Expect } from '../../../index.mjs';
3
+
4
+ describe('Метод toBeAssoc класса Expect', () => {
5
+ test('Должен возвращать true, если значение является ассоциативным массивом', () => {
6
+ const expectInstance = new Expect({ a: 1, b: 2, c: 3 });
7
+ expect(expectInstance.toBeAssoc()).toBe(true);
8
+ });
9
+
10
+ test('Должен выбрасывать ошибку, если значение не является ассоциативным массивом', () => {
11
+ const expectInstance = new Expect([1, 2, 3]);
12
+ expect(() => expectInstance.toBeAssoc()).toThrow(TypeError);
13
+ expect(() => expectInstance.toBeAssoc()).toThrow('');
14
+ });
15
+
16
+ test('Должен выбрасывать ошибку с пользовательским сообщением, если значение не является ассоциативным массивом', () => {
17
+ const expectInstance = new Expect([1, 2, 3]);
18
+ expect(() =>
19
+ expectInstance.toBeAssoc('Значение должно быть ассоциативным массивом'),
20
+ ).toThrow(TypeError);
21
+ expect(() =>
22
+ expectInstance.toBeAssoc('Значение должно быть ассоциативным массивом'),
23
+ ).toThrow('Значение должно быть ассоциативным массивом');
24
+ });
25
+
26
+ test('Должен выбрасывать ошибку, если параметр message не является строкой', () => {
27
+ const expectInstance = new Expect({ a: 1, b: 2, c: 3 });
28
+ expect(() => expectInstance.toBeAssoc(123)).toThrow(TypeError);
29
+ expect(() => expectInstance.toBeAssoc(123)).toThrow(
30
+ 'Параметр "message" должен быть строкой.',
31
+ );
32
+ });
33
+
34
+ test('Должен возвращать true, если значение является пустым объектом', () => {
35
+ const expectInstance = new Expect({});
36
+ expect(expectInstance.toBeAssoc()).toBe(true);
37
+ });
38
+
39
+ test('Должен возвращать true, если значение является объектом с вложенными объектами', () => {
40
+ const expectInstance = new Expect({ a: { b: 2 }, c: 3 });
41
+ expect(expectInstance.toBeAssoc()).toBe(true);
42
+ });
43
+
44
+ test('Должен выбрасывать ошибку, если значение является массивом, а не ассоциативным массивом', () => {
45
+ const expectInstance = new Expect([1, 2, 3]);
46
+ expect(() => expectInstance.toBeAssoc()).toThrow(TypeError);
47
+ });
48
+ });
@@ -0,0 +1,46 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { Expect } from '../../../index.mjs';
3
+
4
+ describe('Метод toBeBigInt класса Expect', () => {
5
+ test('Должен возвращать true, если значение является BigInt', () => {
6
+ const expectInstance = new Expect(123n);
7
+ expect(expectInstance.toBeBigInt()).toBe(true);
8
+ });
9
+
10
+ test('Должен выбрасывать ошибку, если значение не является BigInt', () => {
11
+ const expectInstance = new Expect(123);
12
+ expect(() => expectInstance.toBeBigInt()).toThrow(TypeError);
13
+ expect(() => expectInstance.toBeBigInt()).toThrow('');
14
+ });
15
+
16
+ test('Должен выбрасывать ошибку с пользовательским сообщением, если значение не является BigInt', () => {
17
+ const expectInstance = new Expect(123);
18
+ expect(() => expectInstance.toBeBigInt('Значение должно быть BigInt')).toThrow(TypeError);
19
+ expect(() => expectInstance.toBeBigInt('Значение должно быть BigInt')).toThrow(
20
+ 'Значение должно быть BigInt',
21
+ );
22
+ });
23
+
24
+ test('Должен выбрасывать ошибку, если параметр message не является строкой', () => {
25
+ const expectInstance = new Expect(123n);
26
+ expect(() => expectInstance.toBeBigInt(123)).toThrow(TypeError);
27
+ expect(() => expectInstance.toBeBigInt(123)).toThrow(
28
+ 'Параметр "message" должен быть строкой.',
29
+ );
30
+ });
31
+
32
+ test('Должен возвращать true, если значение является отрицательным BigInt', () => {
33
+ const expectInstance = new Expect(-123n);
34
+ expect(expectInstance.toBeBigInt()).toBe(true);
35
+ });
36
+
37
+ test('Должен выбрасывать ошибку, если значение является строкой, а не BigInt', () => {
38
+ const expectInstance = new Expect('123');
39
+ expect(() => expectInstance.toBeBigInt()).toThrow(TypeError);
40
+ });
41
+
42
+ test('Должен выбрасывать ошибку, если значение является числом с плавающей запятой, а не BigInt', () => {
43
+ const expectInstance = new Expect(123.45);
44
+ expect(() => expectInstance.toBeBigInt()).toThrow(TypeError);
45
+ });
46
+ });
@@ -0,0 +1,48 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { Expect } from '../../../index.mjs';
3
+
4
+ describe('Метод toBeBool класса Expect', () => {
5
+ test('Должен возвращать true, если значение является логическим типом (true)', () => {
6
+ const expectInstance = new Expect(true);
7
+ expect(expectInstance.toBeBool()).toBe(true);
8
+ });
9
+
10
+ test('Должен возвращать true, если значение является логическим типом (false)', () => {
11
+ const expectInstance = new Expect(false);
12
+ expect(expectInstance.toBeBool()).toBe(true);
13
+ });
14
+
15
+ test('Должен выбрасывать ошибку, если значение не является логическим типом', () => {
16
+ const expectInstance = new Expect(1);
17
+ expect(() => expectInstance.toBeBool()).toThrow(TypeError);
18
+ expect(() => expectInstance.toBeBool()).toThrow('');
19
+ });
20
+
21
+ test('Должен выбрасывать ошибку с пользовательским сообщением, если значение не является логическим типом', () => {
22
+ const expectInstance = new Expect(1);
23
+ expect(() => expectInstance.toBeBool('Значение должно быть логическим типом')).toThrow(
24
+ TypeError,
25
+ );
26
+ expect(() => expectInstance.toBeBool('Значение должно быть логическим типом')).toThrow(
27
+ 'Значение должно быть логическим типом',
28
+ );
29
+ });
30
+
31
+ test('Должен выбрасывать ошибку, если параметр message не является строкой', () => {
32
+ const expectInstance = new Expect(true);
33
+ expect(() => expectInstance.toBeBool(123)).toThrow(TypeError);
34
+ expect(() => expectInstance.toBeBool(123)).toThrow(
35
+ 'Параметр "message" должен быть строкой.',
36
+ );
37
+ });
38
+
39
+ test('Должен выбрасывать ошибку, если значение является строкой, а не логическим типом', () => {
40
+ const expectInstance = new Expect('true');
41
+ expect(() => expectInstance.toBeBool()).toThrow(TypeError);
42
+ });
43
+
44
+ test('Должен выбрасывать ошибку, если значение является числом, а не логическим типом', () => {
45
+ const expectInstance = new Expect(0);
46
+ expect(() => expectInstance.toBeBool()).toThrow(TypeError);
47
+ });
48
+ });
@@ -0,0 +1,48 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { Expect } from '../../../index.mjs';
3
+
4
+ describe('Метод toBeBoolean класса Expect', () => {
5
+ test('Должен возвращать true, если значение является логическим типом (true)', () => {
6
+ const expectInstance = new Expect(true);
7
+ expect(expectInstance.toBeBoolean()).toBe(true);
8
+ });
9
+
10
+ test('Должен возвращать true, если значение является логическим типом (false)', () => {
11
+ const expectInstance = new Expect(false);
12
+ expect(expectInstance.toBeBoolean()).toBe(true);
13
+ });
14
+
15
+ test('Должен выбрасывать ошибку, если значение не является логическим типом', () => {
16
+ const expectInstance = new Expect(1);
17
+ expect(() => expectInstance.toBeBoolean()).toThrow(TypeError);
18
+ expect(() => expectInstance.toBeBoolean()).toThrow('');
19
+ });
20
+
21
+ test('Должен выбрасывать ошибку с пользовательским сообщением, если значение не является логическим типом', () => {
22
+ const expectInstance = new Expect(1);
23
+ expect(() => expectInstance.toBeBoolean('Значение должно быть логическим типом')).toThrow(
24
+ TypeError,
25
+ );
26
+ expect(() => expectInstance.toBeBoolean('Значение должно быть логическим типом')).toThrow(
27
+ 'Значение должно быть логическим типом',
28
+ );
29
+ });
30
+
31
+ test('Должен выбрасывать ошибку, если параметр message не является строкой', () => {
32
+ const expectInstance = new Expect(true);
33
+ expect(() => expectInstance.toBeBoolean(123)).toThrow(TypeError);
34
+ expect(() => expectInstance.toBeBoolean(123)).toThrow(
35
+ 'Параметр "message" должен быть строкой.',
36
+ );
37
+ });
38
+
39
+ test('Должен выбрасывать ошибку, если значение является строкой, а не логическим типом', () => {
40
+ const expectInstance = new Expect('true');
41
+ expect(() => expectInstance.toBeBoolean()).toThrow(TypeError);
42
+ });
43
+
44
+ test('Должен выбрасывать ошибку, если значение является числом, а не логическим типом', () => {
45
+ const expectInstance = new Expect(0);
46
+ expect(() => expectInstance.toBeBoolean()).toThrow(TypeError);
47
+ });
48
+ });
@@ -0,0 +1,46 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { Expect } from '../../../index.mjs';
3
+
4
+ describe('Метод toBeChar класса Expect', () => {
5
+ test('Должен возвращать true, если значение является символом (один символ)', () => {
6
+ const expectInstance = new Expect('a');
7
+ expect(expectInstance.toBeChar()).toBe(true);
8
+ });
9
+
10
+ test('Должен выбрасывать ошибку, если значение не является символом (строка из нескольких символов)', () => {
11
+ const expectInstance = new Expect('abc');
12
+ expect(() => expectInstance.toBeChar()).toThrow(TypeError);
13
+ expect(() => expectInstance.toBeChar()).toThrow('');
14
+ });
15
+
16
+ test('Должен выбрасывать ошибку с пользовательским сообщением, если значение не является символом', () => {
17
+ const expectInstance = new Expect('abc');
18
+ expect(() => expectInstance.toBeChar('Значение должно быть символом')).toThrow(TypeError);
19
+ expect(() => expectInstance.toBeChar('Значение должно быть символом')).toThrow(
20
+ 'Значение должно быть символом',
21
+ );
22
+ });
23
+
24
+ test('Должен выбрасывать ошибку, если параметр message не является строкой', () => {
25
+ const expectInstance = new Expect('a');
26
+ expect(() => expectInstance.toBeChar(123)).toThrow(TypeError);
27
+ expect(() => expectInstance.toBeChar(123)).toThrow(
28
+ 'Параметр "message" должен быть строкой.',
29
+ );
30
+ });
31
+
32
+ test('Должен выбрасывать ошибку, если значение является числом, а не символом', () => {
33
+ const expectInstance = new Expect(1);
34
+ expect(() => expectInstance.toBeChar()).toThrow(TypeError);
35
+ });
36
+
37
+ test('Должен выбрасывать ошибку, если значение является пустой строкой', () => {
38
+ const expectInstance = new Expect('');
39
+ expect(() => expectInstance.toBeChar()).toThrow(TypeError);
40
+ });
41
+
42
+ test('Должен возвращать true, если значение является символом (специальный символ)', () => {
43
+ const expectInstance = new Expect('@');
44
+ expect(expectInstance.toBeChar()).toBe(true);
45
+ });
46
+ });
@@ -0,0 +1,48 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { Expect } from '../../../index.mjs';
3
+
4
+ describe('Метод toBeClass класса Expect', () => {
5
+ test('Должен возвращать true, если значение является классом', () => {
6
+ class MyClass {}
7
+ const expectInstance = new Expect(MyClass);
8
+ expect(expectInstance.toBeClass()).toBe(true);
9
+ });
10
+
11
+ test('Должен выбрасывать ошибку, если значение не является классом (функция)', () => {
12
+ const expectInstance = new Expect(() => {});
13
+ expect(() => expectInstance.toBeClass()).toThrow(TypeError);
14
+ expect(() => expectInstance.toBeClass()).toThrow('');
15
+ });
16
+
17
+ test('Должен выбрасывать ошибку с пользовательским сообщением, если значение не является классом', () => {
18
+ const expectInstance = new Expect(() => {});
19
+ expect(() => expectInstance.toBeClass('Значение должно быть классом')).toThrow(TypeError);
20
+ expect(() => expectInstance.toBeClass('Значение должно быть классом')).toThrow(
21
+ 'Значение должно быть классом',
22
+ );
23
+ });
24
+
25
+ test('Должен выбрасывать ошибку, если параметр message не является строкой', () => {
26
+ class MyClass {}
27
+ const expectInstance = new Expect(MyClass);
28
+ expect(() => expectInstance.toBeClass(123)).toThrow(TypeError);
29
+ expect(() => expectInstance.toBeClass(123)).toThrow(
30
+ 'Параметр "message" должен быть строкой.',
31
+ );
32
+ });
33
+
34
+ test('Должен выбрасывать ошибку, если значение является объектом, а не классом', () => {
35
+ const expectInstance = new Expect({ a: 1 });
36
+ expect(() => expectInstance.toBeClass()).toThrow(TypeError);
37
+ });
38
+
39
+ test('Должен выбрасывать ошибку, если значение является строкой, а не классом', () => {
40
+ const expectInstance = new Expect('MyClass');
41
+ expect(() => expectInstance.toBeClass()).toThrow(TypeError);
42
+ });
43
+
44
+ test('Должен выбрасывать ошибку, если значение является числом, а не классом', () => {
45
+ const expectInstance = new Expect(123);
46
+ expect(() => expectInstance.toBeClass()).toThrow(TypeError);
47
+ });
48
+ });
@@ -0,0 +1,48 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { Expect } from '../../../index.mjs';
3
+
4
+ describe('Метод toBeFloat класса Expect', () => {
5
+ test('Должен возвращать true, если значение является числом с плавающей запятой', () => {
6
+ const expectInstance = new Expect(3.14);
7
+ expect(expectInstance.toBeFloat()).toBe(true);
8
+ });
9
+
10
+ test('Должен выбрасывать ошибку, если значение не является числом с плавающей запятой', () => {
11
+ const expectInstance = new Expect(3);
12
+ expect(() => expectInstance.toBeFloat()).toThrow(TypeError);
13
+ expect(() => expectInstance.toBeFloat()).toThrow('');
14
+ });
15
+
16
+ test('Должен выбрасывать ошибку с пользовательским сообщением, если значение не является числом с плавающей запятой', () => {
17
+ const expectInstance = new Expect(3);
18
+ expect(() =>
19
+ expectInstance.toBeFloat('Значение должно быть числом с плавающей запятой'),
20
+ ).toThrow(TypeError);
21
+ expect(() =>
22
+ expectInstance.toBeFloat('Значение должно быть числом с плавающей запятой'),
23
+ ).toThrow('Значение должно быть числом с плавающей запятой');
24
+ });
25
+
26
+ test('Должен выбрасывать ошибку, если параметр message не является строкой', () => {
27
+ const expectInstance = new Expect(3.14);
28
+ expect(() => expectInstance.toBeFloat(123)).toThrow(TypeError);
29
+ expect(() => expectInstance.toBeFloat(123)).toThrow(
30
+ 'Параметр "message" должен быть строкой.',
31
+ );
32
+ });
33
+
34
+ test('Должен выбрасывать ошибку, если значение является строкой, а не числом с плавающей запятой', () => {
35
+ const expectInstance = new Expect('3.14');
36
+ expect(() => expectInstance.toBeFloat()).toThrow(TypeError);
37
+ });
38
+
39
+ test('Должен выбрасывать ошибку, если значение является целым числом, а не числом с плавающей запятой', () => {
40
+ const expectInstance = new Expect(3);
41
+ expect(() => expectInstance.toBeFloat()).toThrow(TypeError);
42
+ });
43
+
44
+ test('Должен возвращать true, если значение является отрицательным числом с плавающей запятой', () => {
45
+ const expectInstance = new Expect(-3.14);
46
+ expect(expectInstance.toBeFloat()).toBe(true);
47
+ });
48
+ });
@@ -0,0 +1,51 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { Expect } from '../../../index.mjs';
3
+
4
+ describe('Метод toBeFunction класса Expect', () => {
5
+ test('Должен возвращать true, если значение является функцией', () => {
6
+ function myFunction() {}
7
+ const expectInstance = new Expect(myFunction);
8
+ expect(expectInstance.toBeFunction()).toBe(true);
9
+ });
10
+
11
+ test('Должен выбрасывать ошибку, если значение не является функцией (число)', () => {
12
+ const expectInstance = new Expect(123);
13
+ expect(() => expectInstance.toBeFunction()).toThrow(TypeError);
14
+ expect(() => expectInstance.toBeFunction()).toThrow('');
15
+ });
16
+
17
+ test('Должен выбрасывать ошибку с пользовательским сообщением, если значение не является функцией', () => {
18
+ const expectInstance = new Expect(123);
19
+ expect(() => expectInstance.toBeFunction('Значение должно быть функцией')).toThrow(
20
+ TypeError,
21
+ );
22
+ expect(() => expectInstance.toBeFunction('Значение должно быть функцией')).toThrow(
23
+ 'Значение должно быть функцией',
24
+ );
25
+ });
26
+
27
+ test('Должен выбрасывать ошибку, если параметр message не является строкой', () => {
28
+ function myFunction() {}
29
+ const expectInstance = new Expect(myFunction);
30
+ expect(() => expectInstance.toBeFunction(123)).toThrow(TypeError);
31
+ expect(() => expectInstance.toBeFunction(123)).toThrow(
32
+ 'Параметр "message" должен быть строкой.',
33
+ );
34
+ });
35
+
36
+ test('Должен выбрасывать ошибку, если значение является строкой, а не функцией', () => {
37
+ const expectInstance = new Expect('function');
38
+ expect(() => expectInstance.toBeFunction()).toThrow(TypeError);
39
+ });
40
+
41
+ test('Должен выбрасывать ошибку, если значение является объектом, а не функцией', () => {
42
+ const expectInstance = new Expect({ a: 1 });
43
+ expect(() => expectInstance.toBeFunction()).toThrow(TypeError);
44
+ });
45
+
46
+ test('Должен возвращать true, если значение является функцией (стрелочная функция)', () => {
47
+ const myFunction = () => {};
48
+ const expectInstance = new Expect(myFunction);
49
+ expect(expectInstance.toBeFunction()).toBe(true);
50
+ });
51
+ });