@rogolev/value 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/CHANGELOG.md +142 -1
  2. package/docs/helpers/array/array_chunk.md +80 -0
  3. package/docs/helpers/array/array_chunk_with_keys.md +81 -0
  4. package/docs/helpers/array/array_column.md +110 -0
  5. package/docs/helpers/array/array_combine.md +77 -0
  6. package/docs/helpers/array/array_count_values.md +71 -0
  7. package/docs/helpers/array/array_diff.md +97 -0
  8. package/docs/helpers/array/array_diff_assoc.md +81 -0
  9. package/docs/helpers/array/array_diff_key.md +81 -0
  10. package/docs/helpers/array/array_diff_uassoc.md +101 -0
  11. package/docs/helpers/array/array_diff_ukey.md +101 -0
  12. package/docs/helpers/array/array_fill.md +81 -0
  13. package/docs/helpers/array/array_fill_keys.md +73 -0
  14. package/docs/helpers/array/array_filter.md +79 -0
  15. package/docs/helpers/array/array_flip.md +70 -0
  16. package/docs/helpers/array/array_index_max.md +78 -0
  17. package/docs/helpers/array/array_index_min.md +78 -0
  18. package/docs/helpers/array/array_intersect.md +91 -0
  19. package/docs/helpers/array/array_intersect_assoc.md +91 -0
  20. package/docs/helpers/array/array_intersect_key.md +91 -0
  21. package/docs/helpers/array/array_intersect_uassoc.md +101 -0
  22. package/docs/helpers/array/array_intersect_ukey.md +101 -0
  23. package/docs/helpers/array/array_key_exists.md +73 -0
  24. package/docs/helpers/array/array_key_first.md +62 -0
  25. package/docs/helpers/array/array_key_last.md +62 -0
  26. package/docs/helpers/array/array_key_to_lower_case.md +57 -0
  27. package/docs/helpers/array/array_key_to_upper_case.md +57 -0
  28. package/docs/helpers/array/array_keys.md +62 -0
  29. package/docs/helpers/array/array_map.md +69 -0
  30. package/docs/helpers/array/array_merge.md +67 -0
  31. package/docs/helpers/array/array_merge_recursive.md +86 -0
  32. package/docs/helpers/array/array_pad.md +83 -0
  33. package/docs/helpers/array/array_pop.md +64 -0
  34. package/docs/helpers/array/array_product.md +62 -0
  35. package/docs/helpers/array/array_push.md +57 -0
  36. package/docs/helpers/array/array_rand.md +99 -0
  37. package/docs/helpers/array/array_reduce.md +77 -0
  38. package/docs/helpers/array/array_replace.md +85 -0
  39. package/docs/helpers/array/array_replace_recursive.md +87 -0
  40. package/docs/helpers/array/array_reverse.md +55 -0
  41. package/docs/helpers/array/array_search.md +74 -0
  42. package/docs/helpers/array/array_shift.md +64 -0
  43. package/docs/helpers/array/array_slice.md +65 -0
  44. package/docs/helpers/array/array_splice.md +103 -0
  45. package/docs/helpers/array/array_sum.md +55 -0
  46. package/docs/helpers/array/array_udiff.md +97 -0
  47. package/docs/helpers/array/array_udiff_assoc.md +101 -0
  48. package/docs/helpers/array/array_udiff_uassoc.md +88 -0
  49. package/docs/helpers/array/array_uintersect.md +101 -0
  50. package/docs/helpers/array/array_uintersect_assoc.md +102 -0
  51. package/docs/helpers/array/array_uintersect_uassoc.md +135 -0
  52. package/docs/helpers/array/array_unique.md +54 -0
  53. package/docs/helpers/array/array_unshift.md +58 -0
  54. package/docs/helpers/array/array_values.md +54 -0
  55. package/docs/helpers/array/array_walk.md +87 -0
  56. package/docs/helpers/array/array_walk_recursive.md +93 -0
  57. package/docs/helpers/array/count.md +54 -0
  58. package/docs/helpers/array/in_array.md +65 -0
  59. package/docs/helpers/array/natsort.md +60 -0
  60. package/docs/helpers/array/range.md +76 -0
  61. package/docs/helpers/array/shuffle.md +74 -0
  62. package/docs/helpers/array/sort.md +79 -0
  63. package/docs/helpers/is_char.md +84 -0
  64. package/docs/helpers/string/is_digit_char.md +70 -0
  65. package/docs/helpers/string/is_whitespace_char.md +70 -0
  66. package/docs/helpers/string/natcompare.md +69 -0
  67. package/docs/helpers/string/natcompare_numeric.md +70 -0
  68. package/docs/helpers.md +125 -1
  69. package/index.mjs +66 -1
  70. package/package.json +2 -1
  71. package/prettier.config.mjs +2 -1
  72. package/src/helpers/array/array_chunk.mjs +102 -0
  73. package/src/helpers/array/array_chunk_with_keys.mjs +102 -0
  74. package/src/helpers/array/array_column.mjs +131 -0
  75. package/src/helpers/array/array_combine.mjs +26 -0
  76. package/src/helpers/array/array_count_values.mjs +82 -0
  77. package/src/helpers/array/array_diff.mjs +77 -0
  78. package/src/helpers/array/array_diff_assoc.mjs +56 -0
  79. package/src/helpers/array/array_diff_key.mjs +56 -0
  80. package/src/helpers/array/array_diff_uassoc.mjs +76 -0
  81. package/src/helpers/array/array_diff_ukey.mjs +71 -0
  82. package/src/helpers/array/array_fill.mjs +108 -0
  83. package/src/helpers/array/array_fill_keys.mjs +90 -0
  84. package/src/helpers/array/array_filter.mjs +105 -0
  85. package/src/helpers/array/array_flip.mjs +58 -0
  86. package/src/helpers/array/array_index_max.mjs +82 -0
  87. package/src/helpers/array/array_index_min.mjs +82 -0
  88. package/src/helpers/array/array_intersect.mjs +71 -0
  89. package/src/helpers/array/array_intersect_assoc.mjs +67 -0
  90. package/src/helpers/array/array_intersect_key.mjs +67 -0
  91. package/src/helpers/array/array_intersect_uassoc.mjs +77 -0
  92. package/src/helpers/array/array_intersect_ukey.mjs +72 -0
  93. package/src/helpers/array/array_key_exists.mjs +83 -0
  94. package/src/helpers/array/array_key_first.mjs +73 -0
  95. package/src/helpers/array/array_key_last.mjs +74 -0
  96. package/src/helpers/array/array_key_to_lower_case.mjs +71 -0
  97. package/src/helpers/array/array_key_to_upper_case.mjs +71 -0
  98. package/src/helpers/array/array_keys.mjs +65 -0
  99. package/src/helpers/array/array_map.mjs +84 -0
  100. package/src/helpers/array/array_merge.mjs +95 -0
  101. package/src/helpers/array/array_merge_recursive.mjs +153 -0
  102. package/src/helpers/array/array_pad.mjs +105 -0
  103. package/src/helpers/array/array_pop.mjs +82 -0
  104. package/src/helpers/array/array_product.mjs +67 -0
  105. package/src/helpers/array/array_push.mjs +75 -0
  106. package/src/helpers/array/array_rand.mjs +129 -0
  107. package/src/helpers/array/array_reduce.mjs +90 -0
  108. package/src/helpers/array/array_replace.mjs +25 -0
  109. package/src/helpers/array/array_replace_recursive.mjs +109 -0
  110. package/src/helpers/array/array_reverse.mjs +62 -0
  111. package/src/helpers/array/array_search.mjs +104 -0
  112. package/src/helpers/array/array_shift.mjs +78 -0
  113. package/src/helpers/array/array_slice.mjs +99 -0
  114. package/src/helpers/array/array_splice.mjs +218 -0
  115. package/src/helpers/array/array_sum.mjs +60 -0
  116. package/src/helpers/array/array_udiff.mjs +91 -0
  117. package/src/helpers/array/array_udiff_assoc.mjs +71 -0
  118. package/src/helpers/array/array_udiff_uassoc.mjs +124 -0
  119. package/src/helpers/array/array_uintersect.mjs +72 -0
  120. package/src/helpers/array/array_uintersect_assoc.mjs +77 -0
  121. package/src/helpers/array/array_uintersect_uassoc.mjs +121 -0
  122. package/src/helpers/array/array_unique.mjs +77 -0
  123. package/src/helpers/array/array_unshift.mjs +64 -0
  124. package/src/helpers/array/array_values.mjs +57 -0
  125. package/src/helpers/array/array_walk.mjs +95 -0
  126. package/src/helpers/array/array_walk_recursive.mjs +104 -0
  127. package/src/helpers/array/count.mjs +57 -0
  128. package/src/helpers/array/in_array.mjs +67 -0
  129. package/src/helpers/array/natsort.mjs +62 -0
  130. package/src/helpers/array/range.mjs +121 -0
  131. package/src/helpers/array/shuffle.mjs +73 -0
  132. package/src/helpers/array/sort.mjs +69 -0
  133. package/src/helpers/is_char.mjs +54 -0
  134. package/src/helpers/string/is_digit_char.mjs +60 -0
  135. package/src/helpers/string/is_whitespace_char.mjs +54 -0
  136. package/src/helpers/string/natcompare.mjs +107 -0
  137. package/src/helpers/string/natcompare_numeric.mjs +131 -0
  138. package/tests/helpers/array/array_chunk.test.mjs +49 -0
  139. package/tests/helpers/array/array_chunk_with_keys.test.mjs +45 -0
  140. package/tests/helpers/array/array_column.test.mjs +87 -0
  141. package/tests/helpers/array/array_combine.test.mjs +41 -0
  142. package/tests/helpers/array/array_count_values.test.mjs +40 -0
  143. package/tests/helpers/array/array_diff.test.mjs +78 -0
  144. package/tests/helpers/array/array_diff_assoc.test.mjs +64 -0
  145. package/tests/helpers/array/array_diff_key.test.mjs +64 -0
  146. package/tests/helpers/array/array_diff_uassoc.test.mjs +73 -0
  147. package/tests/helpers/array/array_diff_ukey.test.mjs +77 -0
  148. package/tests/helpers/array/array_fill.test.mjs +47 -0
  149. package/tests/helpers/array/array_fill_keys.test.mjs +35 -0
  150. package/tests/helpers/array/array_filter.test.mjs +38 -0
  151. package/tests/helpers/array/array_flip.test.mjs +33 -0
  152. package/tests/helpers/array/array_index_max.test.mjs +41 -0
  153. package/tests/helpers/array/array_index_min.test.mjs +41 -0
  154. package/tests/helpers/array/array_intersect.test.mjs +65 -0
  155. package/tests/helpers/array/array_intersect_assoc.test.mjs +65 -0
  156. package/tests/helpers/array/array_intersect_key.test.mjs +65 -0
  157. package/tests/helpers/array/array_intersect_uassoc.test.mjs +76 -0
  158. package/tests/helpers/array/array_intersect_ukey.test.mjs +74 -0
  159. package/tests/helpers/array/array_key_exists.test.mjs +36 -0
  160. package/tests/helpers/array/array_key_first.test.mjs +29 -0
  161. package/tests/helpers/array/array_key_last.test.mjs +29 -0
  162. package/tests/helpers/array/array_key_to_lower_case.test.mjs +23 -0
  163. package/tests/helpers/array/array_key_to_upper_case.test.mjs +23 -0
  164. package/tests/helpers/array/array_keys.test.mjs +27 -0
  165. package/tests/helpers/array/array_map.test.mjs +32 -0
  166. package/tests/helpers/array/array_merge.test.mjs +37 -0
  167. package/tests/helpers/array/array_merge_recursive.test.mjs +65 -0
  168. package/tests/helpers/array/array_pad.test.mjs +48 -0
  169. package/tests/helpers/array/array_pop.test.mjs +29 -0
  170. package/tests/helpers/array/array_product.test.mjs +33 -0
  171. package/tests/helpers/array/array_push.test.mjs +31 -0
  172. package/tests/helpers/array/array_rand.test.mjs +59 -0
  173. package/tests/helpers/array/array_reduce.test.mjs +44 -0
  174. package/tests/helpers/array/array_replace.test.mjs +46 -0
  175. package/tests/helpers/array/array_replace_recursive.test.mjs +46 -0
  176. package/tests/helpers/array/array_reverse.test.mjs +31 -0
  177. package/tests/helpers/array/array_search.test.mjs +48 -0
  178. package/tests/helpers/array/array_shift.test.mjs +29 -0
  179. package/tests/helpers/array/array_slice.test.mjs +49 -0
  180. package/tests/helpers/array/array_splice.test.mjs +67 -0
  181. package/tests/helpers/array/array_sum.test.mjs +27 -0
  182. package/tests/helpers/array/array_udiff.test.mjs +95 -0
  183. package/tests/helpers/array/array_udiff_assoc.test.mjs +77 -0
  184. package/tests/helpers/array/array_udiff_uassoc.test.mjs +89 -0
  185. package/tests/helpers/array/array_uintersect.test.mjs +78 -0
  186. package/tests/helpers/array/array_uintersect_assoc.test.mjs +80 -0
  187. package/tests/helpers/array/array_uintersect_uassoc.test.mjs +122 -0
  188. package/tests/helpers/array/array_unique.test.mjs +27 -0
  189. package/tests/helpers/array/array_unshift.test.mjs +31 -0
  190. package/tests/helpers/array/array_values.test.mjs +27 -0
  191. package/tests/helpers/array/array_walk.test.mjs +48 -0
  192. package/tests/helpers/array/array_walk_recursive.test.mjs +53 -0
  193. package/tests/helpers/array/count.test.mjs +27 -0
  194. package/tests/helpers/array/in_array.test.mjs +52 -0
  195. package/tests/helpers/array/natsort.test.mjs +71 -0
  196. package/tests/helpers/array/range.test.mjs +51 -0
  197. package/tests/helpers/array/shuffle.test.mjs +42 -0
  198. package/tests/helpers/array/sort.test.mjs +60 -0
  199. package/tests/helpers/is_char.test.mjs +40 -0
  200. package/tests/helpers/string/is_digit_char.test.mjs +32 -0
  201. package/tests/helpers/string/is_whitespace_char.test.mjs +32 -0
  202. package/tests/helpers/string/natcompare.test.mjs +100 -0
  203. package/tests/helpers/string/natcompare_numeric.test.mjs +110 -0
@@ -0,0 +1,64 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { array_diff_key } from '../../../index.mjs';
3
+
4
+ describe('Функция array_diff_key', () => {
5
+ test('Должна возвращать элементы из первого массива, которые отсутствуют в других массивах', () => {
6
+ const original_array = { a: 1, b: 2, c: 3 };
7
+ const array1 = { a: 1, b: 2 };
8
+ const result = array_diff_key(original_array, array1);
9
+ expect(result).toEqual({ c: 3 });
10
+ });
11
+
12
+ test('Должна возвращать пустой объект, если все элементы первого массива присутствуют в других массивах', () => {
13
+ const original_array = { a: 1, b: 2 };
14
+ const array1 = { a: 1, b: 2 };
15
+ const result = array_diff_key(original_array, array1);
16
+ expect(result).toEqual({});
17
+ });
18
+
19
+ test('Должна корректно обрабатывать пустые массивы', () => {
20
+ const original_array = {};
21
+ const array1 = {};
22
+ const result = array_diff_key(original_array, array1);
23
+ expect(result).toEqual({});
24
+ });
25
+
26
+ test('Должна выбрасывать ошибку, если переданное значение для original_array не является массивом', () => {
27
+ expect(() => array_diff_key('not an array')).toThrow(TypeError);
28
+ expect(() => array_diff_key('not an array')).toThrow(
29
+ 'Параметр "original_array" должен быть массивом.',
30
+ );
31
+ });
32
+
33
+ test('Должна выбрасывать ошибку, если переданное значение для arrays не является массивом', () => {
34
+ expect(() => array_diff_key([], 'not an array')).toThrow(TypeError);
35
+ expect(() => array_diff_key([], 'not an array')).toThrow(
36
+ 'Параметр "arrays" должен быть массивом.',
37
+ );
38
+ });
39
+
40
+ test('Должна корректно обрабатывать массивы с различными типами данных', () => {
41
+ const original_array = { a: 1, b: '2', c: true };
42
+ const array1 = { a: 1, b: 2, d: false };
43
+ const result = array_diff_key(original_array, array1);
44
+ expect(result).toEqual({ c: true });
45
+ });
46
+
47
+ test('Должна корректно обрабатывать несколько массивов для сравнения', () => {
48
+ const original_array = { a: 1, b: 2, c: 3, d: 4 };
49
+ const array1 = { a: 1, b: 2 };
50
+ const array2 = { c: 3 };
51
+ const result = array_diff_key(original_array, array1, array2);
52
+ expect(result).toEqual({ d: 4 });
53
+ });
54
+
55
+ test('Должна корректно обрабатывать массивы с вложенными структурами', () => {
56
+ const original_array = {
57
+ a: { id: 1, data: [1, 2] },
58
+ b: { id: 2, data: [3, 4] },
59
+ };
60
+ const array1 = { a: { id: 1, data: [1, 2] } };
61
+ const result = array_diff_key(original_array, array1);
62
+ expect(result).toEqual({ b: { id: 2, data: [3, 4] } });
63
+ });
64
+ });
@@ -0,0 +1,73 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { array_diff_uassoc } from '../../../index.mjs';
3
+
4
+ describe('Функция array_diff_uassoc', () => {
5
+ const key_compare_func = (a, b) => a === b;
6
+
7
+ test('Должна возвращать элементы из первого массива, которые отсутствуют в других массивах', () => {
8
+ const original_array = { a: 1, b: 2, c: 3 };
9
+ const array1 = { a: 1, b: 2 };
10
+ const result = array_diff_uassoc(key_compare_func, original_array, array1);
11
+ expect(result).toEqual({ c: 3 });
12
+ });
13
+
14
+ test('Должна возвращать пустой объект, если все элементы первого массива присутствуют в других массивах', () => {
15
+ const original_array = { a: 1, b: 2 };
16
+ const array1 = { a: 1, b: 2 };
17
+ const result = array_diff_uassoc(key_compare_func, original_array, array1);
18
+ expect(result).toEqual({});
19
+ });
20
+
21
+ test('Должна корректно обрабатывать пустые массивы', () => {
22
+ const original_array = {};
23
+ const array1 = {};
24
+ const result = array_diff_uassoc(key_compare_func, original_array, array1);
25
+ expect(result).toEqual({});
26
+ });
27
+
28
+ test('Должна выбрасывать ошибку, если переданное значение для key_compare_func не является функцией', () => {
29
+ expect(() => array_diff_uassoc('not a function', {})).toThrow(TypeError);
30
+ expect(() => array_diff_uassoc('not a function', {})).toThrow(
31
+ 'Параметр "key_compare_func" должен быть функцией.',
32
+ );
33
+ });
34
+
35
+ test('Должна выбрасывать ошибку, если переданное значение для original_array не является массивом', () => {
36
+ expect(() => array_diff_uassoc(key_compare_func, 'not an array')).toThrow(TypeError);
37
+ expect(() => array_diff_uassoc(key_compare_func, 'not an array')).toThrow(
38
+ 'Параметр "original_array" должен быть массивом.',
39
+ );
40
+ });
41
+
42
+ test('Должна выбрасывать ошибку, если переданное значение для arrays не является массивом', () => {
43
+ expect(() => array_diff_uassoc(key_compare_func, {}, 'not an array')).toThrow(TypeError);
44
+ expect(() => array_diff_uassoc(key_compare_func, {}, 'not an array')).toThrow(
45
+ 'Параметр "arrays" должен быть массивом.',
46
+ );
47
+ });
48
+
49
+ test('Должна корректно обрабатывать массивы с различными типами данных', () => {
50
+ const original_array = { a: 1, b: '2', c: true };
51
+ const array1 = { a: 1, b: 2, d: false };
52
+ const result = array_diff_uassoc(key_compare_func, original_array, array1);
53
+ expect(result).toEqual({ b: '2', c: true });
54
+ });
55
+
56
+ test('Должна корректно обрабатывать несколько массивов для сравнения', () => {
57
+ const original_array = { a: 1, b: 2, c: 3, d: 4 };
58
+ const array1 = { a: 1, b: 2 };
59
+ const array2 = { c: 3 };
60
+ const result = array_diff_uassoc(key_compare_func, original_array, array1, array2);
61
+ expect(result).toEqual({ d: 4 });
62
+ });
63
+
64
+ test('Должна корректно обрабатывать массивы с вложенными структурами', () => {
65
+ const original_array = {
66
+ a: { id: 1, data: [1, 2] },
67
+ b: { id: 2, data: [3, 4] },
68
+ };
69
+ const array1 = { a: { id: 1, data: [1, 2] } };
70
+ const result = array_diff_uassoc((a, b) => a === b, original_array, array1);
71
+ expect(result).toEqual({ b: { id: 2, data: [3, 4] } });
72
+ });
73
+ });
@@ -0,0 +1,77 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { array_diff_ukey } from '../../../index.mjs';
3
+
4
+ describe('Функция array_diff_ukey', () => {
5
+ const key_compare_func = (a, b) => a === b;
6
+
7
+ test('Должна возвращать элементы из первого массива, которые отсутствуют в других массивах', () => {
8
+ const original_array = { a: 1, b: 2, c: 3 };
9
+ const array1 = { a: 1, b: 2 };
10
+ const result = array_diff_ukey(key_compare_func, original_array, array1);
11
+ expect(result).toEqual({ c: 3 });
12
+ });
13
+
14
+ test('Должна возвращать пустой объект, если все элементы первого массива присутствуют в других массивах', () => {
15
+ const original_array = { a: 1, b: 2 };
16
+ const array1 = { a: 1, b: 2 };
17
+ const result = array_diff_ukey(key_compare_func, original_array, array1);
18
+ expect(result).toEqual({});
19
+ });
20
+
21
+ test('Должна корректно обрабатывать пустые массивы', () => {
22
+ const original_array = {};
23
+ const array1 = {};
24
+ const result = array_diff_ukey(key_compare_func, original_array, array1);
25
+ expect(result).toEqual({});
26
+ });
27
+
28
+ test('Должна выбрасывать ошибку, если переданное значение для key_compare_func не является функцией', () => {
29
+ expect(() => array_diff_ukey('not a function', {})).toThrow(TypeError);
30
+ expect(() => array_diff_ukey('not a function', {})).toThrow(
31
+ 'Параметр "key_compare_func" должен быть функцией.',
32
+ );
33
+ });
34
+
35
+ test('Должна выбрасывать ошибку, если переданное значение для original_array не является массивом', () => {
36
+ expect(() => array_diff_ukey(key_compare_func, 'not an array')).toThrow(TypeError);
37
+ expect(() => array_diff_ukey(key_compare_func, 'not an array')).toThrow(
38
+ 'Параметр "original_array" должен быть массивом.',
39
+ );
40
+ });
41
+
42
+ test('Должна выбрасывать ошибку, если переданное значение для arrays не является массивом', () => {
43
+ expect(() => array_diff_ukey(key_compare_func, {}, 'not an array')).toThrow(TypeError);
44
+ expect(() => array_diff_ukey(key_compare_func, {}, 'not an array')).toThrow(
45
+ 'Параметр "arrays" должен быть массивом.',
46
+ );
47
+ });
48
+
49
+ test('Должна корректно обрабатывать массивы с различными типами данных', () => {
50
+ const original_array = { a: 1, b: '2', c: true };
51
+ const array1 = { a: 1, b: 2, d: false };
52
+ const result = array_diff_ukey(key_compare_func, original_array, array1);
53
+ expect(result).toEqual({ c: true });
54
+ });
55
+
56
+ test('Должна корректно обрабатывать несколько массивов для сравнения', () => {
57
+ const original_array = { a: 1, b: 2, c: 3, d: 4 };
58
+ const array1 = { a: 1, b: 2 };
59
+ const array2 = { c: 3 };
60
+ const result = array_diff_ukey(key_compare_func, original_array, array1, array2);
61
+ expect(result).toEqual({ d: 4 });
62
+ });
63
+
64
+ test('Должна корректно обрабатывать массивы с вложенными структурами', () => {
65
+ const original_array = {
66
+ a: { id: 1, data: [1, 2] },
67
+ b: { id: 2, data: [3, 4] },
68
+ };
69
+ const array1 = { a: { id: 1, data: [1, 2] } };
70
+ const result = array_diff_ukey(
71
+ (a, b) => JSON.stringify(a) === JSON.stringify(b),
72
+ original_array,
73
+ array1,
74
+ );
75
+ expect(result).toEqual({ b: { id: 2, data: [3, 4] } });
76
+ });
77
+ });
@@ -0,0 +1,47 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { array_fill } from '../../../index.mjs';
3
+
4
+ describe('Функция array_fill', () => {
5
+ test('Должна заполнять пустой массив значениями', () => {
6
+ const result = array_fill([], 0, 3, 'a');
7
+ expect(result).toEqual(['a', 'a', 'a']);
8
+ });
9
+
10
+ test('Должна заполнять массив значениями с указанного индекса', () => {
11
+ const result = array_fill([], 2, 3, 'b');
12
+ expect(result).toEqual([undefined, undefined, 'b', 'b', 'b']);
13
+ });
14
+
15
+ test('Должна заполнять существующий массив значениями', () => {
16
+ const existingArray = [1, 2, 3];
17
+ const result = array_fill(existingArray, 1, 2, 'c');
18
+ expect(result).toEqual([1, 'c', 'c']);
19
+ });
20
+
21
+ test('Должна выбрасывать ошибку при отрицательном значении для count', () => {
22
+ expect(() => array_fill([], 0, -1, 'd')).toThrow(TypeError);
23
+ expect(() => array_fill([], 0, -1, 'd')).toThrow(
24
+ 'Параметр "count" должен быть равен или больше нуля.',
25
+ );
26
+ });
27
+
28
+ test('Должна выбрасывать ошибку при значении start_index, не являющемся целым числом', () => {
29
+ expect(() => array_fill([], 0.5, 3, 'e')).toThrow(TypeError);
30
+ expect(() => array_fill([], 0.5, 3, 'e')).toThrow(
31
+ 'Параметр "start_index" должен быть целым числом.',
32
+ );
33
+ });
34
+
35
+ test('Должна заполнять ассоциативный массив значениями', () => {
36
+ const assocArray = { a: 1, b: 2 };
37
+ const result = array_fill(assocArray, 2, 3, 'f');
38
+ expect(result).toEqual({ a: 1, b: 2, 2: 'f', 3: 'f', 4: 'f' });
39
+ });
40
+
41
+ test('Должна выбрасывать ошибку, если arr не является массивом', () => {
42
+ expect(() => array_fill('not an array', 0, 3, 'g')).toThrow(TypeError);
43
+ expect(() => array_fill('not an array', 0, 3, 'g')).toThrow(
44
+ 'Параметр "arr" должен быть массивом.',
45
+ );
46
+ });
47
+ });
@@ -0,0 +1,35 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { array_fill_keys } from '../../../index.mjs';
3
+
4
+ describe('Функция array_fill_keys', () => {
5
+ test('Должна заполнять пустой массив значениями по ключам', () => {
6
+ const result = array_fill_keys([], [0, 1, 2], 'a');
7
+ expect(result).toEqual(['a', 'a', 'a']);
8
+ });
9
+
10
+ test('Должна заполнять существующий массив значениями по ключам', () => {
11
+ const existingArray = [1, 2, 3];
12
+ const result = array_fill_keys(existingArray, [1, 2], 'b');
13
+ expect(result).toEqual([1, 'b', 'b']);
14
+ });
15
+
16
+ test('Должна заполнять ассоциативный массив значениями по ключам', () => {
17
+ const assocArray = { a: 1, b: 2 };
18
+ const result = array_fill_keys(assocArray, ['c', 'd'], 'c');
19
+ expect(result).toEqual({ a: 1, b: 2, c: 'c', d: 'c' });
20
+ });
21
+
22
+ test('Должна выбрасывать ошибку, если arr не является массивом', () => {
23
+ expect(() => array_fill_keys('not an array', [0, 1, 2], 'd')).toThrow(TypeError);
24
+ expect(() => array_fill_keys('not an array', [0, 1, 2], 'd')).toThrow(
25
+ 'Параметр "arr" должен быть массивом.',
26
+ );
27
+ });
28
+
29
+ test('Должна выбрасывать ошибку, если keys не является списком', () => {
30
+ expect(() => array_fill_keys([], 'not a list', 'e')).toThrow(TypeError);
31
+ expect(() => array_fill_keys([], 'not a list', 'e')).toThrow(
32
+ 'Параметр "keys" должен быть списком.',
33
+ );
34
+ });
35
+ });
@@ -0,0 +1,38 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { array_filter } from '../../../index.mjs';
3
+
4
+ describe('Функция array_filter', () => {
5
+ test('Должна фильтровать массив с использованием функции обратного вызова', () => {
6
+ const array = [1, 2, 3, 4, 5];
7
+ const callback = (value) => value > 2;
8
+ const result = array_filter(array, callback);
9
+ expect(result).toEqual([3, 4, 5]);
10
+ });
11
+
12
+ test('Должна фильтровать массив без функции обратного вызова (удаление пустых значений)', () => {
13
+ const array = [0, 1, false, 2, '', 3];
14
+ const result = array_filter(array);
15
+ expect(result).toEqual([1, 2, 3]);
16
+ });
17
+
18
+ test('Должна фильтровать ассоциативный массив с использованием функции обратного вызова', () => {
19
+ const array = { a: 1, b: 2, c: 3, d: 4 };
20
+ const callback = (value) => value > 2;
21
+ const result = array_filter(array, callback);
22
+ expect(result).toEqual({ c: 3, d: 4 });
23
+ });
24
+
25
+ test('Должна выбрасывать ошибку, если value не является массивом', () => {
26
+ expect(() => array_filter('not an array')).toThrow(TypeError);
27
+ expect(() => array_filter('not an array')).toThrow(
28
+ 'Параметр "value" должен быть массивом.',
29
+ );
30
+ });
31
+
32
+ test('Должна выбрасывать ошибку, если callback не является функцией', () => {
33
+ expect(() => array_filter([1, 2, 3], 'not a function')).toThrow(TypeError);
34
+ expect(() => array_filter([1, 2, 3], 'not a function')).toThrow(
35
+ 'Параметр "callback" должен быть функцией.',
36
+ );
37
+ });
38
+ });
@@ -0,0 +1,33 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { array_flip } from '../../../index.mjs';
3
+
4
+ describe('Функция array_flip', () => {
5
+ test('Должна менять местами ключи и значения в обычном массиве', () => {
6
+ const array = { a: 1, b: 2, c: 3 };
7
+ const result = array_flip(array);
8
+ expect(result).toEqual({ 1: 'a', 2: 'b', 3: 'c' });
9
+ });
10
+
11
+ test('Должна обрабатывать пустой массив', () => {
12
+ const array = {};
13
+ const result = array_flip(array);
14
+ expect(result).toEqual({});
15
+ });
16
+
17
+ test('Должна выбрасывать ошибку, если value не является массивом', () => {
18
+ expect(() => array_flip('not an array')).toThrow(TypeError);
19
+ expect(() => array_flip('not an array')).toThrow('Параметр "value" должен быть массивом.');
20
+ });
21
+
22
+ test('Должна корректно обрабатывать массив с повторяющимися значениями', () => {
23
+ const array = { a: 1, b: 1, c: 2 };
24
+ const result = array_flip(array);
25
+ expect(result).toEqual({ 1: 'b', 2: 'c' });
26
+ });
27
+
28
+ test('Должна корректно обрабатывать массив с различными типами данных', () => {
29
+ const array = { a: 1, b: '2', c: true };
30
+ const result = array_flip(array);
31
+ expect(result).toEqual({ 1: 'a', 2: 'b', true: 'c' });
32
+ });
33
+ });
@@ -0,0 +1,41 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { array_index_max } from '../../../index.mjs';
3
+
4
+ describe('Функция array_index_max', () => {
5
+ test('Должна возвращать максимальный индекс обычного массива', () => {
6
+ const array = [1, 2, 3];
7
+ const result = array_index_max(array);
8
+ expect(result).toBe(2);
9
+ });
10
+
11
+ test('Должна возвращать null для ассоциативного массива без числовых ключей', () => {
12
+ const array = { a: 1, b: 2, c: 3 };
13
+ const result = array_index_max(array);
14
+ expect(result).toBeNull();
15
+ });
16
+
17
+ test('Должна возвращать максимальный числовой ключ для ассоциативного массива с числовыми ключами', () => {
18
+ const array = { a: 1, 2: 'b', 3: 'c' };
19
+ const result = array_index_max(array);
20
+ expect(result).toBe(3);
21
+ });
22
+
23
+ test('Должна возвращать null для пустого массива', () => {
24
+ const array = [];
25
+ const result = array_index_max(array);
26
+ expect(result).toBeNull();
27
+ });
28
+
29
+ test('Должна выбрасывать ошибку, если value не является массивом', () => {
30
+ expect(() => array_index_max('not an array')).toThrow(TypeError);
31
+ expect(() => array_index_max('not an array')).toThrow(
32
+ 'Параметр "value" должен быть массивом.',
33
+ );
34
+ });
35
+
36
+ test('Должна корректно обрабатывать массив с различными типами данных', () => {
37
+ const array = { a: 1, b: '2', 3: true };
38
+ const result = array_index_max(array);
39
+ expect(result).toBe(3);
40
+ });
41
+ });
@@ -0,0 +1,41 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { array_index_min } from '../../../index.mjs';
3
+
4
+ describe('Функция array_index_min', () => {
5
+ test('Должна возвращать минимальный индекс обычного массива', () => {
6
+ const array = [1, 2, 3];
7
+ const result = array_index_min(array);
8
+ expect(result).toBe(0);
9
+ });
10
+
11
+ test('Должна возвращать null для ассоциативного массива без числовых ключей', () => {
12
+ const array = { a: 1, b: 2, c: 3 };
13
+ const result = array_index_min(array);
14
+ expect(result).toBeNull();
15
+ });
16
+
17
+ test('Должна возвращать минимальный числовой ключ для ассоциативного массива с числовыми ключами', () => {
18
+ const array = { 1: 'a', 2: 'b', 3: 'c' };
19
+ const result = array_index_min(array);
20
+ expect(result).toBe(1);
21
+ });
22
+
23
+ test('Должна возвращать null для пустого массива', () => {
24
+ const array = [];
25
+ const result = array_index_min(array);
26
+ expect(result).toBeNull();
27
+ });
28
+
29
+ test('Должна выбрасывать ошибку, если value не является массивом', () => {
30
+ expect(() => array_index_min('not an array')).toThrow(TypeError);
31
+ expect(() => array_index_min('not an array')).toThrow(
32
+ 'Параметр "value" должен быть массивом.',
33
+ );
34
+ });
35
+
36
+ test('Должна корректно обрабатывать массив с различными типами данных', () => {
37
+ const array = { a: 1, b: '2', 3: true };
38
+ const result = array_index_min(array);
39
+ expect(result).toBe(3);
40
+ });
41
+ });
@@ -0,0 +1,65 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { array_intersect } from '../../../index.mjs';
3
+
4
+ describe('Функция array_intersect', () => {
5
+ test('Должна возвращать элементы из первого массива, которые присутствуют в других массивах', () => {
6
+ const original_array = { a: 1, b: 2, c: 3 };
7
+ const array1 = { a: 1, b: 2 };
8
+ const array2 = { b: 2, c: 3 };
9
+ const result = array_intersect(original_array, array1, array2);
10
+ expect(result).toEqual({ a: 1, b: 2, c: 3 });
11
+ });
12
+
13
+ test('Должна возвращать пустой объект, если все элементы первого массива отсутствуют в других массивах', () => {
14
+ const original_array = { a: 1, b: 2 };
15
+ const array1 = { c: 3, d: 4 };
16
+ const result = array_intersect(original_array, array1);
17
+ expect(result).toEqual({});
18
+ });
19
+
20
+ test('Должна корректно обрабатывать пустые массивы', () => {
21
+ const original_array = {};
22
+ const array1 = {};
23
+ const result = array_intersect(original_array, array1);
24
+ expect(result).toEqual({});
25
+ });
26
+
27
+ test('Должна выбрасывать ошибку, если переданное значение для original_array не является массивом', () => {
28
+ expect(() => array_intersect('not an array')).toThrow(TypeError);
29
+ expect(() => array_intersect('not an array')).toThrow(
30
+ 'Параметр "original_array" должен быть массивом.',
31
+ );
32
+ });
33
+
34
+ test('Должна выбрасывать ошибку, если переданное значение для arrays не является массивом', () => {
35
+ expect(() => array_intersect({}, 'not an array')).toThrow(TypeError);
36
+ expect(() => array_intersect({}, 'not an array')).toThrow(
37
+ 'Параметр "arrays" должен быть массивом.',
38
+ );
39
+ });
40
+
41
+ test('Должна корректно обрабатывать массивы с различными типами данных', () => {
42
+ const original_array = { a: 1, b: '2', c: true };
43
+ const array1 = { a: 1, b: 2, d: false };
44
+ const result = array_intersect(original_array, array1);
45
+ expect(result).toEqual({ a: 1 });
46
+ });
47
+
48
+ test('Должна корректно обрабатывать несколько массивов для сравнения', () => {
49
+ const original_array = { a: 1, b: 2, c: 3, d: 4 };
50
+ const array1 = { a: 1, b: 2 };
51
+ const array2 = { c: 3 };
52
+ const result = array_intersect(original_array, array1, array2);
53
+ expect(result).toEqual({ a: 1, b: 2, c: 3 });
54
+ });
55
+
56
+ test('Должна корректно обрабатывать массивы с вложенными структурами', () => {
57
+ const original_array = {
58
+ a: { id: 1, data: [1, 2] },
59
+ b: { id: 2, data: [3, 4] },
60
+ };
61
+ const array1 = { a: { id: 1, data: [1, 2] } };
62
+ const result = array_intersect(original_array, array1);
63
+ expect(result).toEqual({ a: { id: 1, data: [1, 2] } });
64
+ });
65
+ });
@@ -0,0 +1,65 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { array_intersect_assoc } from '../../../index.mjs';
3
+
4
+ describe('Функция array_intersect_assoc', () => {
5
+ test('Должна возвращать элементы из первого массива, которые присутствуют в других массивах', () => {
6
+ const original_array = { a: 1, b: 2, c: 3 };
7
+ const array1 = { a: 1, b: 2 };
8
+ const array2 = { b: 2, c: 3 };
9
+ const result = array_intersect_assoc(original_array, array1, array2);
10
+ expect(result).toEqual({ a: 1, b: 2, c: 3 });
11
+ });
12
+
13
+ test('Должна возвращать пустой объект, если все элементы первого массива отсутствуют в других массивах', () => {
14
+ const original_array = { a: 1, b: 2 };
15
+ const array1 = { c: 3, d: 4 };
16
+ const result = array_intersect_assoc(original_array, array1);
17
+ expect(result).toEqual({});
18
+ });
19
+
20
+ test('Должна корректно обрабатывать пустые массивы', () => {
21
+ const original_array = {};
22
+ const array1 = {};
23
+ const result = array_intersect_assoc(original_array, array1);
24
+ expect(result).toEqual({});
25
+ });
26
+
27
+ test('Должна выбрасывать ошибку, если переданное значение для original_array не является массивом', () => {
28
+ expect(() => array_intersect_assoc('not an array')).toThrow(TypeError);
29
+ expect(() => array_intersect_assoc('not an array')).toThrow(
30
+ 'Параметр "original_array" должен быть массивом.',
31
+ );
32
+ });
33
+
34
+ test('Должна выбрасывать ошибку, если переданное значение для arrays не является массивом', () => {
35
+ expect(() => array_intersect_assoc({}, 'not an array')).toThrow(TypeError);
36
+ expect(() => array_intersect_assoc({}, 'not an array')).toThrow(
37
+ 'Параметр "arrays" должен быть массивом.',
38
+ );
39
+ });
40
+
41
+ test('Должна корректно обрабатывать массивы с различными типами данных', () => {
42
+ const original_array = { a: 1, b: '2', c: true };
43
+ const array1 = { a: 1, b: 2, d: false };
44
+ const result = array_intersect_assoc(original_array, array1);
45
+ expect(result).toEqual({ a: 1 });
46
+ });
47
+
48
+ test('Должна корректно обрабатывать несколько массивов для сравнения', () => {
49
+ const original_array = { a: 1, b: 2, c: 3, d: 4 };
50
+ const array1 = { a: 1, b: 2 };
51
+ const array2 = { c: 3 };
52
+ const result = array_intersect_assoc(original_array, array1, array2);
53
+ expect(result).toEqual({ a: 1, b: 2, c: 3 });
54
+ });
55
+
56
+ test('Должна корректно обрабатывать массивы с вложенными структурами', () => {
57
+ const original_array = {
58
+ a: { id: 1, data: [1, 2] },
59
+ b: { id: 2, data: [3, 4] },
60
+ };
61
+ const array1 = { a: { id: 1, data: [1, 2] } };
62
+ const result = array_intersect_assoc(original_array, array1);
63
+ expect(result).toEqual({ a: { id: 1, data: [1, 2] } });
64
+ });
65
+ });
@@ -0,0 +1,65 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { array_intersect_key } from '../../../index.mjs';
3
+
4
+ describe('Функция array_intersect_key', () => {
5
+ test('Должна возвращать элементы из первого массива, которые присутствуют в других массивах', () => {
6
+ const original_array = { a: 1, b: 2, c: 3 };
7
+ const array1 = { a: 1, b: 2 };
8
+ const array2 = { b: 2, c: 3 };
9
+ const result = array_intersect_key(original_array, array1, array2);
10
+ expect(result).toEqual({ a: 1, b: 2, c: 3 });
11
+ });
12
+
13
+ test('Должна возвращать пустой объект, если все элементы первого массива отсутствуют в других массивах', () => {
14
+ const original_array = { a: 1, b: 2 };
15
+ const array1 = { c: 3, d: 4 };
16
+ const result = array_intersect_key(original_array, array1);
17
+ expect(result).toEqual({});
18
+ });
19
+
20
+ test('Должна корректно обрабатывать пустые массивы', () => {
21
+ const original_array = {};
22
+ const array1 = {};
23
+ const result = array_intersect_key(original_array, array1);
24
+ expect(result).toEqual({});
25
+ });
26
+
27
+ test('Должна выбрасывать ошибку, если переданное значение для original_array не является массивом', () => {
28
+ expect(() => array_intersect_key('not an array')).toThrow(TypeError);
29
+ expect(() => array_intersect_key('not an array')).toThrow(
30
+ 'Параметр "original_array" должен быть массивом.',
31
+ );
32
+ });
33
+
34
+ test('Должна выбрасывать ошибку, если переданное значение для arrays не является массивом', () => {
35
+ expect(() => array_intersect_key({}, 'not an array')).toThrow(TypeError);
36
+ expect(() => array_intersect_key({}, 'not an array')).toThrow(
37
+ 'Параметр "arrays" должен быть массивом.',
38
+ );
39
+ });
40
+
41
+ test('Должна корректно обрабатывать массивы с различными типами данных', () => {
42
+ const original_array = { a: 1, b: '2', c: true };
43
+ const array1 = { a: 1, b: 2, d: false };
44
+ const result = array_intersect_key(original_array, array1);
45
+ expect(result).toEqual({ a: 1, b: '2' });
46
+ });
47
+
48
+ test('Должна корректно обрабатывать несколько массивов для сравнения', () => {
49
+ const original_array = { a: 1, b: 2, c: 3, d: 4 };
50
+ const array1 = { a: 1, b: 2 };
51
+ const array2 = { c: 3 };
52
+ const result = array_intersect_key(original_array, array1, array2);
53
+ expect(result).toEqual({ a: 1, b: 2, c: 3 });
54
+ });
55
+
56
+ test('Должна корректно обрабатывать массивы с вложенными структурами', () => {
57
+ const original_array = {
58
+ a: { id: 1, data: [1, 2] },
59
+ b: { id: 2, data: [3, 4] },
60
+ };
61
+ const array1 = { a: { id: 1, data: [1, 2] } };
62
+ const result = array_intersect_key(original_array, array1);
63
+ expect(result).toEqual({ a: { id: 1, data: [1, 2] } });
64
+ });
65
+ });