@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,29 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { array_key_last } from '../../../index.mjs';
3
+
4
+ describe('Функция array_key_last', () => {
5
+ test('Должна возвращать последний ключ обычного массива', () => {
6
+ const array = [1, 2, 3];
7
+ const result = array_key_last(array);
8
+ expect(result).toBe(2);
9
+ });
10
+
11
+ test('Должна возвращать последний ключ ассоциативного массива', () => {
12
+ const array = { a: 1, b: 2, c: 3 };
13
+ const result = array_key_last(array);
14
+ expect(result).toBe('c');
15
+ });
16
+
17
+ test('Должна возвращать null для пустого массива', () => {
18
+ const array = [];
19
+ const result = array_key_last(array);
20
+ expect(result).toBeNull();
21
+ });
22
+
23
+ test('Должна выбрасывать ошибку, если value не является массивом', () => {
24
+ expect(() => array_key_last('not an array')).toThrow(TypeError);
25
+ expect(() => array_key_last('not an array')).toThrow(
26
+ 'Параметр "value" должен быть массивом.',
27
+ );
28
+ });
29
+ });
@@ -0,0 +1,23 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { array_key_to_lower_case } from '../../../index.mjs';
3
+
4
+ describe('Функция array_key_to_lower_case', () => {
5
+ test('Должна преобразовывать ключи ассоциативного массива в нижний регистр', () => {
6
+ const assoc = { Key1: 'value1', Key2: 'value2' };
7
+ const result = array_key_to_lower_case(assoc);
8
+ expect(result).toEqual({ key1: 'value1', key2: 'value2' });
9
+ });
10
+
11
+ test('Должна возвращать список (обычный массив) без изменений', () => {
12
+ const list = [1, 2, 3];
13
+ const result = array_key_to_lower_case(list);
14
+ expect(result).toEqual(list);
15
+ });
16
+
17
+ test('Должна выбрасывать ошибку, если переданное значение не является массивом', () => {
18
+ expect(() => array_key_to_lower_case('not an array')).toThrow(TypeError);
19
+ expect(() => array_key_to_lower_case('not an array')).toThrow(
20
+ 'Параметр "array" должен быть массивом.',
21
+ );
22
+ });
23
+ });
@@ -0,0 +1,23 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { array_key_to_upper_case } from '../../../index.mjs';
3
+
4
+ describe('Функция array_key_to_upper_case', () => {
5
+ test('Должна преобразовывать ключи ассоциативного массива в верхний регистр', () => {
6
+ const assoc = { key1: 'value1', key2: 'value2' };
7
+ const result = array_key_to_upper_case(assoc);
8
+ expect(result).toEqual({ KEY1: 'value1', KEY2: 'value2' });
9
+ });
10
+
11
+ test('Должна возвращать список (обычный массив) без изменений', () => {
12
+ const list = [1, 2, 3];
13
+ const result = array_key_to_upper_case(list);
14
+ expect(result).toEqual(list);
15
+ });
16
+
17
+ test('Должна выбрасывать ошибку, если переданное значение не является массивом', () => {
18
+ expect(() => array_key_to_upper_case('not an array')).toThrow(TypeError);
19
+ expect(() => array_key_to_upper_case('not an array')).toThrow(
20
+ 'Параметр "array" должен быть массивом.',
21
+ );
22
+ });
23
+ });
@@ -0,0 +1,27 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { array_keys } from '../../../index.mjs';
3
+
4
+ describe('Функция array_keys', () => {
5
+ test('Должна возвращать массив ключей из обычного массива', () => {
6
+ const array = [1, 2, 3];
7
+ const result = array_keys(array);
8
+ expect(result).toEqual(['0', '1', '2']);
9
+ });
10
+
11
+ test('Должна возвращать массив ключей из ассоциативного массива', () => {
12
+ const array = { a: 1, b: 2, c: 3 };
13
+ const result = array_keys(array);
14
+ expect(result).toEqual(['a', 'b', 'c']);
15
+ });
16
+
17
+ test('Должна возвращать пустой массив для пустого массива', () => {
18
+ const array = [];
19
+ const result = array_keys(array);
20
+ expect(result).toEqual([]);
21
+ });
22
+
23
+ test('Должна выбрасывать ошибку, если value не является массивом или объектом', () => {
24
+ expect(() => array_keys('not an array')).toThrow(TypeError);
25
+ expect(() => array_keys('not an array')).toThrow('Параметр "value" должен быть массивом.');
26
+ });
27
+ });
@@ -0,0 +1,32 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { array_map } from '../../../index.mjs';
3
+
4
+ describe('Функция array_map', () => {
5
+ test('Должна применять функцию обратного вызова к обычному массиву', () => {
6
+ const array = [1, 2, 3];
7
+ const callback = (value) => value * 2;
8
+ const result = array_map(array, callback);
9
+ expect(result).toEqual([2, 4, 6]);
10
+ });
11
+
12
+ test('Должна применять функцию обратного вызова к ассоциативному массиву', () => {
13
+ const array = { a: 1, b: 2, c: 3 };
14
+ const callback = (value) => value * 2;
15
+ const result = array_map(array, callback);
16
+ expect(result).toEqual({ a: 2, b: 4, c: 6 });
17
+ });
18
+
19
+ test('Должна выбрасывать ошибку, если value не является массивом', () => {
20
+ expect(() => array_map('not an array', (value) => value * 2)).toThrow(TypeError);
21
+ expect(() => array_map('not an array', (value) => value * 2)).toThrow(
22
+ 'Параметр "value" должен быть массивом.',
23
+ );
24
+ });
25
+
26
+ test('Должна выбрасывать ошибку, если callback не является функцией', () => {
27
+ expect(() => array_map([1, 2, 3], 'not a function')).toThrow(TypeError);
28
+ expect(() => array_map([1, 2, 3], 'not a function')).toThrow(
29
+ 'Параметр "callback" должен быть функцией.',
30
+ );
31
+ });
32
+ });
@@ -0,0 +1,37 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { array_merge } from '../../../index.mjs';
3
+
4
+ describe('Функция array_merge', () => {
5
+ test('Должна объединять обычные массивы', () => {
6
+ const array1 = [1, 2, 3];
7
+ const array2 = [4, 5, 6];
8
+ const result = array_merge(array1, array2);
9
+ expect(result).toEqual([1, 2, 3, 4, 5, 6]);
10
+ });
11
+
12
+ test('Должна объединять ассоциативные массивы', () => {
13
+ const array1 = { a: 1, b: 2 };
14
+ const array2 = { c: 3, d: 4 };
15
+ const result = array_merge(array1, array2);
16
+ expect(result).toEqual({ a: 1, b: 2, c: 3, d: 4 });
17
+ });
18
+
19
+ test('Должна объединять обычные и ассоциативные массивы', () => {
20
+ const array1 = [1, 2, 3];
21
+ const array2 = { a: 4, b: 5 };
22
+ const result = array_merge(array1, array2);
23
+ expect(result).toEqual({ 0: 1, 1: 2, 2: 3, a: 4, b: 5 });
24
+ });
25
+
26
+ test('Должна возвращать пустой массив, если массивы пустые', () => {
27
+ const result = array_merge([], []);
28
+ expect(result).toEqual([]);
29
+ });
30
+
31
+ test('Должна выбрасывать ошибку, если хотя бы один из параметров не является массивом', () => {
32
+ expect(() => array_merge('not an array')).toThrow(TypeError);
33
+ expect(() => array_merge('not an array')).toThrow(
34
+ 'Параметр "arrays" должен быть массивом.',
35
+ );
36
+ });
37
+ });
@@ -0,0 +1,65 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { array_merge_recursive } from '../../../index.mjs';
3
+
4
+ describe('Функция array_merge_recursive', () => {
5
+ test('Должна объединять обычные массивы рекурсивно', () => {
6
+ const array1 = [1, 2, 3];
7
+ const array2 = [4, 5, 6];
8
+ const result = array_merge_recursive(array1, array2);
9
+ expect(result).toEqual([1, 2, 3, 4, 5, 6]);
10
+ });
11
+
12
+ test('Должна объединять ассоциативные массивы рекурсивно', () => {
13
+ const array1 = { a: 1, b: 2 };
14
+ const array2 = { b: 3, c: 4 };
15
+ const result = array_merge_recursive(array1, array2);
16
+ expect(result).toEqual({ a: 1, b: [2, 3], c: 4 });
17
+ });
18
+
19
+ test('Должна объединять обычные и ассоциативные массивы рекурсивно', () => {
20
+ const array1 = [1, 2, 3];
21
+ const array2 = { a: 4, b: 5 };
22
+ const result = array_merge_recursive(array1, array2);
23
+ expect(result).toEqual({ 0: 1, 1: 2, 2: 3, a: 4, b: 5 });
24
+ });
25
+
26
+ test('Должна объединять вложенные массивы рекурсивно', () => {
27
+ const array1 = { a: { b: 1 } };
28
+ const array2 = { a: { c: 2 } };
29
+ const result = array_merge_recursive(array1, array2);
30
+ expect(result).toEqual({ a: { b: 1, c: 2 } });
31
+ });
32
+
33
+ test('Должна объединять вложенные массивы с одинаковыми ключами рекурсивно', () => {
34
+ const array1 = { a: { b: 1 } };
35
+ const array2 = { a: { b: 2 } };
36
+ const result = array_merge_recursive(array1, array2);
37
+ expect(result).toEqual({ a: { b: [1, 2] } });
38
+ });
39
+
40
+ test('Должна объединять массивы с разными типами данных рекурсивно', () => {
41
+ const array1 = { a: 1, b: { c: 2 } };
42
+ const array2 = { b: { d: 3 }, e: 4 };
43
+ const result = array_merge_recursive(array1, array2);
44
+ expect(result).toEqual({ a: 1, b: { c: 2, d: 3 }, e: 4 });
45
+ });
46
+
47
+ test('Должна объединять массивы с одинаковыми ключами и разными типами данных рекурсивно', () => {
48
+ const array1 = { a: 1, b: { c: 2 } };
49
+ const array2 = { a: 'one', b: { c: 'two' } };
50
+ const result = array_merge_recursive(array1, array2);
51
+ expect(result).toEqual({ a: [1, 'one'], b: { c: [2, 'two'] } });
52
+ });
53
+
54
+ test('Должна возвращать пустой массив, если массивы пустые', () => {
55
+ const result = array_merge_recursive([], []);
56
+ expect(result).toEqual([]);
57
+ });
58
+
59
+ test('Должна выбрасывать ошибку, если хотя бы один из параметров не является массивом', () => {
60
+ expect(() => array_merge_recursive('not an array')).toThrow(TypeError);
61
+ expect(() => array_merge_recursive('not an array')).toThrow(
62
+ 'Параметр "arrays" должен быть массивом.',
63
+ );
64
+ });
65
+ });
@@ -0,0 +1,48 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { array_pad } from '../../../index.mjs';
3
+
4
+ describe('Функция array_pad', () => {
5
+ test('Должна добавлять элементы в конец массива, если размер положительный', () => {
6
+ const array = [1, 2, 3];
7
+ const result = array_pad(array, 5, 0);
8
+ expect(result).toEqual([1, 2, 3, 0, 0]);
9
+ });
10
+
11
+ test('Должна добавлять элементы в начало массива, если размер отрицательный', () => {
12
+ const array = [1, 2, 3];
13
+ const result = array_pad(array, -5, 0);
14
+ expect(result).toEqual([0, 0, 1, 2, 3]);
15
+ });
16
+
17
+ test('Должна возвращать массив без изменений, если размер меньше или равен текущему размеру массива', () => {
18
+ const array = [1, 2, 3];
19
+ const result = array_pad(array, 3, 0);
20
+ expect(result).toEqual([1, 2, 3]);
21
+ });
22
+
23
+ test('Должна возвращать пустой массив, если исходный массив пустой и размер положительный', () => {
24
+ const array = [];
25
+ const result = array_pad(array, 3, 0);
26
+ expect(result).toEqual([0, 0, 0]);
27
+ });
28
+
29
+ test('Должна возвращать пустой массив, если исходный массив пустой и размер отрицательный', () => {
30
+ const array = [];
31
+ const result = array_pad(array, -3, 0);
32
+ expect(result).toEqual([0, 0, 0]);
33
+ });
34
+
35
+ test('Должна выбрасывать ошибку, если первый параметр не является массивом', () => {
36
+ expect(() => array_pad('not an array', 5, 0)).toThrow(TypeError);
37
+ expect(() => array_pad('not an array', 5, 0)).toThrow(
38
+ 'Параметр "arr" должен быть массивом.',
39
+ );
40
+ });
41
+
42
+ test('Должна выбрасывать ошибку, если второй параметр не является числом', () => {
43
+ expect(() => array_pad([1, 2, 3], 'not a number', 0)).toThrow(TypeError);
44
+ expect(() => array_pad([1, 2, 3], 'not a number', 0)).toThrow(
45
+ 'Параметр "length" должен быть целым числом.',
46
+ );
47
+ });
48
+ });
@@ -0,0 +1,29 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { array_pop } from '../../../index.mjs';
3
+
4
+ describe('Функция array_pop', () => {
5
+ test('Должна удалять и возвращать последний элемент обычного массива', () => {
6
+ const array = [1, 2, 3];
7
+ const result = array_pop(array);
8
+ expect(result).toBe(3);
9
+ expect(array).toEqual([1, 2]);
10
+ });
11
+
12
+ test('Должна удалять и возвращать последний элемент ассоциативного массива', () => {
13
+ const array = { a: 1, b: 2, c: 3 };
14
+ const result = array_pop(array);
15
+ expect(result).toBe(3);
16
+ expect(array).toEqual({ a: 1, b: 2 });
17
+ });
18
+
19
+ test('Должна возвращать null для пустого массива', () => {
20
+ const array = [];
21
+ const result = array_pop(array);
22
+ expect(result).toBeNull();
23
+ });
24
+
25
+ test('Должна выбрасывать ошибку, если параметр не является массивом', () => {
26
+ expect(() => array_pop('not an array')).toThrow(TypeError);
27
+ expect(() => array_pop('not an array')).toThrow('Параметр "arr" должен быть массивом.');
28
+ });
29
+ });
@@ -0,0 +1,33 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { array_product } from '../../../index.mjs';
3
+
4
+ describe('Функция array_product', () => {
5
+ test('Должна вычислять произведение значений обычного массива', () => {
6
+ const array = [1, 2, 3, 4];
7
+ const result = array_product(array);
8
+ expect(result).toBe(24);
9
+ });
10
+
11
+ test('Должна вычислять произведение значений ассоциативного массива', () => {
12
+ const array = { a: 1, b: 2, c: 3 };
13
+ const result = array_product(array);
14
+ expect(result).toBe(6);
15
+ });
16
+
17
+ test('Должна возвращать 1 для пустого массива', () => {
18
+ const array = [];
19
+ const result = array_product(array);
20
+ expect(result).toBe(1);
21
+ });
22
+
23
+ test('Должна игнорировать нечисловые значения в массиве', () => {
24
+ const array = [1, 'a', 2, 'b', 3];
25
+ const result = array_product(array);
26
+ expect(result).toBe(6);
27
+ });
28
+
29
+ test('Должна выбрасывать ошибку, если параметр не является массивом', () => {
30
+ expect(() => array_product('not an array')).toThrow(TypeError);
31
+ expect(() => array_product('not an array')).toThrow('Параметр "arr" должен быть массивом.');
32
+ });
33
+ });
@@ -0,0 +1,31 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { array_push } from '../../../index.mjs';
3
+
4
+ describe('Функция array_push', () => {
5
+ test('Должна добавлять элементы в конец обычного массива', () => {
6
+ const array = [1, 2, 3];
7
+ const result = array_push(array, 4, 5);
8
+ expect(result).toBe(5);
9
+ expect(array).toEqual([1, 2, 3, 4, 5]);
10
+ });
11
+
12
+ test('Должна добавлять элементы в конец ассоциативного массива', () => {
13
+ const array = { a: 1, b: 2 };
14
+ const result = array_push(array, 3, 4);
15
+ expect(result).toBe(4);
16
+ expect(array).toEqual({ a: 1, b: 2, 0: 3, 1: 4 });
17
+ });
18
+
19
+ test('Должна возвращать новую длину массива после добавления элементов', () => {
20
+ const array = [1, 2, 3];
21
+ const result = array_push(array, 4, 5);
22
+ expect(result).toBe(5);
23
+ });
24
+
25
+ test('Должна выбрасывать ошибку, если параметр не является массивом', () => {
26
+ expect(() => array_push('not an array', 1, 2)).toThrow(TypeError);
27
+ expect(() => array_push('not an array', 1, 2)).toThrow(
28
+ 'Параметр "arr" должен быть массивом.',
29
+ );
30
+ });
31
+ });
@@ -0,0 +1,59 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { array_rand } from '../../../index.mjs';
3
+
4
+ describe('Функция array_rand', () => {
5
+ test('Должна возвращать случайный ключ из обычного массива', () => {
6
+ const array = [1, 2, 3, 4, 5];
7
+ const result = array_rand(array);
8
+ expect(array).toContain(array[result]);
9
+ });
10
+
11
+ test('Должна возвращать случайный ключ из ассоциативного массива', () => {
12
+ const array = { a: 1, b: 2, c: 3 };
13
+ const result = array_rand(array);
14
+ expect(Object.keys(array)).toContain(result[0]);
15
+ });
16
+
17
+ test('Должна возвращать несколько случайных ключей из обычного массива', () => {
18
+ const array = [1, 2, 3, 4, 5];
19
+ const result = array_rand(array, 3);
20
+ expect(result.length).toBe(3);
21
+ result.forEach((key) => {
22
+ expect(array).toContain(array[key]);
23
+ });
24
+ });
25
+
26
+ test('Должна возвращать несколько случайных ключей из ассоциативного массива', () => {
27
+ const array = { a: 1, b: 2, c: 3, d: 4, e: 5 };
28
+ const result = array_rand(array, 3);
29
+ expect(result.length).toBe(3);
30
+ result.forEach((key) => {
31
+ expect(Object.keys(array)).toContain(key[0]);
32
+ });
33
+ });
34
+
35
+ test('Должна возвращать null для пустого массива', () => {
36
+ const array = [];
37
+ const result = array_rand(array);
38
+ expect(result).toBeNull();
39
+ });
40
+
41
+ test('Должна выбрасывать ошибку, если параметр не является массивом', () => {
42
+ expect(() => array_rand('not an array')).toThrow(TypeError);
43
+ expect(() => array_rand('not an array')).toThrow('Параметр "arr" должен быть массивом.');
44
+ });
45
+
46
+ test('Должна выбрасывать ошибку, если параметр count не является целым числом', () => {
47
+ expect(() => array_rand([1, 2, 3], 'not a number')).toThrow(TypeError);
48
+ expect(() => array_rand([1, 2, 3], 'not a number')).toThrow(
49
+ 'Параметр "count" должен быть целым числом.',
50
+ );
51
+ });
52
+
53
+ test('Должна выбрасывать ошибку, если параметр count выходит за пределы длины массива', () => {
54
+ expect(() => array_rand([1, 2, 3], 5)).toThrow(Error);
55
+ expect(() => array_rand([1, 2, 3], 5)).toThrow(
56
+ 'Значение параметра "count" выходит за пределы длины массива.',
57
+ );
58
+ });
59
+ });
@@ -0,0 +1,44 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { array_reduce } from '../../../index.mjs';
3
+
4
+ describe('Функция array_reduce', () => {
5
+ test('Должна суммировать элементы обычного массива', () => {
6
+ const array = [1, 2, 3, 4];
7
+ const result = array_reduce(array, (acc, value) => acc + value, 0);
8
+ expect(result).toBe(10);
9
+ });
10
+
11
+ test('Должна объединять строки в массиве', () => {
12
+ const array = ['a', 'b', 'c'];
13
+ const result = array_reduce(array, (acc, value) => acc + value, '');
14
+ expect(result).toBe('abc');
15
+ });
16
+
17
+ test('Должна суммировать элементы ассоциативного массива', () => {
18
+ const array = { a: 1, b: 2, c: 3 };
19
+ const result = array_reduce(array, (acc, value) => acc + value, 0);
20
+ expect(result).toBe(6);
21
+ });
22
+
23
+ test('Должна возвращать начальное значение для пустого массива', () => {
24
+ const array = [];
25
+ const result = array_reduce(array, (acc, value) => acc + value, 0);
26
+ expect(result).toBe(0);
27
+ });
28
+
29
+ test('Должна выбрасывать ошибку, если первый параметр не является массивом', () => {
30
+ expect(() => array_reduce('not an array', (acc, value) => acc + value, 0)).toThrow(
31
+ TypeError,
32
+ );
33
+ expect(() => array_reduce('not an array', (acc, value) => acc + value, 0)).toThrow(
34
+ 'Параметр "arr" должен быть массивом.',
35
+ );
36
+ });
37
+
38
+ test('Должна выбрасывать ошибку, если второй параметр не является функцией', () => {
39
+ expect(() => array_reduce([1, 2, 3], 'not a function', 0)).toThrow(TypeError);
40
+ expect(() => array_reduce([1, 2, 3], 'not a function', 0)).toThrow(
41
+ 'Параметр "callback" должен быть функцией.',
42
+ );
43
+ });
44
+ });
@@ -0,0 +1,46 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { array_replace } from '../../../index.mjs';
3
+
4
+ describe('Функция array_replace', () => {
5
+ test('Должна заменять значения в обычном массиве', () => {
6
+ const array = [1, 2, 3];
7
+ const replacements = { 1: 4, 2: 5 };
8
+ const result = array_replace(array, replacements);
9
+ expect(result).toEqual([1, 4, 5]);
10
+ });
11
+
12
+ test('Должна заменять значения в ассоциативном массиве', () => {
13
+ const array = { a: 1, b: 2, c: 3 };
14
+ const replacements = { b: 4, c: 5 };
15
+ const result = array_replace(array, replacements);
16
+ expect(result).toEqual({ a: 1, b: 4, c: 5 });
17
+ });
18
+
19
+ test('Должна возвращать массив без изменений, если замены не указаны', () => {
20
+ const array = [1, 2, 3];
21
+ const replacements = {};
22
+ const result = array_replace(array, replacements);
23
+ expect(result).toEqual([1, 2, 3]);
24
+ });
25
+
26
+ test('Должна возвращать массив без изменений, если замены не соответствуют ключам', () => {
27
+ const array = [1, 2, 3];
28
+ const replacements = { 3: 4, 4: 5 };
29
+ const result = array_replace(array, replacements);
30
+ expect(result).toEqual([1, 2, 3]);
31
+ });
32
+
33
+ test('Должна выбрасывать ошибку, если первый параметр не является массивом', () => {
34
+ expect(() => array_replace('not an array', { 1: 4 })).toThrow(TypeError);
35
+ expect(() => array_replace('not an array', { 1: 4 })).toThrow(
36
+ 'Параметр "arr" должен быть массивом.',
37
+ );
38
+ });
39
+
40
+ test('Должна выбрасывать ошибку, если второй параметр не является объектом', () => {
41
+ expect(() => array_replace([1, 2, 3], 'not an array')).toThrow(TypeError);
42
+ expect(() => array_replace([1, 2, 3], 'not an array')).toThrow(
43
+ 'Параметр "replacements" должен быть массивом.',
44
+ );
45
+ });
46
+ });
@@ -0,0 +1,46 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { array_replace_recursive } from '../../../index.mjs';
3
+
4
+ describe('Функция array_replace_recursive', () => {
5
+ test('Должна рекурсивно заменять значения в обычном массиве', () => {
6
+ const array = [1, 2, [3, 4]];
7
+ const replacements = { 2: [5, 6] };
8
+ const result = array_replace_recursive(array, replacements);
9
+ expect(result).toEqual([1, 2, [5, 6]]);
10
+ });
11
+
12
+ test('Должна рекурсивно заменять значения в ассоциативном массиве', () => {
13
+ const array = { a: 1, b: { c: 2, d: 3 } };
14
+ const replacements = { b: { c: 4, e: 5 } };
15
+ const result = array_replace_recursive(array, replacements);
16
+ expect(result).toEqual({ a: 1, b: { c: 4, d: 3 } });
17
+ });
18
+
19
+ test('Должна возвращать массив без изменений, если замены не указаны', () => {
20
+ const array = [1, 2, 3];
21
+ const replacements = {};
22
+ const result = array_replace_recursive(array, replacements);
23
+ expect(result).toEqual([1, 2, 3]);
24
+ });
25
+
26
+ test('Должна возвращать массив без изменений, если замены не соответствуют ключам', () => {
27
+ const array = [1, 2, 3];
28
+ const replacements = { 3: 4, 4: 5 };
29
+ const result = array_replace_recursive(array, replacements);
30
+ expect(result).toEqual([1, 2, 3]);
31
+ });
32
+
33
+ test('Должна выбрасывать ошибку, если первый параметр не является массивом', () => {
34
+ expect(() => array_replace_recursive('not an array', { 1: 4 })).toThrow(TypeError);
35
+ expect(() => array_replace_recursive('not an array', { 1: 4 })).toThrow(
36
+ 'Параметр "arr" должен быть массивом.',
37
+ );
38
+ });
39
+
40
+ test('Должна выбрасывать ошибку, если второй параметр не является объектом', () => {
41
+ expect(() => array_replace_recursive([1, 2, 3], 'not an array')).toThrow(TypeError);
42
+ expect(() => array_replace_recursive([1, 2, 3], 'not an array')).toThrow(
43
+ 'Параметр "replacements" должен быть массивом.',
44
+ );
45
+ });
46
+ });
@@ -0,0 +1,31 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { array_reverse } from '../../../index.mjs';
3
+
4
+ describe('Функция array_reverse', () => {
5
+ test('Должна переворачивать обычный массив', () => {
6
+ const array = [1, 2, 3];
7
+ const result = array_reverse(array);
8
+ expect(result).toEqual([3, 2, 1]);
9
+ });
10
+
11
+ test('Должна переворачивать ассоциативный массив', () => {
12
+ const array = { a: 1, b: 2, c: 3 };
13
+ const result = array_reverse(array);
14
+ expect(result).toEqual([
15
+ ['c', 3],
16
+ ['b', 2],
17
+ ['a', 1],
18
+ ]);
19
+ });
20
+
21
+ test('Должна возвращать пустой массив, если исходный массив пустой', () => {
22
+ const array = [];
23
+ const result = array_reverse(array);
24
+ expect(result).toEqual([]);
25
+ });
26
+
27
+ test('Должна выбрасывать ошибку, если параметр не является массивом', () => {
28
+ expect(() => array_reverse('not an array')).toThrow(TypeError);
29
+ expect(() => array_reverse('not an array')).toThrow('Параметр "arr" должен быть массивом.');
30
+ });
31
+ });