@rogolev/value 0.0.3 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -1,1262 +1,1320 @@
1
- import { expect, test, describe } from '@jest/globals';
2
- import { Type } from '../../index.mjs';
3
-
4
- describe('Класс Type', () => {
5
- describe('Метод Type.isEmpty', () => {
6
- test('Должен возвращать true для пустых значений', () => {
7
- expect(Type.isEmpty(null)).toBe(true);
8
- expect(Type.isEmpty(undefined)).toBe(true);
9
- expect(Type.isEmpty('')).toBe(true);
10
- expect(Type.isEmpty(0)).toBe(true);
11
- expect(Type.isEmpty(false)).toBe(true);
12
- expect(Type.isEmpty([])).toBe(true);
13
- expect(Type.isEmpty({})).toBe(true);
14
- });
15
-
16
- test('Должен возвращать false для непустых значений', () => {
17
- expect(Type.isEmpty('example')).toBe(false);
18
- expect(Type.isEmpty(123)).toBe(false);
19
- expect(Type.isEmpty(true)).toBe(false);
20
- expect(Type.isEmpty([1, 2, 3])).toBe(false);
21
- expect(Type.isEmpty({ key: 'value' })).toBe(false);
22
- });
23
- });
24
-
25
- describe('Метод Type.isArray', () => {
26
- describe('Примитивные значения и базовые типы', () => {
27
- test('false не является массивом', () => {
28
- expect(Type.isArray(false)).toBeFalsy();
29
- });
30
-
31
- test('true не является массивом', () => {
32
- expect(Type.isArray(true)).toBeFalsy();
33
- });
34
-
35
- test('Число 3 не является массивом', () => {
36
- expect(Type.isArray(3)).toBeFalsy();
37
- });
38
-
39
- test('Число 3.14 не является массивом', () => {
40
- expect(Type.isArray(3.14)).toBeFalsy();
41
- });
42
-
43
- test('Строка "string" не является массивом', () => {
44
- expect(Type.isArray('string')).toBeFalsy();
45
- });
46
-
47
- test('null не является массивом', () => {
48
- expect(Type.isArray(null)).toBeFalsy();
49
- });
50
-
51
- test('undefined не является массивом', () => {
52
- expect(Type.isArray(undefined)).toBeFalsy();
53
- });
54
-
55
- test('NaN не является массивом', () => {
56
- expect(Type.isArray(NaN)).toBeFalsy();
57
- });
58
-
59
- test('Symbol не является массивом', () => {
60
- expect(Type.isArray(Symbol())).toBeFalsy();
61
- });
62
- });
63
-
64
- describe('Массивы и объекты', () => {
65
- test('Обычный массив [1, 2] является массивом', () => {
66
- expect(Type.isArray([1, 2])).toBeTruthy();
67
- });
68
-
69
- test('Объект с парами ключ-значение {0: 1, 1: 2} является ассоциативным массивом', () => {
70
- expect(Type.isArray({ 0: 1, 1: 2 })).toBeTruthy();
71
- });
72
-
73
- test('Объект {foo: "bar"} является ассоциативным массивом', () => {
74
- expect(Type.isArray({ foo: 'bar' })).toBeTruthy();
75
- });
76
-
77
- test('Объект, созданный через Object.create(null), является ассоциативным массивом', () => {
78
- const noProtoObject = Object.create(null);
79
- noProtoObject.foo = 'bar';
80
- expect(Type.isArray(noProtoObject)).toBeTruthy();
81
- });
82
-
83
- test('Proxy является массивом', () => {
84
- const handler = {};
85
- const proxy = new Proxy([1, 2, 3], handler); // Проксируем массив
86
- expect(Type.isArray(proxy)).toBeTruthy();
87
- });
88
- });
89
-
90
- describe('Не массивы', () => {
91
- describe('Классы', () => {
92
- test('Экземпляр класса stdClass не является массивом', () => {
93
- class stdClass {}
94
- expect(Type.isArray(new stdClass())).toBeFalsy();
95
- });
96
-
97
- test('Класс stdClass сам по себе не является массивом', () => {
98
- class stdClass {}
99
- expect(Type.isArray(stdClass)).toBeFalsy();
100
- });
101
- });
102
-
103
- describe('Глобальные объекты', () => {
104
- // Массив глобальных объектов, которые не являются массивами
105
- const globalObjects = [Object, Function, Boolean];
106
-
107
- globalObjects.forEach((globalObj) => {
108
- test(`${globalObj.name} не является массивом`, () => {
109
- expect(Type.isArray(globalObj)).toBeFalsy();
110
- });
111
- });
112
-
113
- test('Symbol не является массивом', () => {
114
- expect(Type.isArray(Symbol)).toBeFalsy();
115
- });
116
- });
117
-
118
- describe('Обработка текста', () => {
119
- test('String не является массивом', () => {
120
- expect(Type.isArray(String)).toBeFalsy();
121
- });
122
-
123
- test('RegExp не является массивом', () => {
124
- expect(Type.isArray(RegExp)).toBeFalsy();
125
- expect(Type.isArray(/abc/)).toBeFalsy();
126
- });
127
- });
128
-
129
- describe('Числа и даты', () => {
130
- test('Number не является массивом', () => {
131
- expect(Type.isArray(Number)).toBeFalsy();
132
- });
133
-
134
- test('BigInt не является массивом', () => {
135
- expect(Type.isArray(BigInt)).toBeFalsy();
136
- expect(Type.isArray(123n)).toBeFalsy();
137
- });
138
-
139
- test('Math не является массивом', () => {
140
- expect(Type.isArray(Math)).toBeFalsy();
141
- });
142
-
143
- test('Date не является массивом', () => {
144
- expect(Type.isArray(Date)).toBeFalsy();
145
- expect(Type.isArray(new Date())).toBeFalsy();
146
- });
147
- });
148
-
149
- describe('Структурированные данные', () => {
150
- test('Array не является массивом', () => {
151
- expect(Type.isArray(Array)).toBeFalsy();
152
- });
153
-
154
- test('Экземпляр Map не является массивом', () => {
155
- expect(Type.isArray(Map)).toBeFalsy();
156
- expect(Type.isArray(new Map())).toBeFalsy();
157
- });
158
-
159
- test('Экземпляр Set не является массивом', () => {
160
- expect(Type.isArray(Set)).toBeFalsy();
161
- expect(Type.isArray(new Set())).toBeFalsy();
162
- });
163
-
164
- test('WeakMap не является массивом', () => {
165
- expect(Type.isArray(WeakMap)).toBeFalsy();
166
- expect(Type.isArray(new WeakMap())).toBeFalsy();
167
- });
168
-
169
- test('WeakSet не является массивом', () => {
170
- expect(Type.isArray(WeakSet)).toBeFalsy();
171
- expect(Type.isArray(new WeakSet())).toBeFalsy();
172
- });
173
-
174
- test('ArrayBuffer не является массивом', () => {
175
- expect(Type.isArray(ArrayBuffer)).toBeFalsy();
176
- expect(Type.isArray(new ArrayBuffer(8))).toBeFalsy();
177
- });
178
-
179
- test('SharedArrayBuffer не является массивом', () => {
180
- expect(Type.isArray(SharedArrayBuffer)).toBeFalsy();
181
- expect(Type.isArray(new SharedArrayBuffer(8))).toBeFalsy();
182
- });
183
-
184
- test('DataView не является массивом', () => {
185
- expect(Type.isArray(DataView)).toBeFalsy();
186
- expect(Type.isArray(new DataView(new ArrayBuffer(8)))).toBeFalsy();
187
- });
188
-
189
- test('Typed Arrays не являются массивами', () => {
190
- const typedArrays = [
191
- Int8Array,
192
- Uint8Array,
193
- Uint8ClampedArray,
194
- Int16Array,
195
- Uint16Array,
196
- Int32Array,
197
- Uint32Array,
198
- Float32Array,
199
- Float64Array,
200
- BigInt64Array,
201
- BigUint64Array,
202
- ];
203
- typedArrays.forEach((ArrayType) => {
204
- expect(Type.isArray(ArrayType)).toBeFalsy();
205
- expect(Type.isArray(new ArrayType(8))).toBeFalsy();
206
- });
207
- });
208
- });
209
-
210
- describe('Объекты абстракции управления', () => {
211
- test('Promise не является массивом', () => {
212
- expect(Type.isArray(new Promise(() => {}))).toBeFalsy();
213
- });
214
-
215
- test('Generator не является массивом', () => {
216
- function* gen() {}
217
- expect(Type.isArray(gen())).toBeFalsy();
218
- });
219
-
220
- test('GeneratorFunction не является массивом', () => {
221
- function* gen() {}
222
- expect(Type.isArray(gen.constructor)).toBeFalsy();
223
- });
224
-
225
- test('AsyncFunction не является массивом', () => {
226
- async function func() {}
227
- expect(Type.isArray(func)).toBeFalsy();
228
- });
229
-
230
- test('AsyncGenerator не является массивом', () => {
231
- async function* gen() {}
232
- expect(Type.isArray(gen())).toBeFalsy();
233
- });
234
-
235
- test('AsyncGeneratorFunction не является массивом', () => {
236
- async function* gen() {}
237
- expect(Type.isArray(gen.constructor)).toBeFalsy();
238
- });
239
- });
240
-
241
- describe('Отражение', () => {
242
- test('Reflect не является массивом', () => {
243
- expect(Type.isArray(Reflect)).toBeFalsy();
244
- });
245
- });
246
-
247
- describe('Интернационализация', () => {
248
- test('Intl не является массивом', () => {
249
- expect(Type.isArray(Intl)).toBeFalsy();
250
- });
251
- });
252
-
253
- describe('Обработка ошибок', () => {
254
- const errorTypes = [
255
- Error,
256
- EvalError,
257
- RangeError,
258
- ReferenceError,
259
- SyntaxError,
260
- TypeError,
261
- URIError,
262
- ];
263
-
264
- // Тестируем все ошибки из списка
265
- errorTypes.forEach((errorType) => {
266
- test(`${errorType.name} не является массивом`, () => {
267
- expect(Type.isArray(errorType)).toBeFalsy();
268
- });
269
- });
270
- });
271
-
272
- describe('Веб-API (объекты, зависящие от браузера)', () => {
273
- test('Window не является массивом', () => {
274
- expect(Type.isArray(Window)).toBeFalsy();
275
- });
276
-
277
- test('document не является массивом', () => {
278
- expect(Type.isArray(document)).toBeFalsy();
279
- });
280
-
281
- test('navigator не является массивом', () => {
282
- expect(Type.isArray(navigator)).toBeFalsy();
283
- });
284
-
285
- test('location не является массивом', () => {
286
- expect(Type.isArray(location)).toBeFalsy();
287
- });
288
-
289
- test('Function не является массивом', () => {
290
- expect(Type.isArray(Function)).toBeFalsy();
291
- });
292
-
293
- test('screen не является массивом', () => {
294
- expect(Type.isArray(screen)).toBeFalsy();
295
- });
296
-
297
- test('history не является массивом', () => {
298
- expect(Type.isArray(history)).toBeFalsy();
299
- });
300
-
301
- test('localStorage не является массивом', () => {
302
- expect(Type.isArray(localStorage)).toBeFalsy();
303
- });
304
-
305
- test('Function не является массивом', () => {
306
- expect(Type.isArray(Function)).toBeFalsy();
307
- });
308
-
309
- test('sessionStorage не является массивом', () => {
310
- expect(Type.isArray(sessionStorage)).toBeFalsy();
311
- });
312
-
313
- test('XMLHttpRequest не является массивом', () => {
314
- expect(Type.isArray(XMLHttpRequest)).toBeFalsy();
315
- });
316
-
317
- test('WebSocket не является массивом', () => {
318
- expect(Type.isArray(WebSocket)).toBeFalsy();
319
- expect(Type.isArray(new WebSocket('ws://localhost'))).toBeFalsy();
320
- });
321
-
322
- test('Event не является массивом', () => {
323
- expect(Type.isArray(Event)).toBeFalsy();
324
- expect(Type.isArray(new Event('click'))).toBeFalsy();
325
- });
326
-
327
- test('CustomEvent не является массивом', () => {
328
- expect(Type.isArray(CustomEvent)).toBeFalsy();
329
- expect(Type.isArray(new CustomEvent('test'))).toBeFalsy();
330
- });
331
-
332
- test('AbortController не является массивом', () => {
333
- expect(Type.isArray(AbortController)).toBeFalsy();
334
- expect(Type.isArray(new AbortController())).toBeFalsy();
335
- });
336
-
337
- test('FormData не является массивом', () => {
338
- expect(Type.isArray(FormData)).toBeFalsy();
339
- });
340
-
341
- test('Blob не является массивом', () => {
342
- expect(Type.isArray(Blob)).toBeFalsy();
343
- expect(Type.isArray(new Blob([]))).toBeFalsy();
344
- });
345
-
346
- test('File не является массивом', () => {
347
- expect(Type.isArray(File)).toBeFalsy();
348
- expect(Type.isArray(new File([], 'test.txt'))).toBeFalsy();
349
- });
350
-
351
- test('FileReader не является массивом', () => {
352
- expect(Type.isArray(FileReader)).toBeFalsy();
353
- expect(Type.isArray(new FileReader())).toBeFalsy();
354
- });
355
-
356
- test('Performance не является массивом', () => {
357
- expect(Type.isArray(Performance)).toBeFalsy();
358
- });
359
- });
360
-
361
- describe('Веб-хранилище и сетевое взаимодействие', () => {
362
- test('URL не является массивом', () => {
363
- expect(Type.isArray(URL)).toBeFalsy();
364
- });
365
-
366
- test('URLSearchParams не является массивом', () => {
367
- expect(Type.isArray(URLSearchParams)).toBeFalsy();
368
- });
369
-
370
- test('Location не является массивом', () => {
371
- expect(Type.isArray(Location)).toBeFalsy();
372
- });
373
-
374
- test('Cookies не является массивом', () => {
375
- expect(Type.isArray(document.cookie)).toBeFalsy();
376
- });
377
-
378
- test('IndexedDB не является массивом', () => {
379
- expect(Type.isArray(window.indexedDB)).toBeFalsy();
380
- });
381
- });
382
-
383
- describe('Другие', () => {
384
- test('JSON не является массивом', () => {
385
- expect(Type.isArray(JSON)).toBeFalsy();
386
- });
387
-
388
- test('Math не является массивом', () => {
389
- expect(Type.isArray(Math)).toBeFalsy();
390
- });
391
-
392
- test('console не является массивом', () => {
393
- expect(Type.isArray(console)).toBeFalsy();
394
- });
395
-
396
- test('setTimeout не является массивом', () => {
397
- expect(Type.isArray(setTimeout)).toBeFalsy();
398
- });
399
-
400
- test('clearTimeout не является массивом', () => {
401
- expect(Type.isArray(clearTimeout)).toBeFalsy();
402
- });
403
-
404
- test('setInterval не является массивом', () => {
405
- expect(Type.isArray(setInterval)).toBeFalsy();
406
- });
407
-
408
- test('clearInterval не является массивом', () => {
409
- expect(Type.isArray(clearInterval)).toBeFalsy();
410
- });
411
-
412
- test('setImmediate не является массивом', () => {
413
- expect(Type.isArray(setImmediate)).toBeFalsy();
414
- });
415
-
416
- test('clearImmediate не является массивом', () => {
417
- expect(Type.isArray(clearImmediate)).toBeFalsy();
418
- });
419
-
420
- test('process не является массивом', () => {
421
- expect(Type.isArray(process)).toBeFalsy();
422
- });
423
- });
424
- });
425
- });
426
-
427
- describe('Метод Type.isAssoc', () => {
428
- test('должен возвращать true для ассоциативных массивов', () => {
429
- expect(Type.isAssoc({ foo: 'bar' })).toBe(true);
430
- expect(Type.isAssoc({})).toBe(true);
431
- });
432
-
433
- test('должен возвращать false для обычных массивов', () => {
434
- expect(Type.isAssoc([])).toBe(false);
435
- expect(Type.isAssoc([1, 2, 3])).toBe(false);
436
- });
437
-
438
- test('должен возвращать false для строк', () => {
439
- expect(Type.isAssoc('string')).toBe(false);
440
- });
441
-
442
- test('должен возвращать false для чисел', () => {
443
- expect(Type.isAssoc(42)).toBe(false);
444
- });
445
-
446
- test('должен возвращать false для null и undefined', () => {
447
- expect(Type.isAssoc(null)).toBe(false);
448
- expect(Type.isAssoc(undefined)).toBe(false);
449
- });
450
-
451
- test('должен возвращать false для логических значений', () => {
452
- expect(Type.isAssoc(true)).toBe(false);
453
- expect(Type.isAssoc(false)).toBe(false);
454
- });
455
-
456
- test('должен возвращать false для функций', () => {
457
- function func() {}
458
- expect(Type.isAssoc(func)).toBe(false);
459
- expect(Type.isAssoc(() => {})).toBe(false);
460
- });
461
-
462
- test('должен возвращать false для символов', () => {
463
- expect(Type.isAssoc(Symbol('symbol'))).toBe(false);
464
- });
465
- });
466
-
467
- describe('Метод Type.isBigInt', () => {
468
- test('должен возвращать true для значений типа bigint', () => {
469
- expect(Type.isBigInt(BigInt(123456))).toBe(true);
470
- expect(Type.isBigInt(BigInt(-123456))).toBe(true);
471
- });
472
-
473
- test('должен возвращать false для чисел', () => {
474
- expect(Type.isBigInt(42)).toBe(false);
475
- expect(Type.isBigInt(-42)).toBe(false);
476
- expect(Type.isBigInt(0)).toBe(false);
477
- expect(Type.isBigInt(3.14)).toBe(false);
478
- expect(Type.isBigInt(-0.99)).toBe(false);
479
- });
480
-
481
- test('должен возвращать false для специальных чисел', () => {
482
- expect(Type.isBigInt(NaN)).toBe(false);
483
- expect(Type.isBigInt(Infinity)).toBe(false);
484
- expect(Type.isBigInt(-Infinity)).toBe(false);
485
- });
486
-
487
- test('должен возвращать false для строк', () => {
488
- expect(Type.isBigInt('42')).toBe(false);
489
- expect(Type.isBigInt('3.14')).toBe(false);
490
- expect(Type.isBigInt('')).toBe(false);
491
- });
492
-
493
- test('должен возвращать false для логических значений', () => {
494
- expect(Type.isBigInt(true)).toBe(false);
495
- expect(Type.isBigInt(false)).toBe(false);
496
- });
497
-
498
- test('должен возвращать false для null и undefined', () => {
499
- expect(Type.isBigInt(null)).toBe(false);
500
- expect(Type.isBigInt(undefined)).toBe(false);
501
- });
502
-
503
- test('должен возвращать false для объектов и массивов', () => {
504
- expect(Type.isBigInt({})).toBe(false);
505
- expect(Type.isBigInt([])).toBe(false);
506
- expect(Type.isBigInt({ foo: 42 })).toBe(false);
507
- expect(Type.isBigInt([1, 2, 3])).toBe(false);
508
- });
509
-
510
- test('должен возвращать false для функций', () => {
511
- expect(Type.isBigInt(() => {})).toBe(false);
512
- expect(Type.isBigInt(() => {})).toBe(false);
513
- });
514
- });
515
-
516
- describe('Метод Type.isBool', () => {
517
- test('должен возвращать true для значения true', () => {
518
- expect(Type.isBool(true)).toBe(true);
519
- });
520
-
521
- test('должен возвращать true для значения false', () => {
522
- expect(Type.isBool(false)).toBe(true);
523
- });
524
-
525
- test('должен возвращать false для значения числа', () => {
526
- expect(Type.isBool(0)).toBe(false);
527
- expect(Type.isBool(1)).toBe(false);
528
- });
529
-
530
- test('должен возвращать false для строки', () => {
531
- expect(Type.isBool('true')).toBe(false);
532
- expect(Type.isBool('false')).toBe(false);
533
- });
534
-
535
- test('должен возвращать false для объекта', () => {
536
- expect(Type.isBool({})).toBe(false);
537
- expect(Type.isBool([])).toBe(false);
538
- });
539
-
540
- test('должен возвращать false для null', () => {
541
- expect(Type.isBool(null)).toBe(false);
542
- });
543
-
544
- test('должен возвращать false для undefined', () => {
545
- expect(Type.isBool(undefined)).toBe(false);
546
- });
547
-
548
- test('должен возвращать false для функции', () => {
549
- expect(Type.isBool(() => {})).toBe(false);
550
- });
551
-
552
- test('должен возвращать false для объекта Boolean', () => {
553
- expect(Type.isBool(new Boolean(true))).toBe(false);
554
- });
555
- });
556
-
557
- describe('Метод Type.isBoolean', () => {
558
- test('должен возвращать true для значения true', () => {
559
- expect(Type.isBoolean(true)).toBe(true);
560
- });
561
-
562
- test('должен возвращать true для значения false', () => {
563
- expect(Type.isBoolean(false)).toBe(true);
564
- });
565
-
566
- test('должен возвращать false для значения числа', () => {
567
- expect(Type.isBoolean(0)).toBe(false);
568
- expect(Type.isBoolean(1)).toBe(false);
569
- });
570
-
571
- test('должен возвращать false для строки', () => {
572
- expect(Type.isBoolean('true')).toBe(false);
573
- expect(Type.isBoolean('false')).toBe(false);
574
- });
575
-
576
- test('должен возвращать false для объекта', () => {
577
- expect(Type.isBoolean({})).toBe(false);
578
- expect(Type.isBoolean([])).toBe(false);
579
- });
580
-
581
- test('должен возвращать false для null', () => {
582
- expect(Type.isBoolean(null)).toBe(false);
583
- });
584
-
585
- test('должен возвращать false для undefined', () => {
586
- expect(Type.isBoolean(undefined)).toBe(false);
587
- });
588
-
589
- test('должен возвращать false для функции', () => {
590
- expect(Type.isBoolean(() => {})).toBe(false);
591
- });
592
-
593
- test('должен возвращать false для объекта Boolean', () => {
594
- expect(Type.isBoolean(new Boolean(true))).toBe(false);
595
- });
596
- });
597
-
598
- describe('Метод Type.isClass', () => {
599
- test('должен возвращать true для класса', () => {
600
- class MyClass {}
601
- expect(Type.isClass(MyClass)).toBe(true);
602
- });
603
-
604
- test('должен возвращать false для функции-конструктора', () => {
605
- function MyFunction() {}
606
- expect(Type.isClass(MyFunction)).toBe(false);
607
- });
608
-
609
- test('должен возвращать false для объектов', () => {
610
- expect(Type.isClass({})).toBe(false);
611
- });
612
-
613
- test('должен возвращать false для массивов', () => {
614
- expect(Type.isClass([])).toBe(false);
615
- });
616
-
617
- test('должен возвращать false для null', () => {
618
- expect(Type.isClass(null)).toBe(false);
619
- });
620
-
621
- test('должен возвращать false для чисел', () => {
622
- expect(Type.isClass(42)).toBe(false);
623
- });
624
-
625
- test('должен возвращать false для строк', () => {
626
- expect(Type.isClass('hello')).toBe(false);
627
- });
628
-
629
- test('должен возвращать false для булевых значений', () => {
630
- expect(Type.isClass(true)).toBe(false);
631
- });
632
-
633
- test('должен возвращать false для встроенных объектов, таких как Map', () => {
634
- expect(Type.isClass(new Map())).toBe(false);
635
- });
636
-
637
- test('должен возвращать false для встроенных объектов, таких как Date', () => {
638
- expect(Type.isClass(new Date())).toBe(false);
639
- });
640
-
641
- test('должен возвращать false для объекта, созданного через Object.create(null)', () => {
642
- const noProtoObject = Object.create(null);
643
- noProtoObject.foo = 'bar';
644
- expect(Type.isClass(noProtoObject)).toBe(false);
645
- });
646
-
647
- test('должен возвращать false для стрелочных функций', () => {
648
- expect(Type.isClass(() => {})).toBe(false);
649
- });
650
-
651
- test('должен возвращать false для async функций', () => {
652
- async function asyncFunc() {}
653
- expect(Type.isClass(asyncFunc)).toBe(false);
654
- });
655
-
656
- test('должен возвращать false для генераторов', () => {
657
- function* generatorFunc() {}
658
- expect(Type.isClass(generatorFunc)).toBe(false);
659
- });
660
-
661
- test('должен возвращать false для async генераторов', () => {
662
- async function* asyncGeneratorFunc() {}
663
- expect(Type.isClass(asyncGeneratorFunc)).toBe(false);
664
- });
665
-
666
- test('должен возвращать false для символов', () => {
667
- expect(Type.isClass(Symbol('symbol'))).toBe(false);
668
- });
669
-
670
- test('должен возвращать false для объектов с методом toString', () => {
671
- const obj = {
672
- toString() {
673
- return 'class';
674
- },
675
- };
676
- expect(Type.isClass(obj)).toBe(false);
677
- });
678
- });
679
-
680
- describe('Метод Type.isFloat', () => {
681
- describe('Числа с плавающей точкой', () => {
682
- test('должна возвращать true для положительных дробных чисел', () => {
683
- expect(Type.isFloat(3.14)).toBe(true);
684
- });
685
-
686
- test('должна возвращать true для отрицательных дробных чисел', () => {
687
- expect(Type.isFloat(-0.5)).toBe(true);
688
- });
689
-
690
- test('должна возвращать true для дробных чисел, полученных в результате вычислений', () => {
691
- expect(Type.isFloat(0.1 + 0.2)).toBe(true);
692
- });
693
- });
694
-
695
- describe('Целые числа', () => {
696
- test('должна возвращать false для нуля', () => {
697
- expect(Type.isFloat(0)).toBe(false);
698
- });
699
-
700
- test('должна возвращать false для положительных целых чисел', () => {
701
- expect(Type.isFloat(42)).toBe(false);
702
- });
703
-
704
- test('должна возвращать false для отрицательных целых чисел', () => {
705
- expect(Type.isFloat(-100)).toBe(false);
706
- });
707
- });
708
-
709
- describe('Нечисловые значения', () => {
710
- test('должна возвращать false для строки', () => {
711
- expect(Type.isFloat('3.14')).toBe(false);
712
- });
713
-
714
- test('должна возвращать false для NaN', () => {
715
- expect(Type.isFloat(NaN)).toBe(false);
716
- });
717
-
718
- test('должна возвращать false для null', () => {
719
- expect(Type.isFloat(null)).toBe(false);
720
- });
721
-
722
- test('должна возвращать false для undefined', () => {
723
- expect(Type.isFloat(undefined)).toBe(false);
724
- });
725
-
726
- test('должна возвращать false для булевых значений', () => {
727
- expect(Type.isFloat(true)).toBe(false);
728
- expect(Type.isFloat(false)).toBe(false);
729
- });
730
-
731
- test('должна возвращать false для объектов', () => {
732
- expect(Type.isFloat({})).toBe(false);
733
- });
734
-
735
- test('должна возвращать false для массивов', () => {
736
- expect(Type.isFloat([])).toBe(false);
737
- });
738
- });
739
-
740
- describe('Специальные значения', () => {
741
- test('должна возвращать false для Infinity', () => {
742
- expect(Type.isFloat(Infinity)).toBe(false);
743
- });
744
-
745
- test('должна возвращать false для -Infinity', () => {
746
- expect(Type.isFloat(-Infinity)).toBe(false);
747
- });
748
- });
749
-
750
- describe('Проверка с использованием числовых строк', () => {
751
- test('должна возвращать false для числовых строк', () => {
752
- expect(Type.isFloat('3.14')).toBe(false);
753
- expect(Type.isFloat('-0.5')).toBe(false);
754
- });
755
- });
756
-
757
- describe('Проверка с использованием объектов Number', () => {
758
- test('должна возвращать false для объектов Number', () => {
759
- expect(Type.isFloat(new Number(3.14))).toBe(false);
760
- expect(Type.isFloat(new Number(-0.5))).toBe(false);
761
- });
762
- });
763
- });
764
-
765
- describe('Метод Type.isFunction', () => {
766
- test('должна возвращать true для обычной функции', () => {
767
- function example() {}
768
- expect(Type.isFunction(example)).toBe(true);
769
- });
770
-
771
- test('должна возвращать false для класса', () => {
772
- class MyClass {}
773
- expect(Type.isFunction(MyClass)).toBe(false);
774
- });
775
-
776
- test('должна возвращать false для объектов', () => {
777
- class MyClass {}
778
- const obj = new MyClass();
779
- expect(Type.isFunction(obj)).toBe(false);
780
- });
781
-
782
- test('должна возвращать false для массивов', () => {
783
- expect(Type.isFunction([])).toBe(false);
784
- expect(Type.isFunction({})).toBe(false);
785
- expect(Type.isFunction(Object.create(null))).toBe(false);
786
- });
787
-
788
- test('должна возвращать false для примитивных типов', () => {
789
- expect(Type.isFunction(42)).toBe(false);
790
- expect(Type.isFunction('hello')).toBe(false);
791
- expect(Type.isFunction(null)).toBe(false);
792
- expect(Type.isFunction(undefined)).toBe(false);
793
- });
794
-
795
- test('должна возвращать true для стрелочных функций', () => {
796
- expect(Type.isFunction(() => {})).toBe(true);
797
- });
798
-
799
- test('должна возвращать true для функции без строкового представления', () => {
800
- const func = () => {};
801
- func.toString = undefined;
802
- expect(Type.isFunction(func)).toBe(true);
803
- });
804
-
805
- test('должна возвращать true для async функции', () => {
806
- async function asyncFunc() {}
807
- expect(Type.isFunction(asyncFunc)).toBe(true);
808
- });
809
-
810
- test('должна возвращать true для генератора', () => {
811
- function* generatorFunc() {}
812
- expect(Type.isFunction(generatorFunc)).toBe(true);
813
- });
814
-
815
- test('должна возвращать true для async генератора', () => {
816
- async function* asyncGeneratorFunc() {}
817
- expect(Type.isFunction(asyncGeneratorFunc)).toBe(true);
818
- });
819
-
820
- test('должна возвращать false для null', () => {
821
- expect(Type.isFunction(null)).toBe(false);
822
- });
823
-
824
- test('должна возвращать false для undefined', () => {
825
- expect(Type.isFunction(undefined)).toBe(false);
826
- });
827
-
828
- test('должна возвращать false для NaN', () => {
829
- expect(Type.isFunction(NaN)).toBe(false);
830
- });
831
-
832
- test('должна возвращать false для символов', () => {
833
- expect(Type.isFunction(Symbol('symbol'))).toBe(false);
834
- });
835
-
836
- test('должна возвращать false для объектов с методом toString', () => {
837
- const obj = {
838
- toString() {
839
- return 'function';
840
- },
841
- };
842
- expect(Type.isFunction(obj)).toBe(false);
843
- });
844
- });
845
-
846
- describe('Метод Type.isInfinity', () => {
847
- test('должна возвращать true для Infinity', () => {
848
- expect(Type.isInfinity(Infinity)).toBe(true);
849
- });
850
-
851
- test('должна возвращать true для -Infinity', () => {
852
- expect(Type.isInfinity(-Infinity)).toBe(true);
853
- });
854
-
855
- test('должна возвращать false для чисел', () => {
856
- expect(Type.isInfinity(42)).toBe(false);
857
- expect(Type.isInfinity(3.14)).toBe(false);
858
- expect(Type.isInfinity(NaN)).toBe(false);
859
- });
860
-
861
- test('должна возвращать false для строк', () => {
862
- expect(Type.isInfinity('Infinity')).toBe(false);
863
- expect(Type.isInfinity('42')).toBe(false);
864
- expect(Type.isInfinity('')).toBe(false);
865
- });
866
-
867
- test('должна возвращать false для логических значений', () => {
868
- expect(Type.isInfinity(true)).toBe(false);
869
- expect(Type.isInfinity(false)).toBe(false);
870
- });
871
-
872
- test('должна возвращать false для null и undefined', () => {
873
- expect(Type.isInfinity(null)).toBe(false);
874
- expect(Type.isInfinity(undefined)).toBe(false);
875
- });
876
-
877
- test('должна возвращать false для объектов и массивов', () => {
878
- expect(Type.isInfinity({})).toBe(false);
879
- expect(Type.isInfinity([])).toBe(false);
880
- expect(Type.isInfinity({ foo: 42 })).toBe(false);
881
- expect(Type.isInfinity([1, 2, 3])).toBe(false);
882
- });
883
-
884
- test('должна возвращать false для функций', () => {
885
- expect(Type.isInfinity(() => {})).toBe(false);
886
- expect(Type.isInfinity(() => {})).toBe(false);
887
- });
888
- });
889
-
890
- describe('Метод Type.isInt', () => {
891
- test('Возвращает true для положительных целых чисел', () => {
892
- expect(Type.isInt(1)).toBe(true);
893
- expect(Type.isInt(100)).toBe(true);
894
- expect(Type.isInt(123456)).toBe(true);
895
- });
896
-
897
- test('Возвращает true для отрицательных целых чисел', () => {
898
- expect(Type.isInt(-1)).toBe(true);
899
- expect(Type.isInt(-100)).toBe(true);
900
- expect(Type.isInt(-123456)).toBe(true);
901
- });
902
-
903
- test('Возвращает true для нуля', () => {
904
- expect(Type.isInt(0)).toBe(true);
905
- });
906
-
907
- test('Возвращает false для чисел с плавающей точкой', () => {
908
- expect(Type.isInt(1.1)).toBe(false);
909
- expect(Type.isInt(-0.5)).toBe(false);
910
- expect(Type.isInt(3.14159)).toBe(false);
911
- });
912
-
913
- test('Возвращает false для значений не типа number', () => {
914
- expect(Type.isInt('42')).toBe(false); // строка
915
- expect(Type.isInt(true)).toBe(false); // логическое значение
916
- expect(Type.isInt(null)).toBe(false); // null
917
- expect(Type.isInt(undefined)).toBe(false); // undefined
918
- expect(Type.isInt({})).toBe(false); // объект
919
- expect(Type.isInt([])).toBe(false); // массив
920
- });
921
-
922
- test('Возвращает false для специальных числовых значений', () => {
923
- expect(Type.isInt(Infinity)).toBe(false); // бесконечность
924
- expect(Type.isInt(-Infinity)).toBe(false); // отрицательная бесконечность
925
- expect(Type.isInt(NaN)).toBe(false); // не число
926
- });
927
-
928
- test('Возвращает false для типа bigint', () => {
929
- expect(Type.isInt(BigInt(123456))).toBe(false);
930
- });
931
- });
932
-
933
- describe('Метод Type.isInteger', () => {
934
- test('должна возвращать true для положительных целых чисел', () => {
935
- expect(Type.isInteger(42)).toBe(true);
936
- expect(Type.isInteger(100)).toBe(true);
937
- expect(Type.isInteger(123456)).toBe(true);
938
- });
939
-
940
- test('должна возвращать true для отрицательных целых чисел', () => {
941
- expect(Type.isInteger(-42)).toBe(true);
942
- expect(Type.isInteger(-100)).toBe(true);
943
- expect(Type.isInteger(-123456)).toBe(true);
944
- });
945
-
946
- test('должна возвращать true для нуля', () => {
947
- expect(Type.isInteger(0)).toBe(true);
948
- });
949
-
950
- test('должна возвращать false для чисел с плавающей точкой', () => {
951
- expect(Type.isInteger(3.14)).toBe(false);
952
- expect(Type.isInteger(-0.99)).toBe(false);
953
- expect(Type.isInteger(0.1)).toBe(false);
954
- });
955
-
956
- test('должна возвращать false для специальных чисел', () => {
957
- expect(Type.isInteger(NaN)).toBe(false);
958
- expect(Type.isInteger(Infinity)).toBe(false);
959
- expect(Type.isInteger(-Infinity)).toBe(false);
960
- });
961
-
962
- test('должна возвращать false для строк', () => {
963
- expect(Type.isInteger('42')).toBe(false);
964
- expect(Type.isInteger('3.14')).toBe(false);
965
- expect(Type.isInteger('')).toBe(false);
966
- });
967
-
968
- test('должна возвращать false для логических значений', () => {
969
- expect(Type.isInteger(true)).toBe(false);
970
- expect(Type.isInteger(false)).toBe(false);
971
- });
972
-
973
- test('должна возвращать false для null и undefined', () => {
974
- expect(Type.isInteger(null)).toBe(false);
975
- expect(Type.isInteger(undefined)).toBe(false);
976
- });
977
-
978
- test('должна возвращать false для объектов и массивов', () => {
979
- expect(Type.isInteger({})).toBe(false);
980
- expect(Type.isInteger([])).toBe(false);
981
- expect(Type.isInteger({ foo: 42 })).toBe(false);
982
- expect(Type.isInteger([1, 2, 3])).toBe(false);
983
- });
984
-
985
- test('должна возвращать false для функций', () => {
986
- expect(Type.isInteger(() => {})).toBe(false);
987
- expect(Type.isInteger(() => {})).toBe(false);
988
- });
989
-
990
- test('должна возвращать false для типа bigint', () => {
991
- expect(Type.isInteger(BigInt(123456))).toBe(false);
992
- });
993
- });
994
-
995
- describe('Метод Type.isList', () => {
996
- test('должна возвращать true для массивов', () => {
997
- expect(Type.isList([])).toBe(true);
998
- expect(Type.isList([1, 2, 3])).toBe(true);
999
- });
1000
-
1001
- test('должна возвращать false для ассоциативных массивов', () => {
1002
- expect(Type.isList({})).toBe(false);
1003
- expect(Type.isList({ foo: 'bar' })).toBe(false);
1004
- });
1005
-
1006
- test('должна возвращать false для строк', () => {
1007
- expect(Type.isList('string')).toBe(false);
1008
- });
1009
-
1010
- test('должна возвращать false для чисел', () => {
1011
- expect(Type.isList(42)).toBe(false);
1012
- });
1013
-
1014
- test('должна возвращать false для null и undefined', () => {
1015
- expect(Type.isList(null)).toBe(false);
1016
- expect(Type.isList(undefined)).toBe(false);
1017
- });
1018
-
1019
- test('должна возвращать false для логических значений', () => {
1020
- expect(Type.isList(true)).toBe(false);
1021
- expect(Type.isList(false)).toBe(false);
1022
- });
1023
-
1024
- test('должна возвращать false для функций', () => {
1025
- function func() {}
1026
- expect(Type.isList(func)).toBe(false);
1027
- expect(Type.isList(() => {})).toBe(false);
1028
- });
1029
-
1030
- test('должна возвращать false для символов', () => {
1031
- expect(Type.isList(Symbol('symbol'))).toBe(false);
1032
- });
1033
- });
1034
-
1035
- describe('Метод Type.isNaN', () => {
1036
- test('должна возвращать true для NaN', () => {
1037
- expect(Type.isNaN(NaN)).toBe(true);
1038
- });
1039
-
1040
- test('должна возвращать false для чисел', () => {
1041
- expect(Type.isNaN(42)).toBe(false);
1042
- expect(Type.isNaN(3.14)).toBe(false);
1043
- expect(Type.isNaN(Infinity)).toBe(false);
1044
- expect(Type.isNaN(-Infinity)).toBe(false);
1045
- });
1046
-
1047
- test('должна возвращать false для строк', () => {
1048
- expect(Type.isNaN('42')).toBe(false);
1049
- expect(Type.isNaN('NaN')).toBe(false);
1050
- expect(Type.isNaN('')).toBe(false);
1051
- });
1052
-
1053
- test('должна возвращать false для логических значений', () => {
1054
- expect(Type.isNaN(true)).toBe(false);
1055
- expect(Type.isNaN(false)).toBe(false);
1056
- });
1057
-
1058
- test('должна возвращать false для null и undefined', () => {
1059
- expect(Type.isNaN(null)).toBe(false);
1060
- expect(Type.isNaN(undefined)).toBe(false);
1061
- });
1062
-
1063
- test('должна возвращать false для объектов и массивов', () => {
1064
- expect(Type.isNaN({})).toBe(false);
1065
- expect(Type.isNaN([])).toBe(false);
1066
- expect(Type.isNaN({ foo: 42 })).toBe(false);
1067
- expect(Type.isNaN([1, 2, 3])).toBe(false);
1068
- });
1069
-
1070
- test('должна возвращать false для функций', () => {
1071
- expect(Type.isNaN(() => {})).toBe(false);
1072
- expect(Type.isNaN(() => {})).toBe(false);
1073
- });
1074
- });
1075
-
1076
- describe('Метод Type.isNull', () => {
1077
- test('должен возвращать true для значения null', () => {
1078
- expect(Type.isNull(null)).toBe(true);
1079
- });
1080
-
1081
- test('должен возвращать false для значений не типа null', () => {
1082
- expect(Type.isNull(undefined)).toBe(false);
1083
- expect(Type.isNull(0)).toBe(false);
1084
- expect(Type.isNull('')).toBe(false);
1085
- expect(Type.isNull(false)).toBe(false);
1086
- expect(Type.isNull({})).toBe(false);
1087
- expect(Type.isNull([])).toBe(false);
1088
- });
1089
- });
1090
-
1091
- describe('Метод Type.isNumber', () => {
1092
- test('Возвращает true для числовых значений', () => {
1093
- expect(Type.isNumber(42)).toBe(true);
1094
- expect(Type.isNumber(3.14)).toBe(true);
1095
- expect(Type.isNumber(-0.99)).toBe(true);
1096
- });
1097
-
1098
- test('Возвращает false для специальных числовых значений', () => {
1099
- expect(Type.isNumber(NaN)).toBe(false);
1100
- expect(Type.isNumber(Infinity)).toBe(false);
1101
- expect(Type.isNumber(-Infinity)).toBe(false);
1102
- });
1103
-
1104
- test('Возвращает false для значений не типа number', () => {
1105
- expect(Type.isNumber('42')).toBe(false); // строка
1106
- expect(Type.isNumber(true)).toBe(false); // логическое значение
1107
- expect(Type.isNumber(null)).toBe(false); // null
1108
- expect(Type.isNumber(undefined)).toBe(false); // undefined
1109
- expect(Type.isNumber({})).toBe(false); // объект
1110
- expect(Type.isNumber([])).toBe(false); // массив
1111
- });
1112
- });
1113
-
1114
- describe('Метод Type.isNumeric', () => {
1115
- test('Возвращает true для числовых значений', () => {
1116
- expect(Type.isNumeric(42)).toBe(true);
1117
- expect(Type.isNumeric(3.14)).toBe(true);
1118
- expect(Type.isNumeric(-0.99)).toBe(true);
1119
- });
1120
-
1121
- test('Возвращает true для числовых строк', () => {
1122
- expect(Type.isNumeric('42')).toBe(true);
1123
- expect(Type.isNumeric('3.14')).toBe(true);
1124
- expect(Type.isNumeric('-0.99')).toBe(true);
1125
- });
1126
-
1127
- test('Возвращает false для специальных числовых значений', () => {
1128
- expect(Type.isNumeric(NaN)).toBe(false);
1129
- expect(Type.isNumeric(Infinity)).toBe(false);
1130
- expect(Type.isNumeric(-Infinity)).toBe(false);
1131
- });
1132
-
1133
- test('Возвращает false для значений не типа number или string', () => {
1134
- expect(Type.isNumeric(true)).toBe(false); // логическое значение
1135
- expect(Type.isNumeric(null)).toBe(false); // null
1136
- expect(Type.isNumeric(undefined)).toBe(false); // undefined
1137
- expect(Type.isNumeric({})).toBe(false); // объект
1138
- expect(Type.isNumeric([])).toBe(false); // массив
1139
- });
1140
- });
1141
-
1142
- describe('Метод Type.isObject', () => {
1143
- test('должна возвращать true для объектов, созданных с использованием классов', () => {
1144
- class MyClass {}
1145
- const myClassInstance = new MyClass();
1146
- expect(Type.isObject(myClassInstance)).toBe(true);
1147
- });
1148
-
1149
- test('должна возвращать false для классов', () => {
1150
- class MyClass {}
1151
- expect(Type.isObject(MyClass)).toBe(false);
1152
- });
1153
-
1154
- test('должна возвращать false для ассоциативных массивов', () => {
1155
- const obj = {};
1156
- expect(Type.isObject(obj)).toBe(false);
1157
- });
1158
-
1159
- test('должна возвращать false для массивов', () => {
1160
- const arr = [];
1161
- expect(Type.isObject(arr)).toBe(false);
1162
- });
1163
-
1164
- test('должна возвращать false для объектов, таких как Date', () => {
1165
- const date = new Date();
1166
- expect(Type.isObject(date)).toBe(false);
1167
- });
1168
-
1169
- test('должна возвращать false для null', () => {
1170
- expect(Type.isObject(null)).toBe(false);
1171
- });
1172
-
1173
- test('должна возвращать false для числа', () => {
1174
- expect(Type.isObject(42)).toBe(false);
1175
- });
1176
-
1177
- test('должна возвращать false для строки', () => {
1178
- expect(Type.isObject('string')).toBe(false);
1179
- });
1180
-
1181
- test('должна возвращать false для объектов, таких как Map', () => {
1182
- const map = new Map();
1183
- expect(Type.isObject(map)).toBe(false);
1184
- });
1185
-
1186
- test('должна возвращать false для объектов, созданных с Object.create(null)', () => {
1187
- const objNoProto = Object.create(null);
1188
- expect(Type.isObject(objNoProto)).toBe(false);
1189
- });
1190
- });
1191
-
1192
- describe('Метод Type.isScalar', () => {
1193
- test('Возвращает true для скалярных значений', () => {
1194
- expect(Type.isScalar(true)).toBe(true);
1195
- expect(Type.isScalar(false)).toBe(true);
1196
- expect(Type.isScalar(42)).toBe(true);
1197
- expect(Type.isScalar(3.14)).toBe(true);
1198
- expect(Type.isScalar('hello')).toBe(true);
1199
- expect(Type.isScalar(Symbol('symbol'))).toBe(true);
1200
- });
1201
-
1202
- test('Возвращает false для не скалярных значений', () => {
1203
- expect(Type.isScalar(null)).toBe(false);
1204
- expect(Type.isScalar(undefined)).toBe(false);
1205
- expect(Type.isScalar({})).toBe(false); // объект
1206
- expect(Type.isScalar([])).toBe(false); // массив
1207
- expect(Type.isScalar(() => {})).toBe(false); // функция
1208
- });
1209
- });
1210
-
1211
- describe('Метод Type.isString', () => {
1212
- test('Возвращает true для строковых значений', () => {
1213
- expect(Type.isString('hello')).toBe(true);
1214
- expect(Type.isString('')).toBe(true);
1215
- expect(Type.isString(`template string`)).toBe(true);
1216
- });
1217
-
1218
- test('Возвращает false для значений других типов', () => {
1219
- expect(Type.isString(42)).toBe(false); // число
1220
- expect(Type.isString(true)).toBe(false); // логическое значение
1221
- expect(Type.isString(null)).toBe(false);
1222
- expect(Type.isString(undefined)).toBe(false);
1223
- expect(Type.isString({})).toBe(false); // объект
1224
- expect(Type.isString([])).toBe(false); // массив
1225
- expect(Type.isString(() => {})).toBe(false); // функция
1226
- });
1227
- });
1228
-
1229
- describe('Метод Type.isSymbol', () => {
1230
- test('Возвращает true для символов', () => {
1231
- expect(Type.isSymbol(Symbol('symbol'))).toBe(true);
1232
- expect(Type.isSymbol(Symbol.iterator)).toBe(true);
1233
- });
1234
-
1235
- test('Возвращает false для значений других типов', () => {
1236
- expect(Type.isSymbol('hello')).toBe(false); // строка
1237
- expect(Type.isSymbol(42)).toBe(false); // число
1238
- expect(Type.isSymbol(true)).toBe(false); // логическое значение
1239
- expect(Type.isSymbol(null)).toBe(false);
1240
- expect(Type.isSymbol(undefined)).toBe(false);
1241
- expect(Type.isSymbol({})).toBe(false); // объект
1242
- expect(Type.isSymbol([])).toBe(false); // массив
1243
- expect(Type.isSymbol(() => {})).toBe(false); // функция
1244
- });
1245
- });
1246
-
1247
- describe('Метод Type.isUndefined', () => {
1248
- test('Возвращает true для значения undefined', () => {
1249
- expect(Type.isUndefined(undefined)).toBe(true);
1250
- });
1251
-
1252
- test('Возвращает false для значений других типов', () => {
1253
- expect(Type.isUndefined('hello')).toBe(false); // строка
1254
- expect(Type.isUndefined(42)).toBe(false); // число
1255
- expect(Type.isUndefined(true)).toBe(false); // логическое значение
1256
- expect(Type.isUndefined(null)).toBe(false);
1257
- expect(Type.isUndefined({})).toBe(false); // объект
1258
- expect(Type.isUndefined([])).toBe(false); // массив
1259
- expect(Type.isUndefined(() => {})).toBe(false); // функция
1260
- });
1261
- });
1262
- });
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import {
3
+ Type,
4
+ TYPE_NULL,
5
+ TYPE_NAN,
6
+ TYPE_UNDEFINED,
7
+ TYPE_INFINITY,
8
+ TYPE_BOOLEAN,
9
+ TYPE_INTEGER,
10
+ TYPE_BIGINT,
11
+ TYPE_FLOAT,
12
+ TYPE_STRING,
13
+ TYPE_SYMBOL,
14
+ TYPE_CLASS,
15
+ TYPE_FUNCTION,
16
+ TYPE_ARRAY,
17
+ TYPE_OBJECT,
18
+ } from '../../index.mjs';
19
+
20
+ describe('Класс Type', () => {
21
+ describe('Константы', () => {
22
+ const constants = [
23
+ { name: 'NULL', value: TYPE_NULL },
24
+ { name: 'NAN', value: TYPE_NAN },
25
+ { name: 'UNDEFINED', value: TYPE_UNDEFINED },
26
+ { name: 'INFINITY', value: TYPE_INFINITY },
27
+ { name: 'BOOLEAN', value: TYPE_BOOLEAN },
28
+ { name: 'INTEGER', value: TYPE_INTEGER },
29
+ { name: 'BIGINT', value: TYPE_BIGINT },
30
+ { name: 'FLOAT', value: TYPE_FLOAT },
31
+ { name: 'STRING', value: TYPE_STRING },
32
+ { name: 'SYMBOL', value: TYPE_SYMBOL },
33
+ { name: 'CLASS', value: TYPE_CLASS },
34
+ { name: 'FUNCTION', value: TYPE_FUNCTION },
35
+ { name: 'ARRAY', value: TYPE_ARRAY },
36
+ { name: 'OBJECT', value: TYPE_OBJECT },
37
+ ];
38
+
39
+ constants.forEach(({ name, value }) => {
40
+ describe(`Константа ${name}`, () => {
41
+ test(`должна быть равна "${value}"`, () => {
42
+ expect(Type[name]).toBe(value);
43
+ });
44
+
45
+ test('должна быть неизменяемой (writable: false)', () => {
46
+ const descriptor = Object.getOwnPropertyDescriptor(Type, name);
47
+ expect(descriptor.writable).toBe(false);
48
+ });
49
+
50
+ test('не должна быть конфигурируемой (configurable: false)', () => {
51
+ const descriptor = Object.getOwnPropertyDescriptor(Type, name);
52
+ expect(descriptor.configurable).toBe(false);
53
+ });
54
+
55
+ test('должна быть перечисляемой (enumerable: true)', () => {
56
+ const descriptor = Object.getOwnPropertyDescriptor(Type, name);
57
+ expect(descriptor.enumerable).toBe(true);
58
+ });
59
+ });
60
+ });
61
+ });
62
+
63
+ describe('Метод Type.isEmpty', () => {
64
+ test('Должен возвращать true для пустых значений', () => {
65
+ expect(Type.isEmpty(null)).toBe(true);
66
+ expect(Type.isEmpty(undefined)).toBe(true);
67
+ expect(Type.isEmpty('')).toBe(true);
68
+ expect(Type.isEmpty(0)).toBe(true);
69
+ expect(Type.isEmpty(false)).toBe(true);
70
+ expect(Type.isEmpty([])).toBe(true);
71
+ expect(Type.isEmpty({})).toBe(true);
72
+ });
73
+
74
+ test('Должен возвращать false для непустых значений', () => {
75
+ expect(Type.isEmpty('example')).toBe(false);
76
+ expect(Type.isEmpty(123)).toBe(false);
77
+ expect(Type.isEmpty(true)).toBe(false);
78
+ expect(Type.isEmpty([1, 2, 3])).toBe(false);
79
+ expect(Type.isEmpty({ key: 'value' })).toBe(false);
80
+ });
81
+ });
82
+
83
+ describe('Метод Type.isArray', () => {
84
+ describe('Примитивные значения и базовые типы', () => {
85
+ test('false не является массивом', () => {
86
+ expect(Type.isArray(false)).toBeFalsy();
87
+ });
88
+
89
+ test('true не является массивом', () => {
90
+ expect(Type.isArray(true)).toBeFalsy();
91
+ });
92
+
93
+ test('Число 3 не является массивом', () => {
94
+ expect(Type.isArray(3)).toBeFalsy();
95
+ });
96
+
97
+ test('Число 3.14 не является массивом', () => {
98
+ expect(Type.isArray(3.14)).toBeFalsy();
99
+ });
100
+
101
+ test('Строка "string" не является массивом', () => {
102
+ expect(Type.isArray('string')).toBeFalsy();
103
+ });
104
+
105
+ test('null не является массивом', () => {
106
+ expect(Type.isArray(null)).toBeFalsy();
107
+ });
108
+
109
+ test('undefined не является массивом', () => {
110
+ expect(Type.isArray(undefined)).toBeFalsy();
111
+ });
112
+
113
+ test('NaN не является массивом', () => {
114
+ expect(Type.isArray(NaN)).toBeFalsy();
115
+ });
116
+
117
+ test('Symbol не является массивом', () => {
118
+ expect(Type.isArray(Symbol())).toBeFalsy();
119
+ });
120
+ });
121
+
122
+ describe('Массивы и объекты', () => {
123
+ test('Обычный массив [1, 2] является массивом', () => {
124
+ expect(Type.isArray([1, 2])).toBeTruthy();
125
+ });
126
+
127
+ test('Объект с парами ключ-значение {0: 1, 1: 2} является ассоциативным массивом', () => {
128
+ expect(Type.isArray({ 0: 1, 1: 2 })).toBeTruthy();
129
+ });
130
+
131
+ test('Объект {foo: "bar"} является ассоциативным массивом', () => {
132
+ expect(Type.isArray({ foo: 'bar' })).toBeTruthy();
133
+ });
134
+
135
+ test('Объект, созданный через Object.create(null), является ассоциативным массивом', () => {
136
+ const noProtoObject = Object.create(null);
137
+ noProtoObject.foo = 'bar';
138
+ expect(Type.isArray(noProtoObject)).toBeTruthy();
139
+ });
140
+
141
+ test('Proxy является массивом', () => {
142
+ const handler = {};
143
+ const proxy = new Proxy([1, 2, 3], handler); // Проксируем массив
144
+ expect(Type.isArray(proxy)).toBeTruthy();
145
+ });
146
+ });
147
+
148
+ describe('Не массивы', () => {
149
+ describe('Классы', () => {
150
+ test('Экземпляр класса stdClass не является массивом', () => {
151
+ class stdClass {}
152
+ expect(Type.isArray(new stdClass())).toBeFalsy();
153
+ });
154
+
155
+ test('Класс stdClass сам по себе не является массивом', () => {
156
+ class stdClass {}
157
+ expect(Type.isArray(stdClass)).toBeFalsy();
158
+ });
159
+ });
160
+
161
+ describe('Глобальные объекты', () => {
162
+ // Массив глобальных объектов, которые не являются массивами
163
+ const globalObjects = [Object, Function, Boolean];
164
+
165
+ globalObjects.forEach((globalObj) => {
166
+ test(`${globalObj.name} не является массивом`, () => {
167
+ expect(Type.isArray(globalObj)).toBeFalsy();
168
+ });
169
+ });
170
+
171
+ test('Symbol не является массивом', () => {
172
+ expect(Type.isArray(Symbol)).toBeFalsy();
173
+ });
174
+ });
175
+
176
+ describe('Обработка текста', () => {
177
+ test('String не является массивом', () => {
178
+ expect(Type.isArray(String)).toBeFalsy();
179
+ });
180
+
181
+ test('RegExp не является массивом', () => {
182
+ expect(Type.isArray(RegExp)).toBeFalsy();
183
+ expect(Type.isArray(/abc/)).toBeFalsy();
184
+ });
185
+ });
186
+
187
+ describe('Числа и даты', () => {
188
+ test('Number не является массивом', () => {
189
+ expect(Type.isArray(Number)).toBeFalsy();
190
+ });
191
+
192
+ test('BigInt не является массивом', () => {
193
+ expect(Type.isArray(BigInt)).toBeFalsy();
194
+ expect(Type.isArray(123n)).toBeFalsy();
195
+ });
196
+
197
+ test('Math не является массивом', () => {
198
+ expect(Type.isArray(Math)).toBeFalsy();
199
+ });
200
+
201
+ test('Date не является массивом', () => {
202
+ expect(Type.isArray(Date)).toBeFalsy();
203
+ expect(Type.isArray(new Date())).toBeFalsy();
204
+ });
205
+ });
206
+
207
+ describe('Структурированные данные', () => {
208
+ test('Array не является массивом', () => {
209
+ expect(Type.isArray(Array)).toBeFalsy();
210
+ });
211
+
212
+ test('Экземпляр Map не является массивом', () => {
213
+ expect(Type.isArray(Map)).toBeFalsy();
214
+ expect(Type.isArray(new Map())).toBeFalsy();
215
+ });
216
+
217
+ test('Экземпляр Set не является массивом', () => {
218
+ expect(Type.isArray(Set)).toBeFalsy();
219
+ expect(Type.isArray(new Set())).toBeFalsy();
220
+ });
221
+
222
+ test('WeakMap не является массивом', () => {
223
+ expect(Type.isArray(WeakMap)).toBeFalsy();
224
+ expect(Type.isArray(new WeakMap())).toBeFalsy();
225
+ });
226
+
227
+ test('WeakSet не является массивом', () => {
228
+ expect(Type.isArray(WeakSet)).toBeFalsy();
229
+ expect(Type.isArray(new WeakSet())).toBeFalsy();
230
+ });
231
+
232
+ test('ArrayBuffer не является массивом', () => {
233
+ expect(Type.isArray(ArrayBuffer)).toBeFalsy();
234
+ expect(Type.isArray(new ArrayBuffer(8))).toBeFalsy();
235
+ });
236
+
237
+ test('SharedArrayBuffer не является массивом', () => {
238
+ expect(Type.isArray(SharedArrayBuffer)).toBeFalsy();
239
+ expect(Type.isArray(new SharedArrayBuffer(8))).toBeFalsy();
240
+ });
241
+
242
+ test('DataView не является массивом', () => {
243
+ expect(Type.isArray(DataView)).toBeFalsy();
244
+ expect(Type.isArray(new DataView(new ArrayBuffer(8)))).toBeFalsy();
245
+ });
246
+
247
+ test('Typed Arrays не являются массивами', () => {
248
+ const typedArrays = [
249
+ Int8Array,
250
+ Uint8Array,
251
+ Uint8ClampedArray,
252
+ Int16Array,
253
+ Uint16Array,
254
+ Int32Array,
255
+ Uint32Array,
256
+ Float32Array,
257
+ Float64Array,
258
+ BigInt64Array,
259
+ BigUint64Array,
260
+ ];
261
+ typedArrays.forEach((ArrayType) => {
262
+ expect(Type.isArray(ArrayType)).toBeFalsy();
263
+ expect(Type.isArray(new ArrayType(8))).toBeFalsy();
264
+ });
265
+ });
266
+ });
267
+
268
+ describe('Объекты абстракции управления', () => {
269
+ test('Promise не является массивом', () => {
270
+ expect(Type.isArray(new Promise(() => {}))).toBeFalsy();
271
+ });
272
+
273
+ test('Generator не является массивом', () => {
274
+ function* gen() {}
275
+ expect(Type.isArray(gen())).toBeFalsy();
276
+ });
277
+
278
+ test('GeneratorFunction не является массивом', () => {
279
+ function* gen() {}
280
+ expect(Type.isArray(gen.constructor)).toBeFalsy();
281
+ });
282
+
283
+ test('AsyncFunction не является массивом', () => {
284
+ async function func() {}
285
+ expect(Type.isArray(func)).toBeFalsy();
286
+ });
287
+
288
+ test('AsyncGenerator не является массивом', () => {
289
+ async function* gen() {}
290
+ expect(Type.isArray(gen())).toBeFalsy();
291
+ });
292
+
293
+ test('AsyncGeneratorFunction не является массивом', () => {
294
+ async function* gen() {}
295
+ expect(Type.isArray(gen.constructor)).toBeFalsy();
296
+ });
297
+ });
298
+
299
+ describe('Отражение', () => {
300
+ test('Reflect не является массивом', () => {
301
+ expect(Type.isArray(Reflect)).toBeFalsy();
302
+ });
303
+ });
304
+
305
+ describe('Интернационализация', () => {
306
+ test('Intl не является массивом', () => {
307
+ expect(Type.isArray(Intl)).toBeFalsy();
308
+ });
309
+ });
310
+
311
+ describe('Обработка ошибок', () => {
312
+ const errorTypes = [
313
+ Error,
314
+ EvalError,
315
+ RangeError,
316
+ ReferenceError,
317
+ SyntaxError,
318
+ TypeError,
319
+ URIError,
320
+ ];
321
+
322
+ // Тестируем все ошибки из списка
323
+ errorTypes.forEach((errorType) => {
324
+ test(`${errorType.name} не является массивом`, () => {
325
+ expect(Type.isArray(errorType)).toBeFalsy();
326
+ });
327
+ });
328
+ });
329
+
330
+ describe('Веб-API (объекты, зависящие от браузера)', () => {
331
+ test('Window не является массивом', () => {
332
+ expect(Type.isArray(Window)).toBeFalsy();
333
+ });
334
+
335
+ test('document не является массивом', () => {
336
+ expect(Type.isArray(document)).toBeFalsy();
337
+ });
338
+
339
+ test('navigator не является массивом', () => {
340
+ expect(Type.isArray(navigator)).toBeFalsy();
341
+ });
342
+
343
+ test('location не является массивом', () => {
344
+ expect(Type.isArray(location)).toBeFalsy();
345
+ });
346
+
347
+ test('Function не является массивом', () => {
348
+ expect(Type.isArray(Function)).toBeFalsy();
349
+ });
350
+
351
+ test('screen не является массивом', () => {
352
+ expect(Type.isArray(screen)).toBeFalsy();
353
+ });
354
+
355
+ test('history не является массивом', () => {
356
+ expect(Type.isArray(history)).toBeFalsy();
357
+ });
358
+
359
+ test('localStorage не является массивом', () => {
360
+ expect(Type.isArray(localStorage)).toBeFalsy();
361
+ });
362
+
363
+ test('Function не является массивом', () => {
364
+ expect(Type.isArray(Function)).toBeFalsy();
365
+ });
366
+
367
+ test('sessionStorage не является массивом', () => {
368
+ expect(Type.isArray(sessionStorage)).toBeFalsy();
369
+ });
370
+
371
+ test('XMLHttpRequest не является массивом', () => {
372
+ expect(Type.isArray(XMLHttpRequest)).toBeFalsy();
373
+ });
374
+
375
+ test('WebSocket не является массивом', () => {
376
+ expect(Type.isArray(WebSocket)).toBeFalsy();
377
+ expect(Type.isArray(new WebSocket('ws://localhost'))).toBeFalsy();
378
+ });
379
+
380
+ test('Event не является массивом', () => {
381
+ expect(Type.isArray(Event)).toBeFalsy();
382
+ expect(Type.isArray(new Event('click'))).toBeFalsy();
383
+ });
384
+
385
+ test('CustomEvent не является массивом', () => {
386
+ expect(Type.isArray(CustomEvent)).toBeFalsy();
387
+ expect(Type.isArray(new CustomEvent('test'))).toBeFalsy();
388
+ });
389
+
390
+ test('AbortController не является массивом', () => {
391
+ expect(Type.isArray(AbortController)).toBeFalsy();
392
+ expect(Type.isArray(new AbortController())).toBeFalsy();
393
+ });
394
+
395
+ test('FormData не является массивом', () => {
396
+ expect(Type.isArray(FormData)).toBeFalsy();
397
+ });
398
+
399
+ test('Blob не является массивом', () => {
400
+ expect(Type.isArray(Blob)).toBeFalsy();
401
+ expect(Type.isArray(new Blob([]))).toBeFalsy();
402
+ });
403
+
404
+ test('File не является массивом', () => {
405
+ expect(Type.isArray(File)).toBeFalsy();
406
+ expect(Type.isArray(new File([], 'test.txt'))).toBeFalsy();
407
+ });
408
+
409
+ test('FileReader не является массивом', () => {
410
+ expect(Type.isArray(FileReader)).toBeFalsy();
411
+ expect(Type.isArray(new FileReader())).toBeFalsy();
412
+ });
413
+
414
+ test('Performance не является массивом', () => {
415
+ expect(Type.isArray(Performance)).toBeFalsy();
416
+ });
417
+ });
418
+
419
+ describe('Веб-хранилище и сетевое взаимодействие', () => {
420
+ test('URL не является массивом', () => {
421
+ expect(Type.isArray(URL)).toBeFalsy();
422
+ });
423
+
424
+ test('URLSearchParams не является массивом', () => {
425
+ expect(Type.isArray(URLSearchParams)).toBeFalsy();
426
+ });
427
+
428
+ test('Location не является массивом', () => {
429
+ expect(Type.isArray(Location)).toBeFalsy();
430
+ });
431
+
432
+ test('Cookies не является массивом', () => {
433
+ expect(Type.isArray(document.cookie)).toBeFalsy();
434
+ });
435
+
436
+ test('IndexedDB не является массивом', () => {
437
+ expect(Type.isArray(window.indexedDB)).toBeFalsy();
438
+ });
439
+ });
440
+
441
+ describe('Другие', () => {
442
+ test('JSON не является массивом', () => {
443
+ expect(Type.isArray(JSON)).toBeFalsy();
444
+ });
445
+
446
+ test('Math не является массивом', () => {
447
+ expect(Type.isArray(Math)).toBeFalsy();
448
+ });
449
+
450
+ test('console не является массивом', () => {
451
+ expect(Type.isArray(console)).toBeFalsy();
452
+ });
453
+
454
+ test('setTimeout не является массивом', () => {
455
+ expect(Type.isArray(setTimeout)).toBeFalsy();
456
+ });
457
+
458
+ test('clearTimeout не является массивом', () => {
459
+ expect(Type.isArray(clearTimeout)).toBeFalsy();
460
+ });
461
+
462
+ test('setInterval не является массивом', () => {
463
+ expect(Type.isArray(setInterval)).toBeFalsy();
464
+ });
465
+
466
+ test('clearInterval не является массивом', () => {
467
+ expect(Type.isArray(clearInterval)).toBeFalsy();
468
+ });
469
+
470
+ test('setImmediate не является массивом', () => {
471
+ expect(Type.isArray(setImmediate)).toBeFalsy();
472
+ });
473
+
474
+ test('clearImmediate не является массивом', () => {
475
+ expect(Type.isArray(clearImmediate)).toBeFalsy();
476
+ });
477
+
478
+ test('process не является массивом', () => {
479
+ expect(Type.isArray(process)).toBeFalsy();
480
+ });
481
+ });
482
+ });
483
+ });
484
+
485
+ describe('Метод Type.isAssoc', () => {
486
+ test('должен возвращать true для ассоциативных массивов', () => {
487
+ expect(Type.isAssoc({ foo: 'bar' })).toBe(true);
488
+ expect(Type.isAssoc({})).toBe(true);
489
+ });
490
+
491
+ test('должен возвращать false для обычных массивов', () => {
492
+ expect(Type.isAssoc([])).toBe(false);
493
+ expect(Type.isAssoc([1, 2, 3])).toBe(false);
494
+ });
495
+
496
+ test('должен возвращать false для строк', () => {
497
+ expect(Type.isAssoc('string')).toBe(false);
498
+ });
499
+
500
+ test('должен возвращать false для чисел', () => {
501
+ expect(Type.isAssoc(42)).toBe(false);
502
+ });
503
+
504
+ test('должен возвращать false для null и undefined', () => {
505
+ expect(Type.isAssoc(null)).toBe(false);
506
+ expect(Type.isAssoc(undefined)).toBe(false);
507
+ });
508
+
509
+ test('должен возвращать false для логических значений', () => {
510
+ expect(Type.isAssoc(true)).toBe(false);
511
+ expect(Type.isAssoc(false)).toBe(false);
512
+ });
513
+
514
+ test('должен возвращать false для функций', () => {
515
+ function func() {}
516
+ expect(Type.isAssoc(func)).toBe(false);
517
+ expect(Type.isAssoc(() => {})).toBe(false);
518
+ });
519
+
520
+ test('должен возвращать false для символов', () => {
521
+ expect(Type.isAssoc(Symbol('symbol'))).toBe(false);
522
+ });
523
+ });
524
+
525
+ describe('Метод Type.isBigInt', () => {
526
+ test('должен возвращать true для значений типа bigint', () => {
527
+ expect(Type.isBigInt(BigInt(123456))).toBe(true);
528
+ expect(Type.isBigInt(BigInt(-123456))).toBe(true);
529
+ });
530
+
531
+ test('должен возвращать false для чисел', () => {
532
+ expect(Type.isBigInt(42)).toBe(false);
533
+ expect(Type.isBigInt(-42)).toBe(false);
534
+ expect(Type.isBigInt(0)).toBe(false);
535
+ expect(Type.isBigInt(3.14)).toBe(false);
536
+ expect(Type.isBigInt(-0.99)).toBe(false);
537
+ });
538
+
539
+ test('должен возвращать false для специальных чисел', () => {
540
+ expect(Type.isBigInt(NaN)).toBe(false);
541
+ expect(Type.isBigInt(Infinity)).toBe(false);
542
+ expect(Type.isBigInt(-Infinity)).toBe(false);
543
+ });
544
+
545
+ test('должен возвращать false для строк', () => {
546
+ expect(Type.isBigInt('42')).toBe(false);
547
+ expect(Type.isBigInt('3.14')).toBe(false);
548
+ expect(Type.isBigInt('')).toBe(false);
549
+ });
550
+
551
+ test('должен возвращать false для логических значений', () => {
552
+ expect(Type.isBigInt(true)).toBe(false);
553
+ expect(Type.isBigInt(false)).toBe(false);
554
+ });
555
+
556
+ test('должен возвращать false для null и undefined', () => {
557
+ expect(Type.isBigInt(null)).toBe(false);
558
+ expect(Type.isBigInt(undefined)).toBe(false);
559
+ });
560
+
561
+ test('должен возвращать false для объектов и массивов', () => {
562
+ expect(Type.isBigInt({})).toBe(false);
563
+ expect(Type.isBigInt([])).toBe(false);
564
+ expect(Type.isBigInt({ foo: 42 })).toBe(false);
565
+ expect(Type.isBigInt([1, 2, 3])).toBe(false);
566
+ });
567
+
568
+ test('должен возвращать false для функций', () => {
569
+ expect(Type.isBigInt(() => {})).toBe(false);
570
+ expect(Type.isBigInt(() => {})).toBe(false);
571
+ });
572
+ });
573
+
574
+ describe('Метод Type.isBool', () => {
575
+ test('должен возвращать true для значения true', () => {
576
+ expect(Type.isBool(true)).toBe(true);
577
+ });
578
+
579
+ test('должен возвращать true для значения false', () => {
580
+ expect(Type.isBool(false)).toBe(true);
581
+ });
582
+
583
+ test('должен возвращать false для значения числа', () => {
584
+ expect(Type.isBool(0)).toBe(false);
585
+ expect(Type.isBool(1)).toBe(false);
586
+ });
587
+
588
+ test('должен возвращать false для строки', () => {
589
+ expect(Type.isBool('true')).toBe(false);
590
+ expect(Type.isBool('false')).toBe(false);
591
+ });
592
+
593
+ test('должен возвращать false для объекта', () => {
594
+ expect(Type.isBool({})).toBe(false);
595
+ expect(Type.isBool([])).toBe(false);
596
+ });
597
+
598
+ test('должен возвращать false для null', () => {
599
+ expect(Type.isBool(null)).toBe(false);
600
+ });
601
+
602
+ test('должен возвращать false для undefined', () => {
603
+ expect(Type.isBool(undefined)).toBe(false);
604
+ });
605
+
606
+ test('должен возвращать false для функции', () => {
607
+ expect(Type.isBool(() => {})).toBe(false);
608
+ });
609
+
610
+ test('должен возвращать false для объекта Boolean', () => {
611
+ expect(Type.isBool(new Boolean(true))).toBe(false);
612
+ });
613
+ });
614
+
615
+ describe('Метод Type.isBoolean', () => {
616
+ test('должен возвращать true для значения true', () => {
617
+ expect(Type.isBoolean(true)).toBe(true);
618
+ });
619
+
620
+ test('должен возвращать true для значения false', () => {
621
+ expect(Type.isBoolean(false)).toBe(true);
622
+ });
623
+
624
+ test('должен возвращать false для значения числа', () => {
625
+ expect(Type.isBoolean(0)).toBe(false);
626
+ expect(Type.isBoolean(1)).toBe(false);
627
+ });
628
+
629
+ test('должен возвращать false для строки', () => {
630
+ expect(Type.isBoolean('true')).toBe(false);
631
+ expect(Type.isBoolean('false')).toBe(false);
632
+ });
633
+
634
+ test('должен возвращать false для объекта', () => {
635
+ expect(Type.isBoolean({})).toBe(false);
636
+ expect(Type.isBoolean([])).toBe(false);
637
+ });
638
+
639
+ test('должен возвращать false для null', () => {
640
+ expect(Type.isBoolean(null)).toBe(false);
641
+ });
642
+
643
+ test('должен возвращать false для undefined', () => {
644
+ expect(Type.isBoolean(undefined)).toBe(false);
645
+ });
646
+
647
+ test('должен возвращать false для функции', () => {
648
+ expect(Type.isBoolean(() => {})).toBe(false);
649
+ });
650
+
651
+ test('должен возвращать false для объекта Boolean', () => {
652
+ expect(Type.isBoolean(new Boolean(true))).toBe(false);
653
+ });
654
+ });
655
+
656
+ describe('Метод Type.isClass', () => {
657
+ test('должен возвращать true для класса', () => {
658
+ class MyClass {}
659
+ expect(Type.isClass(MyClass)).toBe(true);
660
+ });
661
+
662
+ test('должен возвращать false для функции-конструктора', () => {
663
+ function MyFunction() {}
664
+ expect(Type.isClass(MyFunction)).toBe(false);
665
+ });
666
+
667
+ test('должен возвращать false для объектов', () => {
668
+ expect(Type.isClass({})).toBe(false);
669
+ });
670
+
671
+ test('должен возвращать false для массивов', () => {
672
+ expect(Type.isClass([])).toBe(false);
673
+ });
674
+
675
+ test('должен возвращать false для null', () => {
676
+ expect(Type.isClass(null)).toBe(false);
677
+ });
678
+
679
+ test('должен возвращать false для чисел', () => {
680
+ expect(Type.isClass(42)).toBe(false);
681
+ });
682
+
683
+ test('должен возвращать false для строк', () => {
684
+ expect(Type.isClass('hello')).toBe(false);
685
+ });
686
+
687
+ test('должен возвращать false для булевых значений', () => {
688
+ expect(Type.isClass(true)).toBe(false);
689
+ });
690
+
691
+ test('должен возвращать false для встроенных объектов, таких как Map', () => {
692
+ expect(Type.isClass(new Map())).toBe(false);
693
+ });
694
+
695
+ test('должен возвращать false для встроенных объектов, таких как Date', () => {
696
+ expect(Type.isClass(new Date())).toBe(false);
697
+ });
698
+
699
+ test('должен возвращать false для объекта, созданного через Object.create(null)', () => {
700
+ const noProtoObject = Object.create(null);
701
+ noProtoObject.foo = 'bar';
702
+ expect(Type.isClass(noProtoObject)).toBe(false);
703
+ });
704
+
705
+ test('должен возвращать false для стрелочных функций', () => {
706
+ expect(Type.isClass(() => {})).toBe(false);
707
+ });
708
+
709
+ test('должен возвращать false для async функций', () => {
710
+ async function asyncFunc() {}
711
+ expect(Type.isClass(asyncFunc)).toBe(false);
712
+ });
713
+
714
+ test('должен возвращать false для генераторов', () => {
715
+ function* generatorFunc() {}
716
+ expect(Type.isClass(generatorFunc)).toBe(false);
717
+ });
718
+
719
+ test('должен возвращать false для async генераторов', () => {
720
+ async function* asyncGeneratorFunc() {}
721
+ expect(Type.isClass(asyncGeneratorFunc)).toBe(false);
722
+ });
723
+
724
+ test('должен возвращать false для символов', () => {
725
+ expect(Type.isClass(Symbol('symbol'))).toBe(false);
726
+ });
727
+
728
+ test('должен возвращать false для объектов с методом toString', () => {
729
+ const obj = {
730
+ toString() {
731
+ return 'class';
732
+ },
733
+ };
734
+ expect(Type.isClass(obj)).toBe(false);
735
+ });
736
+ });
737
+
738
+ describe('Метод Type.isFloat', () => {
739
+ describe('Числа с плавающей точкой', () => {
740
+ test('должна возвращать true для положительных дробных чисел', () => {
741
+ expect(Type.isFloat(3.14)).toBe(true);
742
+ });
743
+
744
+ test('должна возвращать true для отрицательных дробных чисел', () => {
745
+ expect(Type.isFloat(-0.5)).toBe(true);
746
+ });
747
+
748
+ test('должна возвращать true для дробных чисел, полученных в результате вычислений', () => {
749
+ expect(Type.isFloat(0.1 + 0.2)).toBe(true);
750
+ });
751
+ });
752
+
753
+ describe('Целые числа', () => {
754
+ test('должна возвращать false для нуля', () => {
755
+ expect(Type.isFloat(0)).toBe(false);
756
+ });
757
+
758
+ test('должна возвращать false для положительных целых чисел', () => {
759
+ expect(Type.isFloat(42)).toBe(false);
760
+ });
761
+
762
+ test('должна возвращать false для отрицательных целых чисел', () => {
763
+ expect(Type.isFloat(-100)).toBe(false);
764
+ });
765
+ });
766
+
767
+ describe('Нечисловые значения', () => {
768
+ test('должна возвращать false для строки', () => {
769
+ expect(Type.isFloat('3.14')).toBe(false);
770
+ });
771
+
772
+ test('должна возвращать false для NaN', () => {
773
+ expect(Type.isFloat(NaN)).toBe(false);
774
+ });
775
+
776
+ test('должна возвращать false для null', () => {
777
+ expect(Type.isFloat(null)).toBe(false);
778
+ });
779
+
780
+ test('должна возвращать false для undefined', () => {
781
+ expect(Type.isFloat(undefined)).toBe(false);
782
+ });
783
+
784
+ test('должна возвращать false для булевых значений', () => {
785
+ expect(Type.isFloat(true)).toBe(false);
786
+ expect(Type.isFloat(false)).toBe(false);
787
+ });
788
+
789
+ test('должна возвращать false для объектов', () => {
790
+ expect(Type.isFloat({})).toBe(false);
791
+ });
792
+
793
+ test('должна возвращать false для массивов', () => {
794
+ expect(Type.isFloat([])).toBe(false);
795
+ });
796
+ });
797
+
798
+ describe('Специальные значения', () => {
799
+ test('должна возвращать false для Infinity', () => {
800
+ expect(Type.isFloat(Infinity)).toBe(false);
801
+ });
802
+
803
+ test('должна возвращать false для -Infinity', () => {
804
+ expect(Type.isFloat(-Infinity)).toBe(false);
805
+ });
806
+ });
807
+
808
+ describe('Проверка с использованием числовых строк', () => {
809
+ test('должна возвращать false для числовых строк', () => {
810
+ expect(Type.isFloat('3.14')).toBe(false);
811
+ expect(Type.isFloat('-0.5')).toBe(false);
812
+ });
813
+ });
814
+
815
+ describe('Проверка с использованием объектов Number', () => {
816
+ test('должна возвращать false для объектов Number', () => {
817
+ expect(Type.isFloat(new Number(3.14))).toBe(false);
818
+ expect(Type.isFloat(new Number(-0.5))).toBe(false);
819
+ });
820
+ });
821
+ });
822
+
823
+ describe('Метод Type.isFunction', () => {
824
+ test('должна возвращать true для обычной функции', () => {
825
+ function example() {}
826
+ expect(Type.isFunction(example)).toBe(true);
827
+ });
828
+
829
+ test('должна возвращать false для класса', () => {
830
+ class MyClass {}
831
+ expect(Type.isFunction(MyClass)).toBe(false);
832
+ });
833
+
834
+ test('должна возвращать false для объектов', () => {
835
+ class MyClass {}
836
+ const obj = new MyClass();
837
+ expect(Type.isFunction(obj)).toBe(false);
838
+ });
839
+
840
+ test('должна возвращать false для массивов', () => {
841
+ expect(Type.isFunction([])).toBe(false);
842
+ expect(Type.isFunction({})).toBe(false);
843
+ expect(Type.isFunction(Object.create(null))).toBe(false);
844
+ });
845
+
846
+ test('должна возвращать false для примитивных типов', () => {
847
+ expect(Type.isFunction(42)).toBe(false);
848
+ expect(Type.isFunction('hello')).toBe(false);
849
+ expect(Type.isFunction(null)).toBe(false);
850
+ expect(Type.isFunction(undefined)).toBe(false);
851
+ });
852
+
853
+ test('должна возвращать true для стрелочных функций', () => {
854
+ expect(Type.isFunction(() => {})).toBe(true);
855
+ });
856
+
857
+ test('должна возвращать true для функции без строкового представления', () => {
858
+ const func = () => {};
859
+ func.toString = undefined;
860
+ expect(Type.isFunction(func)).toBe(true);
861
+ });
862
+
863
+ test('должна возвращать true для async функции', () => {
864
+ async function asyncFunc() {}
865
+ expect(Type.isFunction(asyncFunc)).toBe(true);
866
+ });
867
+
868
+ test('должна возвращать true для генератора', () => {
869
+ function* generatorFunc() {}
870
+ expect(Type.isFunction(generatorFunc)).toBe(true);
871
+ });
872
+
873
+ test('должна возвращать true для async генератора', () => {
874
+ async function* asyncGeneratorFunc() {}
875
+ expect(Type.isFunction(asyncGeneratorFunc)).toBe(true);
876
+ });
877
+
878
+ test('должна возвращать false для null', () => {
879
+ expect(Type.isFunction(null)).toBe(false);
880
+ });
881
+
882
+ test('должна возвращать false для undefined', () => {
883
+ expect(Type.isFunction(undefined)).toBe(false);
884
+ });
885
+
886
+ test('должна возвращать false для NaN', () => {
887
+ expect(Type.isFunction(NaN)).toBe(false);
888
+ });
889
+
890
+ test('должна возвращать false для символов', () => {
891
+ expect(Type.isFunction(Symbol('symbol'))).toBe(false);
892
+ });
893
+
894
+ test('должна возвращать false для объектов с методом toString', () => {
895
+ const obj = {
896
+ toString() {
897
+ return 'function';
898
+ },
899
+ };
900
+ expect(Type.isFunction(obj)).toBe(false);
901
+ });
902
+ });
903
+
904
+ describe('Метод Type.isInfinity', () => {
905
+ test('должна возвращать true для Infinity', () => {
906
+ expect(Type.isInfinity(Infinity)).toBe(true);
907
+ });
908
+
909
+ test('должна возвращать true для -Infinity', () => {
910
+ expect(Type.isInfinity(-Infinity)).toBe(true);
911
+ });
912
+
913
+ test('должна возвращать false для чисел', () => {
914
+ expect(Type.isInfinity(42)).toBe(false);
915
+ expect(Type.isInfinity(3.14)).toBe(false);
916
+ expect(Type.isInfinity(NaN)).toBe(false);
917
+ });
918
+
919
+ test('должна возвращать false для строк', () => {
920
+ expect(Type.isInfinity('Infinity')).toBe(false);
921
+ expect(Type.isInfinity('42')).toBe(false);
922
+ expect(Type.isInfinity('')).toBe(false);
923
+ });
924
+
925
+ test('должна возвращать false для логических значений', () => {
926
+ expect(Type.isInfinity(true)).toBe(false);
927
+ expect(Type.isInfinity(false)).toBe(false);
928
+ });
929
+
930
+ test('должна возвращать false для null и undefined', () => {
931
+ expect(Type.isInfinity(null)).toBe(false);
932
+ expect(Type.isInfinity(undefined)).toBe(false);
933
+ });
934
+
935
+ test('должна возвращать false для объектов и массивов', () => {
936
+ expect(Type.isInfinity({})).toBe(false);
937
+ expect(Type.isInfinity([])).toBe(false);
938
+ expect(Type.isInfinity({ foo: 42 })).toBe(false);
939
+ expect(Type.isInfinity([1, 2, 3])).toBe(false);
940
+ });
941
+
942
+ test('должна возвращать false для функций', () => {
943
+ expect(Type.isInfinity(() => {})).toBe(false);
944
+ expect(Type.isInfinity(() => {})).toBe(false);
945
+ });
946
+ });
947
+
948
+ describe('Метод Type.isInt', () => {
949
+ test('Возвращает true для положительных целых чисел', () => {
950
+ expect(Type.isInt(1)).toBe(true);
951
+ expect(Type.isInt(100)).toBe(true);
952
+ expect(Type.isInt(123456)).toBe(true);
953
+ });
954
+
955
+ test('Возвращает true для отрицательных целых чисел', () => {
956
+ expect(Type.isInt(-1)).toBe(true);
957
+ expect(Type.isInt(-100)).toBe(true);
958
+ expect(Type.isInt(-123456)).toBe(true);
959
+ });
960
+
961
+ test('Возвращает true для нуля', () => {
962
+ expect(Type.isInt(0)).toBe(true);
963
+ });
964
+
965
+ test('Возвращает false для чисел с плавающей точкой', () => {
966
+ expect(Type.isInt(1.1)).toBe(false);
967
+ expect(Type.isInt(-0.5)).toBe(false);
968
+ expect(Type.isInt(3.14159)).toBe(false);
969
+ });
970
+
971
+ test('Возвращает false для значений не типа number', () => {
972
+ expect(Type.isInt('42')).toBe(false); // строка
973
+ expect(Type.isInt(true)).toBe(false); // логическое значение
974
+ expect(Type.isInt(null)).toBe(false); // null
975
+ expect(Type.isInt(undefined)).toBe(false); // undefined
976
+ expect(Type.isInt({})).toBe(false); // объект
977
+ expect(Type.isInt([])).toBe(false); // массив
978
+ });
979
+
980
+ test('Возвращает false для специальных числовых значений', () => {
981
+ expect(Type.isInt(Infinity)).toBe(false); // бесконечность
982
+ expect(Type.isInt(-Infinity)).toBe(false); // отрицательная бесконечность
983
+ expect(Type.isInt(NaN)).toBe(false); // не число
984
+ });
985
+
986
+ test('Возвращает false для типа bigint', () => {
987
+ expect(Type.isInt(BigInt(123456))).toBe(false);
988
+ });
989
+ });
990
+
991
+ describe('Метод Type.isInteger', () => {
992
+ test('должна возвращать true для положительных целых чисел', () => {
993
+ expect(Type.isInteger(42)).toBe(true);
994
+ expect(Type.isInteger(100)).toBe(true);
995
+ expect(Type.isInteger(123456)).toBe(true);
996
+ });
997
+
998
+ test('должна возвращать true для отрицательных целых чисел', () => {
999
+ expect(Type.isInteger(-42)).toBe(true);
1000
+ expect(Type.isInteger(-100)).toBe(true);
1001
+ expect(Type.isInteger(-123456)).toBe(true);
1002
+ });
1003
+
1004
+ test('должна возвращать true для нуля', () => {
1005
+ expect(Type.isInteger(0)).toBe(true);
1006
+ });
1007
+
1008
+ test('должна возвращать false для чисел с плавающей точкой', () => {
1009
+ expect(Type.isInteger(3.14)).toBe(false);
1010
+ expect(Type.isInteger(-0.99)).toBe(false);
1011
+ expect(Type.isInteger(0.1)).toBe(false);
1012
+ });
1013
+
1014
+ test('должна возвращать false для специальных чисел', () => {
1015
+ expect(Type.isInteger(NaN)).toBe(false);
1016
+ expect(Type.isInteger(Infinity)).toBe(false);
1017
+ expect(Type.isInteger(-Infinity)).toBe(false);
1018
+ });
1019
+
1020
+ test('должна возвращать false для строк', () => {
1021
+ expect(Type.isInteger('42')).toBe(false);
1022
+ expect(Type.isInteger('3.14')).toBe(false);
1023
+ expect(Type.isInteger('')).toBe(false);
1024
+ });
1025
+
1026
+ test('должна возвращать false для логических значений', () => {
1027
+ expect(Type.isInteger(true)).toBe(false);
1028
+ expect(Type.isInteger(false)).toBe(false);
1029
+ });
1030
+
1031
+ test('должна возвращать false для null и undefined', () => {
1032
+ expect(Type.isInteger(null)).toBe(false);
1033
+ expect(Type.isInteger(undefined)).toBe(false);
1034
+ });
1035
+
1036
+ test('должна возвращать false для объектов и массивов', () => {
1037
+ expect(Type.isInteger({})).toBe(false);
1038
+ expect(Type.isInteger([])).toBe(false);
1039
+ expect(Type.isInteger({ foo: 42 })).toBe(false);
1040
+ expect(Type.isInteger([1, 2, 3])).toBe(false);
1041
+ });
1042
+
1043
+ test('должна возвращать false для функций', () => {
1044
+ expect(Type.isInteger(() => {})).toBe(false);
1045
+ expect(Type.isInteger(() => {})).toBe(false);
1046
+ });
1047
+
1048
+ test('должна возвращать false для типа bigint', () => {
1049
+ expect(Type.isInteger(BigInt(123456))).toBe(false);
1050
+ });
1051
+ });
1052
+
1053
+ describe('Метод Type.isList', () => {
1054
+ test('должна возвращать true для массивов', () => {
1055
+ expect(Type.isList([])).toBe(true);
1056
+ expect(Type.isList([1, 2, 3])).toBe(true);
1057
+ });
1058
+
1059
+ test('должна возвращать false для ассоциативных массивов', () => {
1060
+ expect(Type.isList({})).toBe(false);
1061
+ expect(Type.isList({ foo: 'bar' })).toBe(false);
1062
+ });
1063
+
1064
+ test('должна возвращать false для строк', () => {
1065
+ expect(Type.isList('string')).toBe(false);
1066
+ });
1067
+
1068
+ test('должна возвращать false для чисел', () => {
1069
+ expect(Type.isList(42)).toBe(false);
1070
+ });
1071
+
1072
+ test('должна возвращать false для null и undefined', () => {
1073
+ expect(Type.isList(null)).toBe(false);
1074
+ expect(Type.isList(undefined)).toBe(false);
1075
+ });
1076
+
1077
+ test('должна возвращать false для логических значений', () => {
1078
+ expect(Type.isList(true)).toBe(false);
1079
+ expect(Type.isList(false)).toBe(false);
1080
+ });
1081
+
1082
+ test('должна возвращать false для функций', () => {
1083
+ function func() {}
1084
+ expect(Type.isList(func)).toBe(false);
1085
+ expect(Type.isList(() => {})).toBe(false);
1086
+ });
1087
+
1088
+ test('должна возвращать false для символов', () => {
1089
+ expect(Type.isList(Symbol('symbol'))).toBe(false);
1090
+ });
1091
+ });
1092
+
1093
+ describe('Метод Type.isNaN', () => {
1094
+ test('должна возвращать true для NaN', () => {
1095
+ expect(Type.isNaN(NaN)).toBe(true);
1096
+ });
1097
+
1098
+ test('должна возвращать false для чисел', () => {
1099
+ expect(Type.isNaN(42)).toBe(false);
1100
+ expect(Type.isNaN(3.14)).toBe(false);
1101
+ expect(Type.isNaN(Infinity)).toBe(false);
1102
+ expect(Type.isNaN(-Infinity)).toBe(false);
1103
+ });
1104
+
1105
+ test('должна возвращать false для строк', () => {
1106
+ expect(Type.isNaN('42')).toBe(false);
1107
+ expect(Type.isNaN('NaN')).toBe(false);
1108
+ expect(Type.isNaN('')).toBe(false);
1109
+ });
1110
+
1111
+ test('должна возвращать false для логических значений', () => {
1112
+ expect(Type.isNaN(true)).toBe(false);
1113
+ expect(Type.isNaN(false)).toBe(false);
1114
+ });
1115
+
1116
+ test('должна возвращать false для null и undefined', () => {
1117
+ expect(Type.isNaN(null)).toBe(false);
1118
+ expect(Type.isNaN(undefined)).toBe(false);
1119
+ });
1120
+
1121
+ test('должна возвращать false для объектов и массивов', () => {
1122
+ expect(Type.isNaN({})).toBe(false);
1123
+ expect(Type.isNaN([])).toBe(false);
1124
+ expect(Type.isNaN({ foo: 42 })).toBe(false);
1125
+ expect(Type.isNaN([1, 2, 3])).toBe(false);
1126
+ });
1127
+
1128
+ test('должна возвращать false для функций', () => {
1129
+ expect(Type.isNaN(() => {})).toBe(false);
1130
+ expect(Type.isNaN(() => {})).toBe(false);
1131
+ });
1132
+ });
1133
+
1134
+ describe('Метод Type.isNull', () => {
1135
+ test('должен возвращать true для значения null', () => {
1136
+ expect(Type.isNull(null)).toBe(true);
1137
+ });
1138
+
1139
+ test('должен возвращать false для значений не типа null', () => {
1140
+ expect(Type.isNull(undefined)).toBe(false);
1141
+ expect(Type.isNull(0)).toBe(false);
1142
+ expect(Type.isNull('')).toBe(false);
1143
+ expect(Type.isNull(false)).toBe(false);
1144
+ expect(Type.isNull({})).toBe(false);
1145
+ expect(Type.isNull([])).toBe(false);
1146
+ });
1147
+ });
1148
+
1149
+ describe('Метод Type.isNumber', () => {
1150
+ test('Возвращает true для числовых значений', () => {
1151
+ expect(Type.isNumber(42)).toBe(true);
1152
+ expect(Type.isNumber(3.14)).toBe(true);
1153
+ expect(Type.isNumber(-0.99)).toBe(true);
1154
+ });
1155
+
1156
+ test('Возвращает false для специальных числовых значений', () => {
1157
+ expect(Type.isNumber(NaN)).toBe(false);
1158
+ expect(Type.isNumber(Infinity)).toBe(false);
1159
+ expect(Type.isNumber(-Infinity)).toBe(false);
1160
+ });
1161
+
1162
+ test('Возвращает false для значений не типа number', () => {
1163
+ expect(Type.isNumber('42')).toBe(false); // строка
1164
+ expect(Type.isNumber(true)).toBe(false); // логическое значение
1165
+ expect(Type.isNumber(null)).toBe(false); // null
1166
+ expect(Type.isNumber(undefined)).toBe(false); // undefined
1167
+ expect(Type.isNumber({})).toBe(false); // объект
1168
+ expect(Type.isNumber([])).toBe(false); // массив
1169
+ });
1170
+ });
1171
+
1172
+ describe('Метод Type.isNumeric', () => {
1173
+ test('Возвращает true для числовых значений', () => {
1174
+ expect(Type.isNumeric(42)).toBe(true);
1175
+ expect(Type.isNumeric(3.14)).toBe(true);
1176
+ expect(Type.isNumeric(-0.99)).toBe(true);
1177
+ });
1178
+
1179
+ test('Возвращает true для числовых строк', () => {
1180
+ expect(Type.isNumeric('42')).toBe(true);
1181
+ expect(Type.isNumeric('3.14')).toBe(true);
1182
+ expect(Type.isNumeric('-0.99')).toBe(true);
1183
+ });
1184
+
1185
+ test('Возвращает false для специальных числовых значений', () => {
1186
+ expect(Type.isNumeric(NaN)).toBe(false);
1187
+ expect(Type.isNumeric(Infinity)).toBe(false);
1188
+ expect(Type.isNumeric(-Infinity)).toBe(false);
1189
+ });
1190
+
1191
+ test('Возвращает false для значений не типа number или string', () => {
1192
+ expect(Type.isNumeric(true)).toBe(false); // логическое значение
1193
+ expect(Type.isNumeric(null)).toBe(false); // null
1194
+ expect(Type.isNumeric(undefined)).toBe(false); // undefined
1195
+ expect(Type.isNumeric({})).toBe(false); // объект
1196
+ expect(Type.isNumeric([])).toBe(false); // массив
1197
+ });
1198
+ });
1199
+
1200
+ describe('Метод Type.isObject', () => {
1201
+ test('должна возвращать true для объектов, созданных с использованием классов', () => {
1202
+ class MyClass {}
1203
+ const myClassInstance = new MyClass();
1204
+ expect(Type.isObject(myClassInstance)).toBe(true);
1205
+ });
1206
+
1207
+ test('должна возвращать false для классов', () => {
1208
+ class MyClass {}
1209
+ expect(Type.isObject(MyClass)).toBe(false);
1210
+ });
1211
+
1212
+ test('должна возвращать false для ассоциативных массивов', () => {
1213
+ const obj = {};
1214
+ expect(Type.isObject(obj)).toBe(false);
1215
+ });
1216
+
1217
+ test('должна возвращать false для массивов', () => {
1218
+ const arr = [];
1219
+ expect(Type.isObject(arr)).toBe(false);
1220
+ });
1221
+
1222
+ test('должна возвращать false для объектов, таких как Date', () => {
1223
+ const date = new Date();
1224
+ expect(Type.isObject(date)).toBe(false);
1225
+ });
1226
+
1227
+ test('должна возвращать false для null', () => {
1228
+ expect(Type.isObject(null)).toBe(false);
1229
+ });
1230
+
1231
+ test('должна возвращать false для числа', () => {
1232
+ expect(Type.isObject(42)).toBe(false);
1233
+ });
1234
+
1235
+ test('должна возвращать false для строки', () => {
1236
+ expect(Type.isObject('string')).toBe(false);
1237
+ });
1238
+
1239
+ test('должна возвращать false для объектов, таких как Map', () => {
1240
+ const map = new Map();
1241
+ expect(Type.isObject(map)).toBe(false);
1242
+ });
1243
+
1244
+ test('должна возвращать false для объектов, созданных с Object.create(null)', () => {
1245
+ const objNoProto = Object.create(null);
1246
+ expect(Type.isObject(objNoProto)).toBe(false);
1247
+ });
1248
+ });
1249
+
1250
+ describe('Метод Type.isScalar', () => {
1251
+ test('Возвращает true для скалярных значений', () => {
1252
+ expect(Type.isScalar(true)).toBe(true);
1253
+ expect(Type.isScalar(false)).toBe(true);
1254
+ expect(Type.isScalar(42)).toBe(true);
1255
+ expect(Type.isScalar(3.14)).toBe(true);
1256
+ expect(Type.isScalar('hello')).toBe(true);
1257
+ expect(Type.isScalar(Symbol('symbol'))).toBe(true);
1258
+ });
1259
+
1260
+ test('Возвращает false для не скалярных значений', () => {
1261
+ expect(Type.isScalar(null)).toBe(false);
1262
+ expect(Type.isScalar(undefined)).toBe(false);
1263
+ expect(Type.isScalar({})).toBe(false); // объект
1264
+ expect(Type.isScalar([])).toBe(false); // массив
1265
+ expect(Type.isScalar(() => {})).toBe(false); // функция
1266
+ });
1267
+ });
1268
+
1269
+ describe('Метод Type.isString', () => {
1270
+ test('Возвращает true для строковых значений', () => {
1271
+ expect(Type.isString('hello')).toBe(true);
1272
+ expect(Type.isString('')).toBe(true);
1273
+ expect(Type.isString(`template string`)).toBe(true);
1274
+ });
1275
+
1276
+ test('Возвращает false для значений других типов', () => {
1277
+ expect(Type.isString(42)).toBe(false); // число
1278
+ expect(Type.isString(true)).toBe(false); // логическое значение
1279
+ expect(Type.isString(null)).toBe(false);
1280
+ expect(Type.isString(undefined)).toBe(false);
1281
+ expect(Type.isString({})).toBe(false); // объект
1282
+ expect(Type.isString([])).toBe(false); // массив
1283
+ expect(Type.isString(() => {})).toBe(false); // функция
1284
+ });
1285
+ });
1286
+
1287
+ describe('Метод Type.isSymbol', () => {
1288
+ test('Возвращает true для символов', () => {
1289
+ expect(Type.isSymbol(Symbol('symbol'))).toBe(true);
1290
+ expect(Type.isSymbol(Symbol.iterator)).toBe(true);
1291
+ });
1292
+
1293
+ test('Возвращает false для значений других типов', () => {
1294
+ expect(Type.isSymbol('hello')).toBe(false); // строка
1295
+ expect(Type.isSymbol(42)).toBe(false); // число
1296
+ expect(Type.isSymbol(true)).toBe(false); // логическое значение
1297
+ expect(Type.isSymbol(null)).toBe(false);
1298
+ expect(Type.isSymbol(undefined)).toBe(false);
1299
+ expect(Type.isSymbol({})).toBe(false); // объект
1300
+ expect(Type.isSymbol([])).toBe(false); // массив
1301
+ expect(Type.isSymbol(() => {})).toBe(false); // функция
1302
+ });
1303
+ });
1304
+
1305
+ describe('Метод Type.isUndefined', () => {
1306
+ test('Возвращает true для значения undefined', () => {
1307
+ expect(Type.isUndefined(undefined)).toBe(true);
1308
+ });
1309
+
1310
+ test('Возвращает false для значений других типов', () => {
1311
+ expect(Type.isUndefined('hello')).toBe(false); // строка
1312
+ expect(Type.isUndefined(42)).toBe(false); // число
1313
+ expect(Type.isUndefined(true)).toBe(false); // логическое значение
1314
+ expect(Type.isUndefined(null)).toBe(false);
1315
+ expect(Type.isUndefined({})).toBe(false); // объект
1316
+ expect(Type.isUndefined([])).toBe(false); // массив
1317
+ expect(Type.isUndefined(() => {})).toBe(false); // функция
1318
+ });
1319
+ });
1320
+ });