@rogolev/value 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +319 -1
- package/docs/classes/Expect/toBe.md +61 -0
- package/docs/classes/Expect/toBeArray.md +52 -0
- package/docs/classes/Expect/toBeAssoc.md +53 -0
- package/docs/classes/Expect/toBeBigInt.md +52 -0
- package/docs/classes/Expect/toBeBool.md +53 -0
- package/docs/classes/Expect/toBeBoolean.md +53 -0
- package/docs/classes/Expect/toBeChar.md +53 -0
- package/docs/classes/Expect/toBeClass.md +53 -0
- package/docs/classes/Expect/toBeFloat.md +53 -0
- package/docs/classes/Expect/toBeFunction.md +52 -0
- package/docs/classes/Expect/toBeInfinity.md +53 -0
- package/docs/classes/Expect/toBeInt.md +53 -0
- package/docs/classes/Expect/toBeInteger.md +53 -0
- package/docs/classes/Expect/toBeList.md +53 -0
- package/docs/classes/Expect/toBeNaN.md +53 -0
- package/docs/classes/Expect/toBeNull.md +51 -0
- package/docs/classes/Expect/toBeNumber.md +52 -0
- package/docs/classes/Expect/toBeNumeric.md +53 -0
- package/docs/classes/Expect/toBeObject.md +52 -0
- package/docs/classes/Expect/toBeScalar.md +53 -0
- package/docs/classes/Expect/toBeString.md +52 -0
- package/docs/classes/Expect/toBeSymbol.md +53 -0
- package/docs/classes/Expect/toBeUndefined.md +54 -0
- package/docs/classes/Expect/toEqual.md +69 -0
- package/docs/classes/Expect/toStrictEqual.md +70 -0
- package/docs/classes/Expect.md +87 -0
- package/docs/classes/Type/expectArray.md +63 -0
- package/docs/classes/Type/expectAssoc.md +65 -0
- package/docs/classes/Type/expectBigInt.md +63 -0
- package/docs/classes/Type/expectBool.md +65 -0
- package/docs/classes/Type/expectBoolean.md +65 -0
- package/docs/classes/Type/expectChar.md +63 -0
- package/docs/classes/Type/expectClass.md +63 -0
- package/docs/classes/Type/expectFloat.md +68 -0
- package/docs/classes/Type/expectFunction.md +63 -0
- package/docs/classes/Type/expectInfinity.md +65 -0
- package/docs/classes/Type/expectInt.md +64 -0
- package/docs/classes/Type/expectInteger.md +64 -0
- package/docs/classes/Type/expectList.md +63 -0
- package/docs/classes/Type/expectNaN.md +63 -0
- package/docs/classes/Type/expectNull.md +63 -0
- package/docs/classes/Type/expectNumber.md +63 -0
- package/docs/classes/Type/expectNumeric.md +63 -0
- package/docs/classes/Type/expectObject.md +64 -0
- package/docs/classes/Type/expectScalar.md +63 -0
- package/docs/classes/Type/expectString.md +63 -0
- package/docs/classes/Type/expectSymbol.md +63 -0
- package/docs/classes/Type/expectUndefined.md +63 -0
- package/docs/classes/Type.md +101 -2
- package/docs/classes.md +2 -1
- package/docs/helpers/array/array_chunk.md +80 -0
- package/docs/helpers/array/array_chunk_with_keys.md +81 -0
- package/docs/helpers/array/array_column.md +110 -0
- package/docs/helpers/array/array_combine.md +77 -0
- package/docs/helpers/array/array_count_values.md +71 -0
- package/docs/helpers/array/array_diff.md +97 -0
- package/docs/helpers/array/array_diff_assoc.md +81 -0
- package/docs/helpers/array/array_diff_key.md +81 -0
- package/docs/helpers/array/array_diff_uassoc.md +101 -0
- package/docs/helpers/array/array_diff_ukey.md +101 -0
- package/docs/helpers/array/array_fill.md +81 -0
- package/docs/helpers/array/array_fill_keys.md +73 -0
- package/docs/helpers/array/array_filter.md +79 -0
- package/docs/helpers/array/array_flip.md +70 -0
- package/docs/helpers/array/array_index_max.md +78 -0
- package/docs/helpers/array/array_index_min.md +78 -0
- package/docs/helpers/array/array_intersect.md +91 -0
- package/docs/helpers/array/array_intersect_assoc.md +91 -0
- package/docs/helpers/array/array_intersect_key.md +91 -0
- package/docs/helpers/array/array_intersect_uassoc.md +101 -0
- package/docs/helpers/array/array_intersect_ukey.md +101 -0
- package/docs/helpers/array/array_key_exists.md +73 -0
- package/docs/helpers/array/array_key_first.md +62 -0
- package/docs/helpers/array/array_key_last.md +62 -0
- package/docs/helpers/array/array_key_to_lower_case.md +57 -0
- package/docs/helpers/array/array_key_to_upper_case.md +57 -0
- package/docs/helpers/array/array_keys.md +62 -0
- package/docs/helpers/array/array_map.md +69 -0
- package/docs/helpers/array/array_merge.md +67 -0
- package/docs/helpers/array/array_merge_recursive.md +86 -0
- package/docs/helpers/array/array_pad.md +83 -0
- package/docs/helpers/array/array_pop.md +64 -0
- package/docs/helpers/array/array_product.md +62 -0
- package/docs/helpers/array/array_push.md +57 -0
- package/docs/helpers/array/array_rand.md +99 -0
- package/docs/helpers/array/array_reduce.md +77 -0
- package/docs/helpers/array/array_replace.md +85 -0
- package/docs/helpers/array/array_replace_recursive.md +87 -0
- package/docs/helpers/array/array_reverse.md +55 -0
- package/docs/helpers/array/array_search.md +74 -0
- package/docs/helpers/array/array_shift.md +64 -0
- package/docs/helpers/array/array_slice.md +65 -0
- package/docs/helpers/array/array_splice.md +103 -0
- package/docs/helpers/array/array_sum.md +55 -0
- package/docs/helpers/array/array_udiff.md +97 -0
- package/docs/helpers/array/array_udiff_assoc.md +101 -0
- package/docs/helpers/array/array_udiff_uassoc.md +88 -0
- package/docs/helpers/array/array_uintersect.md +101 -0
- package/docs/helpers/array/array_uintersect_assoc.md +102 -0
- package/docs/helpers/array/array_uintersect_uassoc.md +135 -0
- package/docs/helpers/array/array_unique.md +54 -0
- package/docs/helpers/array/array_unshift.md +58 -0
- package/docs/helpers/array/array_values.md +54 -0
- package/docs/helpers/array/array_walk.md +87 -0
- package/docs/helpers/array/array_walk_recursive.md +93 -0
- package/docs/helpers/array/count.md +54 -0
- package/docs/helpers/array/in_array.md +65 -0
- package/docs/helpers/array/natsort.md +60 -0
- package/docs/helpers/array/range.md +76 -0
- package/docs/helpers/array/shuffle.md +74 -0
- package/docs/helpers/array/sort.md +79 -0
- package/docs/helpers/expect.md +58 -0
- package/docs/helpers/expect_array.md +63 -0
- package/docs/helpers/expect_assoc.md +65 -0
- package/docs/helpers/expect_bigint.md +63 -0
- package/docs/helpers/expect_bool.md +65 -0
- package/docs/helpers/expect_boolean.md +65 -0
- package/docs/helpers/expect_char.md +63 -0
- package/docs/helpers/expect_class.md +63 -0
- package/docs/helpers/expect_float.md +65 -0
- package/docs/helpers/expect_function.md +63 -0
- package/docs/helpers/expect_infinity.md +65 -0
- package/docs/helpers/expect_int.md +65 -0
- package/docs/helpers/expect_integer.md +65 -0
- package/docs/helpers/expect_list.md +63 -0
- package/docs/helpers/expect_nan.md +63 -0
- package/docs/helpers/expect_null.md +63 -0
- package/docs/helpers/expect_number.md +63 -0
- package/docs/helpers/expect_numeric.md +63 -0
- package/docs/helpers/expect_object.md +64 -0
- package/docs/helpers/expect_scalar.md +63 -0
- package/docs/helpers/expect_string.md +63 -0
- package/docs/helpers/expect_symbol.md +63 -0
- package/docs/helpers/expect_undefined.md +64 -0
- package/docs/helpers/is_char.md +84 -0
- package/docs/helpers/is_equal.md +75 -0
- package/docs/helpers/string/is_digit_char.md +70 -0
- package/docs/helpers/string/is_whitespace_char.md +70 -0
- package/docs/helpers/string/natcompare.md +69 -0
- package/docs/helpers/string/natcompare_numeric.md +70 -0
- package/docs/helpers.md +172 -1
- package/index.mjs +91 -1
- package/package.json +1 -1
- package/prettier.config.mjs +2 -1
- package/src/classes/Expect.mjs +1445 -0
- package/src/classes/Type.mjs +2739 -1284
- package/src/constants.mjs +83 -14
- package/src/helpers/array/array_chunk.mjs +102 -0
- package/src/helpers/array/array_chunk_with_keys.mjs +102 -0
- package/src/helpers/array/array_column.mjs +131 -0
- package/src/helpers/array/array_combine.mjs +26 -0
- package/src/helpers/array/array_count_values.mjs +82 -0
- package/src/helpers/array/array_diff.mjs +77 -0
- package/src/helpers/array/array_diff_assoc.mjs +56 -0
- package/src/helpers/array/array_diff_key.mjs +56 -0
- package/src/helpers/array/array_diff_uassoc.mjs +76 -0
- package/src/helpers/array/array_diff_ukey.mjs +71 -0
- package/src/helpers/array/array_fill.mjs +108 -0
- package/src/helpers/array/array_fill_keys.mjs +90 -0
- package/src/helpers/array/array_filter.mjs +105 -0
- package/src/helpers/array/array_flip.mjs +58 -0
- package/src/helpers/array/array_index_max.mjs +82 -0
- package/src/helpers/array/array_index_min.mjs +82 -0
- package/src/helpers/array/array_intersect.mjs +71 -0
- package/src/helpers/array/array_intersect_assoc.mjs +67 -0
- package/src/helpers/array/array_intersect_key.mjs +67 -0
- package/src/helpers/array/array_intersect_uassoc.mjs +77 -0
- package/src/helpers/array/array_intersect_ukey.mjs +72 -0
- package/src/helpers/array/array_key_exists.mjs +83 -0
- package/src/helpers/array/array_key_first.mjs +73 -0
- package/src/helpers/array/array_key_last.mjs +74 -0
- package/src/helpers/array/array_key_to_lower_case.mjs +71 -0
- package/src/helpers/array/array_key_to_upper_case.mjs +71 -0
- package/src/helpers/array/array_keys.mjs +65 -0
- package/src/helpers/array/array_map.mjs +84 -0
- package/src/helpers/array/array_merge.mjs +95 -0
- package/src/helpers/array/array_merge_recursive.mjs +153 -0
- package/src/helpers/array/array_pad.mjs +105 -0
- package/src/helpers/array/array_pop.mjs +82 -0
- package/src/helpers/array/array_product.mjs +67 -0
- package/src/helpers/array/array_push.mjs +75 -0
- package/src/helpers/array/array_rand.mjs +129 -0
- package/src/helpers/array/array_reduce.mjs +90 -0
- package/src/helpers/array/array_replace.mjs +25 -0
- package/src/helpers/array/array_replace_recursive.mjs +109 -0
- package/src/helpers/array/array_reverse.mjs +62 -0
- package/src/helpers/array/array_search.mjs +104 -0
- package/src/helpers/array/array_shift.mjs +78 -0
- package/src/helpers/array/array_slice.mjs +99 -0
- package/src/helpers/array/array_splice.mjs +218 -0
- package/src/helpers/array/array_sum.mjs +60 -0
- package/src/helpers/array/array_udiff.mjs +91 -0
- package/src/helpers/array/array_udiff_assoc.mjs +71 -0
- package/src/helpers/array/array_udiff_uassoc.mjs +124 -0
- package/src/helpers/array/array_uintersect.mjs +72 -0
- package/src/helpers/array/array_uintersect_assoc.mjs +77 -0
- package/src/helpers/array/array_uintersect_uassoc.mjs +121 -0
- package/src/helpers/array/array_unique.mjs +77 -0
- package/src/helpers/array/array_unshift.mjs +64 -0
- package/src/helpers/array/array_values.mjs +57 -0
- package/src/helpers/array/array_walk.mjs +95 -0
- package/src/helpers/array/array_walk_recursive.mjs +104 -0
- package/src/helpers/array/count.mjs +57 -0
- package/src/helpers/array/in_array.mjs +67 -0
- package/src/helpers/array/natsort.mjs +62 -0
- package/src/helpers/array/range.mjs +121 -0
- package/src/helpers/array/shuffle.mjs +73 -0
- package/src/helpers/array/sort.mjs +69 -0
- package/src/helpers/expect.mjs +44 -0
- package/src/helpers/expect_array.mjs +66 -0
- package/src/helpers/expect_assoc.mjs +66 -0
- package/src/helpers/expect_bigint.mjs +66 -0
- package/src/helpers/expect_bool.mjs +66 -0
- package/src/helpers/expect_boolean.mjs +57 -0
- package/src/helpers/expect_char.mjs +66 -0
- package/src/helpers/expect_class.mjs +66 -0
- package/src/helpers/expect_float.mjs +66 -0
- package/src/helpers/expect_function.mjs +66 -0
- package/src/helpers/expect_infinity.mjs +66 -0
- package/src/helpers/expect_int.mjs +66 -0
- package/src/helpers/expect_integer.mjs +57 -0
- package/src/helpers/expect_list.mjs +66 -0
- package/src/helpers/expect_nan.mjs +66 -0
- package/src/helpers/expect_null.mjs +66 -0
- package/src/helpers/expect_number.mjs +66 -0
- package/src/helpers/expect_numeric.mjs +66 -0
- package/src/helpers/expect_object.mjs +67 -0
- package/src/helpers/expect_scalar.mjs +66 -0
- package/src/helpers/expect_string.mjs +65 -0
- package/src/helpers/expect_symbol.mjs +66 -0
- package/src/helpers/expect_undefined.mjs +66 -0
- package/src/helpers/is_char.mjs +54 -0
- package/src/helpers/is_equal.mjs +94 -0
- package/src/helpers/string/is_digit_char.mjs +60 -0
- package/src/helpers/string/is_whitespace_char.mjs +54 -0
- package/src/helpers/string/natcompare.mjs +107 -0
- package/src/helpers/string/natcompare_numeric.mjs +131 -0
- package/tests/classes/Expect/toBe.test.mjs +60 -0
- package/tests/classes/Expect/toBeArray.test.mjs +46 -0
- package/tests/classes/Expect/toBeAssoc.test.mjs +48 -0
- package/tests/classes/Expect/toBeBigInt.test.mjs +46 -0
- package/tests/classes/Expect/toBeBool.test.mjs +48 -0
- package/tests/classes/Expect/toBeBoolean.test.mjs +48 -0
- package/tests/classes/Expect/toBeChar.test.mjs +46 -0
- package/tests/classes/Expect/toBeClass.test.mjs +48 -0
- package/tests/classes/Expect/toBeFloat.test.mjs +48 -0
- package/tests/classes/Expect/toBeFunction.test.mjs +51 -0
- package/tests/classes/Expect/toBeInfinity.test.mjs +48 -0
- package/tests/classes/Expect/toBeInt.test.mjs +48 -0
- package/tests/classes/Expect/toBeInteger.test.mjs +48 -0
- package/tests/classes/Expect/toBeList.test.mjs +46 -0
- package/tests/classes/Expect/toBeNaN.test.mjs +46 -0
- package/tests/classes/Expect/toBeNull.test.mjs +46 -0
- package/tests/classes/Expect/toBeNumber.test.mjs +46 -0
- package/tests/classes/Expect/toBeNumeric.test.mjs +53 -0
- package/tests/classes/Expect/toBeObject.test.mjs +47 -0
- package/tests/classes/Expect/toBeScalar.test.mjs +63 -0
- package/tests/classes/Expect/toBeString.test.mjs +46 -0
- package/tests/classes/Expect/toBeSymbol.test.mjs +46 -0
- package/tests/classes/Expect/toBeUndefined.test.mjs +50 -0
- package/tests/classes/Expect/toEqual.test.mjs +66 -0
- package/tests/classes/Expect/toStrictEqual.test.mjs +73 -0
- package/tests/classes/Type.test.mjs +1320 -1262
- package/tests/helpers/array/array_chunk.test.mjs +49 -0
- package/tests/helpers/array/array_chunk_with_keys.test.mjs +45 -0
- package/tests/helpers/array/array_column.test.mjs +87 -0
- package/tests/helpers/array/array_combine.test.mjs +41 -0
- package/tests/helpers/array/array_count_values.test.mjs +40 -0
- package/tests/helpers/array/array_diff.test.mjs +78 -0
- package/tests/helpers/array/array_diff_assoc.test.mjs +64 -0
- package/tests/helpers/array/array_diff_key.test.mjs +64 -0
- package/tests/helpers/array/array_diff_uassoc.test.mjs +73 -0
- package/tests/helpers/array/array_diff_ukey.test.mjs +77 -0
- package/tests/helpers/array/array_fill.test.mjs +47 -0
- package/tests/helpers/array/array_fill_keys.test.mjs +35 -0
- package/tests/helpers/array/array_filter.test.mjs +38 -0
- package/tests/helpers/array/array_flip.test.mjs +33 -0
- package/tests/helpers/array/array_index_max.test.mjs +41 -0
- package/tests/helpers/array/array_index_min.test.mjs +41 -0
- package/tests/helpers/array/array_intersect.test.mjs +65 -0
- package/tests/helpers/array/array_intersect_assoc.test.mjs +65 -0
- package/tests/helpers/array/array_intersect_key.test.mjs +65 -0
- package/tests/helpers/array/array_intersect_uassoc.test.mjs +76 -0
- package/tests/helpers/array/array_intersect_ukey.test.mjs +74 -0
- package/tests/helpers/array/array_key_exists.test.mjs +36 -0
- package/tests/helpers/array/array_key_first.test.mjs +29 -0
- package/tests/helpers/array/array_key_last.test.mjs +29 -0
- package/tests/helpers/array/array_key_to_lower_case.test.mjs +23 -0
- package/tests/helpers/array/array_key_to_upper_case.test.mjs +23 -0
- package/tests/helpers/array/array_keys.test.mjs +27 -0
- package/tests/helpers/array/array_map.test.mjs +32 -0
- package/tests/helpers/array/array_merge.test.mjs +37 -0
- package/tests/helpers/array/array_merge_recursive.test.mjs +65 -0
- package/tests/helpers/array/array_pad.test.mjs +48 -0
- package/tests/helpers/array/array_pop.test.mjs +29 -0
- package/tests/helpers/array/array_product.test.mjs +33 -0
- package/tests/helpers/array/array_push.test.mjs +31 -0
- package/tests/helpers/array/array_rand.test.mjs +59 -0
- package/tests/helpers/array/array_reduce.test.mjs +44 -0
- package/tests/helpers/array/array_replace.test.mjs +46 -0
- package/tests/helpers/array/array_replace_recursive.test.mjs +46 -0
- package/tests/helpers/array/array_reverse.test.mjs +31 -0
- package/tests/helpers/array/array_search.test.mjs +48 -0
- package/tests/helpers/array/array_shift.test.mjs +29 -0
- package/tests/helpers/array/array_slice.test.mjs +49 -0
- package/tests/helpers/array/array_splice.test.mjs +67 -0
- package/tests/helpers/array/array_sum.test.mjs +27 -0
- package/tests/helpers/array/array_udiff.test.mjs +95 -0
- package/tests/helpers/array/array_udiff_assoc.test.mjs +77 -0
- package/tests/helpers/array/array_udiff_uassoc.test.mjs +89 -0
- package/tests/helpers/array/array_uintersect.test.mjs +78 -0
- package/tests/helpers/array/array_uintersect_assoc.test.mjs +80 -0
- package/tests/helpers/array/array_uintersect_uassoc.test.mjs +122 -0
- package/tests/helpers/array/array_unique.test.mjs +27 -0
- package/tests/helpers/array/array_unshift.test.mjs +31 -0
- package/tests/helpers/array/array_values.test.mjs +27 -0
- package/tests/helpers/array/array_walk.test.mjs +48 -0
- package/tests/helpers/array/array_walk_recursive.test.mjs +53 -0
- package/tests/helpers/array/count.test.mjs +27 -0
- package/tests/helpers/array/in_array.test.mjs +52 -0
- package/tests/helpers/array/natsort.test.mjs +71 -0
- package/tests/helpers/array/range.test.mjs +51 -0
- package/tests/helpers/array/shuffle.test.mjs +42 -0
- package/tests/helpers/array/sort.test.mjs +60 -0
- package/tests/helpers/array.test.mjs +58 -58
- package/tests/helpers/expect.test.mjs +95 -0
- package/tests/helpers/expect_array.test.mjs +71 -0
- package/tests/helpers/expect_assoc.test.mjs +61 -0
- package/tests/helpers/expect_bigint.test.mjs +63 -0
- package/tests/helpers/expect_bool.test.mjs +59 -0
- package/tests/helpers/expect_boolean.test.mjs +61 -0
- package/tests/helpers/expect_char.test.mjs +63 -0
- package/tests/helpers/expect_class.test.mjs +64 -0
- package/tests/helpers/expect_float.test.mjs +64 -0
- package/tests/helpers/expect_function.test.mjs +65 -0
- package/tests/helpers/expect_infinity.test.mjs +62 -0
- package/tests/helpers/expect_int.test.mjs +57 -0
- package/tests/helpers/expect_integer.test.mjs +59 -0
- package/tests/helpers/expect_list.test.mjs +73 -0
- package/tests/helpers/expect_nan.test.mjs +57 -0
- package/tests/helpers/expect_null.test.mjs +57 -0
- package/tests/helpers/expect_number.test.mjs +57 -0
- package/tests/helpers/expect_numeric.test.mjs +57 -0
- package/tests/helpers/expect_object.test.mjs +63 -0
- package/tests/helpers/expect_scalar.test.mjs +72 -0
- package/tests/helpers/expect_string.test.mjs +65 -0
- package/tests/helpers/expect_symbol.test.mjs +66 -0
- package/tests/helpers/expect_undefined.test.mjs +59 -0
- package/tests/helpers/is_char.test.mjs +40 -0
- package/tests/helpers/is_equal.test.mjs +110 -0
- package/tests/helpers/string/is_digit_char.test.mjs +32 -0
- package/tests/helpers/string/is_whitespace_char.test.mjs +32 -0
- package/tests/helpers/string/natcompare.test.mjs +100 -0
- package/tests/helpers/string/natcompare_numeric.test.mjs +110 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { expect, test, describe } from '@jest/globals';
|
|
2
|
+
import { array_chunk } from '../../../index.mjs';
|
|
3
|
+
|
|
4
|
+
describe('Функция array_chunk', () => {
|
|
5
|
+
test('Должна разбивать массив на части указанной длины', () => {
|
|
6
|
+
const array = [1, 2, 3, 4, 5];
|
|
7
|
+
const result = array_chunk(array, 2);
|
|
8
|
+
expect(result).toEqual([[1, 2], [3, 4], [5]]);
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
test('Должна возвращать пустой массив, если передан пустой массив', () => {
|
|
12
|
+
const array = [];
|
|
13
|
+
const result = array_chunk(array, 2);
|
|
14
|
+
expect(result).toEqual([]);
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
test('Должна разбивать ассоциативный массив на части указанной длины', () => {
|
|
18
|
+
const assoc = {
|
|
19
|
+
key1: 'value1',
|
|
20
|
+
key2: 'value2',
|
|
21
|
+
key3: 'value3',
|
|
22
|
+
key4: 'value4',
|
|
23
|
+
key5: 'value5',
|
|
24
|
+
};
|
|
25
|
+
const result = array_chunk(assoc, 2);
|
|
26
|
+
expect(result).toEqual([['value1', 'value2'], ['value3', 'value4'], ['value5']]);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
test('Должна выбрасывать ошибку, если переданное значение не является массивом', () => {
|
|
30
|
+
expect(() => array_chunk('not an array', 2)).toThrow(TypeError);
|
|
31
|
+
expect(() => array_chunk('not an array', 2)).toThrow(
|
|
32
|
+
'Параметр "value" должен быть массивом.',
|
|
33
|
+
);
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
test('Должна выбрасывать ошибку, если длина не является целым числом', () => {
|
|
37
|
+
const array = [1, 2, 3];
|
|
38
|
+
expect(() => array_chunk(array, 'not an integer')).toThrow(TypeError);
|
|
39
|
+
expect(() => array_chunk(array, 'not an integer')).toThrow(
|
|
40
|
+
'Параметр "length" должен быть целым числом.',
|
|
41
|
+
);
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
test('Должна выбрасывать ошибку, если длина меньше 1', () => {
|
|
45
|
+
const array = [1, 2, 3];
|
|
46
|
+
expect(() => array_chunk(array, 0)).toThrow(Error);
|
|
47
|
+
expect(() => array_chunk(array, 0)).toThrow('Параметр "length" должен быть больше нуля.');
|
|
48
|
+
});
|
|
49
|
+
});
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { expect, test, describe } from '@jest/globals';
|
|
2
|
+
import { array_chunk_with_keys } from '../../../index.mjs';
|
|
3
|
+
|
|
4
|
+
describe('Функция array_chunk_with_keys', () => {
|
|
5
|
+
test('Должна разбивать ассоциативный массив на части указанной длины с сохранением ключей', () => {
|
|
6
|
+
const assoc = { a: 1, b: 2, c: 3, d: 4, e: 5 };
|
|
7
|
+
const result = array_chunk_with_keys(assoc, 2);
|
|
8
|
+
expect(result).toEqual([{ a: 1, b: 2 }, { c: 3, d: 4 }, { e: 5 }]);
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
test('Должна возвращать пустой массив, если передан пустой ассоциативный массив', () => {
|
|
12
|
+
const assoc = {};
|
|
13
|
+
const result = array_chunk_with_keys(assoc, 2);
|
|
14
|
+
expect(result).toEqual([]);
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
test('Должна разбивать обычный массив на части указанной длины с сохранением ключей', () => {
|
|
18
|
+
const array = [1, 2, 3, 4, 5];
|
|
19
|
+
const result = array_chunk_with_keys(array, 2);
|
|
20
|
+
expect(result).toEqual([{ 0: 1, 1: 2 }, { 2: 3, 3: 4 }, { 4: 5 }]);
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
test('Должна выбрасывать ошибку, если переданное значение не является массивом', () => {
|
|
24
|
+
expect(() => array_chunk_with_keys('not an array', 2)).toThrow(TypeError);
|
|
25
|
+
expect(() => array_chunk_with_keys('not an array', 2)).toThrow(
|
|
26
|
+
'Параметр "value" должен быть массивом.',
|
|
27
|
+
);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
test('Должна выбрасывать ошибку, если длина не является целым числом', () => {
|
|
31
|
+
const assoc = { a: 1, b: 2, c: 3 };
|
|
32
|
+
expect(() => array_chunk_with_keys(assoc, 'not an integer')).toThrow(TypeError);
|
|
33
|
+
expect(() => array_chunk_with_keys(assoc, 'not an integer')).toThrow(
|
|
34
|
+
'Параметр "length" должен быть целым числом.',
|
|
35
|
+
);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
test('Должна выбрасывать ошибку, если длина меньше 1', () => {
|
|
39
|
+
const assoc = { a: 1, b: 2, c: 3 };
|
|
40
|
+
expect(() => array_chunk_with_keys(assoc, 0)).toThrow(Error);
|
|
41
|
+
expect(() => array_chunk_with_keys(assoc, 0)).toThrow(
|
|
42
|
+
'Параметр "length" должен быть больше нуля.',
|
|
43
|
+
);
|
|
44
|
+
});
|
|
45
|
+
});
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { expect, test, describe } from '@jest/globals';
|
|
2
|
+
import { array_column } from '../../../index.mjs';
|
|
3
|
+
|
|
4
|
+
describe('Функция array_column', () => {
|
|
5
|
+
test('Должна извлекать значения указанного столбца из массива объектов', () => {
|
|
6
|
+
const array = [
|
|
7
|
+
{ id: 1, name: 'Alice' },
|
|
8
|
+
{ id: 2, name: 'Bob' },
|
|
9
|
+
{ id: 3, name: 'Charlie' },
|
|
10
|
+
];
|
|
11
|
+
const result = array_column(array, 'name');
|
|
12
|
+
expect(result).toEqual(['Alice', 'Bob', 'Charlie']);
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
test('Должна возвращать пустой массив, если передан пустой массив', () => {
|
|
16
|
+
const array = [];
|
|
17
|
+
const result = array_column(array, 'name');
|
|
18
|
+
expect(result).toEqual([]);
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
test('Должна возвращать массив undefined, если ключ не найден в объектах', () => {
|
|
22
|
+
const array = [
|
|
23
|
+
{ id: 1, name: 'Alice' },
|
|
24
|
+
{ id: 2, name: 'Bob' },
|
|
25
|
+
{ id: 3, name: 'Charlie' },
|
|
26
|
+
];
|
|
27
|
+
const result = array_column(array, 'age');
|
|
28
|
+
expect(result).toEqual([undefined, undefined, undefined]);
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
test('Должна извлекать значения указанного столбца и использовать указанный ключ для индексации', () => {
|
|
32
|
+
const array = [
|
|
33
|
+
{ id: 1, name: 'Alice' },
|
|
34
|
+
{ id: 2, name: 'Bob' },
|
|
35
|
+
{ id: 3, name: 'Charlie' },
|
|
36
|
+
];
|
|
37
|
+
const result = array_column(array, 'name', 'id');
|
|
38
|
+
expect(result).toEqual({ 1: 'Alice', 2: 'Bob', 3: 'Charlie' });
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
test('Должна возвращать пустой объект, если передан пустой массив и указан индексный ключ', () => {
|
|
42
|
+
const array = [];
|
|
43
|
+
const result = array_column(array, 'name', 'id');
|
|
44
|
+
expect(result).toEqual({});
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
test('Должна возвращать объект с undefined значениями, если ключ не найден в объектах и указан индексный ключ', () => {
|
|
48
|
+
const array = [
|
|
49
|
+
{ id: 1, name: 'Alice' },
|
|
50
|
+
{ id: 2, name: 'Bob' },
|
|
51
|
+
{ id: 3, name: 'Charlie' },
|
|
52
|
+
];
|
|
53
|
+
const result = array_column(array, 'age', 'id');
|
|
54
|
+
expect(result).toEqual({ 1: undefined, 2: undefined, 3: undefined });
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
test('Должна выбрасывать ошибку, если переданное значение не является массивом', () => {
|
|
58
|
+
expect(() => array_column('not an array', 'name')).toThrow(TypeError);
|
|
59
|
+
expect(() => array_column('not an array', 'name')).toThrow(
|
|
60
|
+
'Параметр "value" должен быть списком.',
|
|
61
|
+
);
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
test('Должна выбрасывать ошибку, если ключ не является строкой или целым числом', () => {
|
|
65
|
+
const array = [
|
|
66
|
+
{ id: 1, name: 'Alice' },
|
|
67
|
+
{ id: 2, name: 'Bob' },
|
|
68
|
+
{ id: 3, name: 'Charlie' },
|
|
69
|
+
];
|
|
70
|
+
expect(() => array_column(array, {})).toThrow(TypeError);
|
|
71
|
+
expect(() => array_column(array, {})).toThrow(
|
|
72
|
+
'Параметр "column_key" должен быть строкой или целым числом.',
|
|
73
|
+
);
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
test('Должна выбрасывать ошибку, если индексный ключ не является строкой, целым числом или null', () => {
|
|
77
|
+
const array = [
|
|
78
|
+
{ id: 1, name: 'Alice' },
|
|
79
|
+
{ id: 2, name: 'Bob' },
|
|
80
|
+
{ id: 3, name: 'Charlie' },
|
|
81
|
+
];
|
|
82
|
+
expect(() => array_column(array, 'name', {})).toThrow(TypeError);
|
|
83
|
+
expect(() => array_column(array, 'name', {})).toThrow(
|
|
84
|
+
'Параметр "index_key" должен быть строкой или целым числом.',
|
|
85
|
+
);
|
|
86
|
+
});
|
|
87
|
+
});
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { expect, test, describe } from '@jest/globals';
|
|
2
|
+
import { array_combine } from '../../../index.mjs';
|
|
3
|
+
|
|
4
|
+
describe('Функция array_combine', () => {
|
|
5
|
+
test('Должна объединять два массива в ассоциативный массив', () => {
|
|
6
|
+
const keys = ['a', 'b', 'c'];
|
|
7
|
+
const values = [1, 2, 3];
|
|
8
|
+
const result = array_combine(keys, values);
|
|
9
|
+
expect(result).toEqual({ a: 1, b: 2, c: 3 });
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
test('Должна возвращать пустой объект, если переданы пустые массивы', () => {
|
|
13
|
+
const keys = [];
|
|
14
|
+
const values = [];
|
|
15
|
+
const result = array_combine(keys, values);
|
|
16
|
+
expect(result).toEqual({});
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
test('Должна выбрасывать ошибку, если переданное значение для ключей не является массивом', () => {
|
|
20
|
+
expect(() => array_combine('not an array', [1, 2, 3])).toThrow(TypeError);
|
|
21
|
+
expect(() => array_combine('not an array', [1, 2, 3])).toThrow(
|
|
22
|
+
'Параметр "keys" должен быть списком.',
|
|
23
|
+
);
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
test('Должна выбрасывать ошибку, если переданное значение для значений не является массивом', () => {
|
|
27
|
+
expect(() => array_combine(['a', 'b', 'c'], 'not an array')).toThrow(TypeError);
|
|
28
|
+
expect(() => array_combine(['a', 'b', 'c'], 'not an array')).toThrow(
|
|
29
|
+
'Параметр "values" должен быть списком.',
|
|
30
|
+
);
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
test('Должна выбрасывать ошибку, если количество ключей и значений не совпадает', () => {
|
|
34
|
+
const keys = ['a', 'b'];
|
|
35
|
+
const values = [1, 2, 3];
|
|
36
|
+
expect(() => array_combine(keys, values)).toThrow(Error);
|
|
37
|
+
expect(() => array_combine(keys, values)).toThrow(
|
|
38
|
+
'Количество элементов в списке ключей должно ровняться количеству элементов в списке значений.',
|
|
39
|
+
);
|
|
40
|
+
});
|
|
41
|
+
});
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { expect, test, describe } from '@jest/globals';
|
|
2
|
+
import { array_count_values } from '../../../index.mjs';
|
|
3
|
+
|
|
4
|
+
describe('Функция array_count_values', () => {
|
|
5
|
+
test('Должна подсчитывать количество значений в массиве', () => {
|
|
6
|
+
const array = ['a', 'b', 'a', 'c', 'b', 'a'];
|
|
7
|
+
const result = array_count_values(array);
|
|
8
|
+
expect(result).toEqual({ a: 3, b: 2, c: 1 });
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
test('Должна возвращать пустой объект, если передан пустой массив', () => {
|
|
12
|
+
const array = [];
|
|
13
|
+
const result = array_count_values(array);
|
|
14
|
+
expect(result).toEqual({});
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
test('Должна корректно обрабатывать значения разных типов', () => {
|
|
18
|
+
const array = [1, '1', true, 'true', null, 'null', undefined, 'undefined'];
|
|
19
|
+
const result = array_count_values(array);
|
|
20
|
+
expect(result).toEqual({
|
|
21
|
+
1: 2,
|
|
22
|
+
true: 2,
|
|
23
|
+
null: 2,
|
|
24
|
+
undefined: 2,
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
test('Должна выбрасывать ошибку, если переданное значение не является массивом', () => {
|
|
29
|
+
expect(() => array_count_values('not an array')).toThrow(TypeError);
|
|
30
|
+
expect(() => array_count_values('not an array')).toThrow(
|
|
31
|
+
'Параметр "value" должен быть массивом.',
|
|
32
|
+
);
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
test('Должна корректно обрабатывать ассоциативные массивы', () => {
|
|
36
|
+
const assoc = { key1: 'a', key2: 'b', key3: 'a', key4: 'c' };
|
|
37
|
+
const result = array_count_values(assoc);
|
|
38
|
+
expect(result).toEqual({ a: 2, b: 1, c: 1 });
|
|
39
|
+
});
|
|
40
|
+
});
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { expect, test, describe } from '@jest/globals';
|
|
2
|
+
import { array_diff } from '../../../index.mjs';
|
|
3
|
+
|
|
4
|
+
describe('Функция array_diff', () => {
|
|
5
|
+
test('Должна возвращать элементы из первого массива, которые отсутствуют в других массивах', () => {
|
|
6
|
+
const original_array = [1, 2, 3];
|
|
7
|
+
const array1 = [1, 2];
|
|
8
|
+
const result = array_diff(original_array, array1);
|
|
9
|
+
expect(result).toEqual({ 2: 3 });
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
test('Должна возвращать пустой объект, если все элементы первого массива присутствуют в других массивах', () => {
|
|
13
|
+
const original_array = [1, 2];
|
|
14
|
+
const array1 = [1, 2];
|
|
15
|
+
const result = array_diff(original_array, array1);
|
|
16
|
+
expect(result).toEqual({});
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
test('Должна корректно обрабатывать пустые массивы', () => {
|
|
20
|
+
const original_array = [];
|
|
21
|
+
const array1 = [];
|
|
22
|
+
const result = array_diff(original_array, array1);
|
|
23
|
+
expect(result).toEqual({});
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
test('Должна выбрасывать ошибку, если переданное значение для original_array не является массивом', () => {
|
|
27
|
+
expect(() => array_diff('not an array')).toThrow(TypeError);
|
|
28
|
+
expect(() => array_diff('not an array')).toThrow(
|
|
29
|
+
'Параметр "original_array" должен быть массивом.',
|
|
30
|
+
);
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
test('Должна выбрасывать ошибку, если переданное значение для arrays не является массивом', () => {
|
|
34
|
+
expect(() => array_diff([], 'not an array')).toThrow(TypeError);
|
|
35
|
+
expect(() => array_diff([], 'not an array')).toThrow(
|
|
36
|
+
'Параметр "arrays" должен быть массивом.',
|
|
37
|
+
);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
test('Должна корректно обрабатывать массивы с различными типами данных', () => {
|
|
41
|
+
const original_array = [1, '2', true];
|
|
42
|
+
const array1 = [1, 2, false];
|
|
43
|
+
const result = array_diff(original_array, array1);
|
|
44
|
+
expect(result).toEqual({ 1: '2', 2: true });
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
test('Должна корректно обрабатывать массивы с объектами', () => {
|
|
48
|
+
const original_array = [{ id: 1 }, { id: 2 }, { id: 3 }];
|
|
49
|
+
const array1 = [{ id: 1 }, { id: 2 }];
|
|
50
|
+
const result = array_diff(original_array, array1);
|
|
51
|
+
expect(result).toEqual({ 2: { id: 3 } });
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
test('Должна корректно обрабатывать ассоциативные массивы', () => {
|
|
55
|
+
const original_array = { a: 1, b: 2, c: 3 };
|
|
56
|
+
const array1 = { a: 1, b: 2 };
|
|
57
|
+
const result = array_diff(original_array, array1);
|
|
58
|
+
expect(result).toEqual({ c: 3 });
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
test('Должна корректно обрабатывать несколько массивов для сравнения', () => {
|
|
62
|
+
const original_array = [1, 2, 3, 4];
|
|
63
|
+
const array1 = [1, 2];
|
|
64
|
+
const array2 = [3];
|
|
65
|
+
const result = array_diff(original_array, array1, array2);
|
|
66
|
+
expect(result).toEqual({ 3: 4 });
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
test('Должна корректно обрабатывать массивы с вложенными структурами', () => {
|
|
70
|
+
const original_array = [
|
|
71
|
+
{ id: 1, data: [1, 2] },
|
|
72
|
+
{ id: 2, data: [3, 4] },
|
|
73
|
+
];
|
|
74
|
+
const array1 = [{ id: 1, data: [1, 2] }];
|
|
75
|
+
const result = array_diff(original_array, array1);
|
|
76
|
+
expect(result).toEqual({ 1: { id: 2, data: [3, 4] } });
|
|
77
|
+
});
|
|
78
|
+
});
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { expect, test, describe } from '@jest/globals';
|
|
2
|
+
import { array_diff_assoc } from '../../../index.mjs';
|
|
3
|
+
|
|
4
|
+
describe('Функция array_diff_assoc', () => {
|
|
5
|
+
test('Должна возвращать элементы из первого массива, которые отсутствуют в других массивах', () => {
|
|
6
|
+
const original_array = { a: 1, b: 2, c: 3 };
|
|
7
|
+
const array1 = { a: 1, b: 2 };
|
|
8
|
+
const result = array_diff_assoc(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_assoc(original_array, array1);
|
|
16
|
+
expect(result).toEqual({});
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
test('Должна корректно обрабатывать пустые массивы', () => {
|
|
20
|
+
const original_array = {};
|
|
21
|
+
const array1 = {};
|
|
22
|
+
const result = array_diff_assoc(original_array, array1);
|
|
23
|
+
expect(result).toEqual({});
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
test('Должна выбрасывать ошибку, если переданное значение для original_array не является массивом', () => {
|
|
27
|
+
expect(() => array_diff_assoc('not an array')).toThrow(TypeError);
|
|
28
|
+
expect(() => array_diff_assoc('not an array')).toThrow(
|
|
29
|
+
'Параметр "original_array" должен быть массивом.',
|
|
30
|
+
);
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
test('Должна выбрасывать ошибку, если переданное значение для arrays не является массивом', () => {
|
|
34
|
+
expect(() => array_diff_assoc([], 'not an array')).toThrow(TypeError);
|
|
35
|
+
expect(() => array_diff_assoc([], '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_assoc(original_array, array1);
|
|
44
|
+
expect(result).toEqual({ b: '2', 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_assoc(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_assoc(original_array, array1);
|
|
62
|
+
expect(result).toEqual({ b: { id: 2, data: [3, 4] } });
|
|
63
|
+
});
|
|
64
|
+
});
|
|
@@ -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
|
+
});
|