@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,48 @@
|
|
|
1
|
+
import { expect, test, describe } from '@jest/globals';
|
|
2
|
+
import { array_search } from '../../../index.mjs';
|
|
3
|
+
|
|
4
|
+
describe('Функция array_search', () => {
|
|
5
|
+
test('Должна находить значение в обычном массиве', () => {
|
|
6
|
+
const array = [1, 2, 3, 4, 5];
|
|
7
|
+
const result = array_search(array, 3);
|
|
8
|
+
expect(result).toBe(2);
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
test('Должна находить значение в ассоциативном массиве', () => {
|
|
12
|
+
const array = { a: 1, b: 2, c: 3 };
|
|
13
|
+
const result = array_search(array, 2);
|
|
14
|
+
expect(result).toBe('b');
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
test('Должна находить значение с использованием строгого сравнения', () => {
|
|
18
|
+
const array = [1, '2', 3];
|
|
19
|
+
const result = array_search(array, 2, true);
|
|
20
|
+
expect(result).toBeNull();
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
test('Должна находить значение с использованием функции', () => {
|
|
24
|
+
const array = [1, 2, 3, 4, 5];
|
|
25
|
+
const result = array_search(array, (v) => v > 3);
|
|
26
|
+
expect(result).toBe(3);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
test('Должна возвращать null, если значение не найдено', () => {
|
|
30
|
+
const array = [1, 2, 3];
|
|
31
|
+
const result = array_search(array, 4);
|
|
32
|
+
expect(result).toBeNull();
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
test('Должна выбрасывать ошибку, если параметр не является массивом', () => {
|
|
36
|
+
expect(() => array_search('not an array', 1)).toThrow(TypeError);
|
|
37
|
+
expect(() => array_search('not an array', 1)).toThrow(
|
|
38
|
+
'Параметр "arr" должен быть массивом.',
|
|
39
|
+
);
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
test('Должна выбрасывать ошибку, если параметр strict не является логическим значением', () => {
|
|
43
|
+
expect(() => array_search([1, 2, 3], 1, 'not a boolean')).toThrow(TypeError);
|
|
44
|
+
expect(() => array_search([1, 2, 3], 1, 'not a boolean')).toThrow(
|
|
45
|
+
'Параметр "strict" должен иметь логический тип.',
|
|
46
|
+
);
|
|
47
|
+
});
|
|
48
|
+
});
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { expect, test, describe } from '@jest/globals';
|
|
2
|
+
import { array_shift } from '../../../index.mjs';
|
|
3
|
+
|
|
4
|
+
describe('Функция array_shift', () => {
|
|
5
|
+
test('Должна удалять и возвращать первый элемент обычного массива', () => {
|
|
6
|
+
const array = [1, 2, 3];
|
|
7
|
+
const result = array_shift(array);
|
|
8
|
+
expect(result).toBe(1);
|
|
9
|
+
expect(array).toEqual([2, 3]);
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
test('Должна удалять и возвращать первый элемент ассоциативного массива', () => {
|
|
13
|
+
const array = { a: 1, b: 2, c: 3 };
|
|
14
|
+
const result = array_shift(array);
|
|
15
|
+
expect(result).toBe(1);
|
|
16
|
+
expect(array).toEqual({ b: 2, c: 3 });
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
test('Должна возвращать null для пустого массива', () => {
|
|
20
|
+
const array = [];
|
|
21
|
+
const result = array_shift(array);
|
|
22
|
+
expect(result).toBeNull();
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
test('Должна выбрасывать ошибку, если параметр не является массивом', () => {
|
|
26
|
+
expect(() => array_shift('not an array')).toThrow(TypeError);
|
|
27
|
+
expect(() => array_shift('not an array')).toThrow('Параметр "arr" должен быть массивом.');
|
|
28
|
+
});
|
|
29
|
+
});
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { expect, test, describe } from '@jest/globals';
|
|
2
|
+
import { array_slice } from '../../../index.mjs';
|
|
3
|
+
|
|
4
|
+
describe('Функция array_slice', () => {
|
|
5
|
+
test('Должна извлекать часть обычного массива', () => {
|
|
6
|
+
const array = [1, 2, 3, 4, 5];
|
|
7
|
+
const result = array_slice(array, 1, 3);
|
|
8
|
+
expect(result).toEqual([2, 3, 4]);
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
test('Должна извлекать часть ассоциативного массива', () => {
|
|
12
|
+
const array = { a: 1, b: 2, c: 3, d: 4, e: 5 };
|
|
13
|
+
const result = array_slice(array, 1, 3);
|
|
14
|
+
expect(result).toEqual({ b: 2, c: 3, d: 4 });
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
test('Должна извлекать до конца массива, если длина не указана', () => {
|
|
18
|
+
const array = [1, 2, 3, 4, 5];
|
|
19
|
+
const result = array_slice(array, 2);
|
|
20
|
+
expect(result).toEqual([3, 4, 5]);
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
test('Должна возвращать пустой массив, если длина равна нулю', () => {
|
|
24
|
+
const array = [1, 2, 3, 4, 5];
|
|
25
|
+
const result = array_slice(array, 1, 0);
|
|
26
|
+
expect(result).toEqual([]);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
test('Должна выбрасывать ошибку, если параметр не является массивом', () => {
|
|
30
|
+
expect(() => array_slice('not an array', 1, 2)).toThrow(TypeError);
|
|
31
|
+
expect(() => array_slice('not an array', 1, 2)).toThrow(
|
|
32
|
+
'Параметр "arr" должен быть массивом.',
|
|
33
|
+
);
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
test('Должна выбрасывать ошибку, если параметр offset не является целым числом', () => {
|
|
37
|
+
expect(() => array_slice([1, 2, 3], 'not a number', 2)).toThrow(TypeError);
|
|
38
|
+
expect(() => array_slice([1, 2, 3], 'not a number', 2)).toThrow(
|
|
39
|
+
'Параметр "offset" должен быть целым числом.',
|
|
40
|
+
);
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
test('Должна выбрасывать ошибку, если параметр length не является целым числом или null', () => {
|
|
44
|
+
expect(() => array_slice([1, 2, 3], 1, 'not a number')).toThrow(TypeError);
|
|
45
|
+
expect(() => array_slice([1, 2, 3], 1, 'not a number')).toThrow(
|
|
46
|
+
'Параметр "length" должен быть целым числом.',
|
|
47
|
+
);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { expect, test, describe } from '@jest/globals';
|
|
2
|
+
import { array_splice } from '../../../index.mjs';
|
|
3
|
+
|
|
4
|
+
describe('Функция array_splice', () => {
|
|
5
|
+
test('Должна удалять элементы из обычного массива', () => {
|
|
6
|
+
const array = [1, 2, 3, 4, 5];
|
|
7
|
+
const result = array_splice(array, 1, 2);
|
|
8
|
+
expect(result).toEqual([2, 3]);
|
|
9
|
+
expect(array).toEqual([1, 4, 5]);
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
test('Должна удалять элементы из ассоциативного массива', () => {
|
|
13
|
+
const array = { a: 1, b: 2, c: 3, d: 4, e: 5 };
|
|
14
|
+
const result = array_splice(array, 1, 2);
|
|
15
|
+
expect(result).toEqual({ b: 2, c: 3 });
|
|
16
|
+
expect(array).toEqual({ a: 1, d: 4, e: 5 });
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
test('Должна добавлять элементы в обычный массив', () => {
|
|
20
|
+
const array = [1, 2, 3];
|
|
21
|
+
const result = array_splice(array, 1, 0, [4, 5]);
|
|
22
|
+
expect(result).toEqual([]);
|
|
23
|
+
expect(array).toEqual([1, 4, 5, 2, 3]);
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
test('Должна добавлять элементы в ассоциативный массив', () => {
|
|
27
|
+
const array = { a: 1, b: 2, c: 3 };
|
|
28
|
+
const result = array_splice(array, 1, 0, { d: 4, e: 5 });
|
|
29
|
+
expect(result).toEqual({});
|
|
30
|
+
expect(array).toEqual({ a: 1, d: 4, e: 5, b: 2, c: 3 });
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
test('Должна заменять элементы в обычном массиве', () => {
|
|
34
|
+
const array = [1, 2, 3];
|
|
35
|
+
const result = array_splice(array, 1, 2, [4, 5]);
|
|
36
|
+
expect(result).toEqual([2, 3]);
|
|
37
|
+
expect(array).toEqual([1, 4, 5]);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
test('Должна заменять элементы в ассоциативном массиве', () => {
|
|
41
|
+
const array = { a: 1, b: 2, c: 3 };
|
|
42
|
+
const result = array_splice(array, 1, 2, { d: 4, e: 5 });
|
|
43
|
+
expect(result).toEqual({ b: 2, c: 3 });
|
|
44
|
+
expect(array).toEqual({ a: 1, d: 4, e: 5 });
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
test('Должна выбрасывать ошибку, если параметр не является массивом', () => {
|
|
48
|
+
expect(() => array_splice('not an array', 1, 2)).toThrow(TypeError);
|
|
49
|
+
expect(() => array_splice('not an array', 1, 2)).toThrow(
|
|
50
|
+
'Параметр "arr" должен быть массивом.',
|
|
51
|
+
);
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
test('Должна выбрасывать ошибку, если параметр offset не является целым числом', () => {
|
|
55
|
+
expect(() => array_splice([1, 2, 3], 'not a number', 2)).toThrow(TypeError);
|
|
56
|
+
expect(() => array_splice([1, 2, 3], 'not a number', 2)).toThrow(
|
|
57
|
+
'Параметр "offset" должен быть целым числом.',
|
|
58
|
+
);
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
test('Должна выбрасывать ошибку, если параметр length не является целым числом или null', () => {
|
|
62
|
+
expect(() => array_splice([1, 2, 3], 1, 'not a number')).toThrow(TypeError);
|
|
63
|
+
expect(() => array_splice([1, 2, 3], 1, 'not a number')).toThrow(
|
|
64
|
+
'Параметр "length" должен быть целым числом.',
|
|
65
|
+
);
|
|
66
|
+
});
|
|
67
|
+
});
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { expect, test, describe } from '@jest/globals';
|
|
2
|
+
import { array_sum } from '../../../index.mjs';
|
|
3
|
+
|
|
4
|
+
describe('Функция array_sum', () => {
|
|
5
|
+
test('Должна вычислять сумму значений в обычном массиве', () => {
|
|
6
|
+
const array = [1, 2, 3, 4, 5];
|
|
7
|
+
const result = array_sum(array);
|
|
8
|
+
expect(result).toBe(15);
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
test('Должна вычислять сумму значений в ассоциативном массиве', () => {
|
|
12
|
+
const array = { a: 1, b: 2, c: 3 };
|
|
13
|
+
const result = array_sum(array);
|
|
14
|
+
expect(result).toBe(6);
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
test('Должна возвращать 0 для пустого массива', () => {
|
|
18
|
+
const array = [];
|
|
19
|
+
const result = array_sum(array);
|
|
20
|
+
expect(result).toBe(0);
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
test('Должна выбрасывать ошибку, если параметр не является массивом', () => {
|
|
24
|
+
expect(() => array_sum('not an array')).toThrow(TypeError);
|
|
25
|
+
expect(() => array_sum('not an array')).toThrow('Параметр "arr" должен быть массивом.');
|
|
26
|
+
});
|
|
27
|
+
});
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { expect, test, describe } from '@jest/globals';
|
|
2
|
+
import { array_udiff } from '../../../index.mjs';
|
|
3
|
+
|
|
4
|
+
describe('Функция array_udiff', () => {
|
|
5
|
+
const value_compare_func = (a, b) => a === b;
|
|
6
|
+
|
|
7
|
+
test('Должна возвращать элементы из первого массива, которые отсутствуют в других массивах', () => {
|
|
8
|
+
const original_array = [1, 2, 3];
|
|
9
|
+
const array1 = [1, 2];
|
|
10
|
+
const result = array_udiff(value_compare_func, original_array, array1);
|
|
11
|
+
expect(result).toEqual({ 2: 3 });
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
test('Должна возвращать пустой массив, если все элементы первого массива присутствуют в других массивах', () => {
|
|
15
|
+
const original_array = [1, 2];
|
|
16
|
+
const array1 = [1, 2];
|
|
17
|
+
const result = array_udiff(value_compare_func, original_array, array1);
|
|
18
|
+
expect(result).toEqual({});
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
test('Должна корректно обрабатывать пустые массивы', () => {
|
|
22
|
+
const original_array = [];
|
|
23
|
+
const array1 = [];
|
|
24
|
+
const result = array_udiff(value_compare_func, original_array, array1);
|
|
25
|
+
expect(result).toEqual({});
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
test('Должна выбрасывать ошибку, если переданное значение для value_compare_func не является функцией', () => {
|
|
29
|
+
expect(() => array_udiff('not a function', [])).toThrow(TypeError);
|
|
30
|
+
expect(() => array_udiff('not a function', [])).toThrow(
|
|
31
|
+
'Параметр "value_compare_func" должен быть функцией.',
|
|
32
|
+
);
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
test('Должна выбрасывать ошибку, если переданное значение для original_array не является массивом', () => {
|
|
36
|
+
expect(() => array_udiff(value_compare_func, 'not an array')).toThrow(TypeError);
|
|
37
|
+
expect(() => array_udiff(value_compare_func, 'not an array')).toThrow(
|
|
38
|
+
'Параметр "original_array" должен быть массивом.',
|
|
39
|
+
);
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
test('Должна выбрасывать ошибку, если переданное значение для arrays не является массивом', () => {
|
|
43
|
+
expect(() => array_udiff(value_compare_func, [], 'not an array')).toThrow(TypeError);
|
|
44
|
+
expect(() => array_udiff(value_compare_func, [], 'not an array')).toThrow(
|
|
45
|
+
'Параметр "arrays" должен быть массивом.',
|
|
46
|
+
);
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
test('Должна корректно обрабатывать массивы с различными типами данных', () => {
|
|
50
|
+
const original_array = [1, '2', true];
|
|
51
|
+
const array1 = [1, 2, false];
|
|
52
|
+
const result = array_udiff(value_compare_func, original_array, array1);
|
|
53
|
+
expect(result).toEqual({ 1: '2', 2: true });
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
test('Должна корректно обрабатывать массивы с объектами', () => {
|
|
57
|
+
const original_array = [{ id: 1 }, { id: 2 }, { id: 3 }];
|
|
58
|
+
const array1 = [{ id: 1 }, { id: 2 }];
|
|
59
|
+
const result = array_udiff(
|
|
60
|
+
(a, b) => JSON.stringify(a) === JSON.stringify(b),
|
|
61
|
+
original_array,
|
|
62
|
+
array1,
|
|
63
|
+
);
|
|
64
|
+
expect(result).toEqual({ 2: { id: 3 } });
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
test('Должна корректно обрабатывать ассоциативные массивы', () => {
|
|
68
|
+
const original_array = { a: 1, b: 2, c: 3 };
|
|
69
|
+
const array1 = { a: 1, b: 2 };
|
|
70
|
+
const result = array_udiff(value_compare_func, original_array, array1);
|
|
71
|
+
expect(result).toEqual({ c: 3 });
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
test('Должна корректно обрабатывать несколько массивов для сравнения', () => {
|
|
75
|
+
const original_array = [1, 2, 3, 4];
|
|
76
|
+
const array1 = [1, 2];
|
|
77
|
+
const array2 = [3];
|
|
78
|
+
const result = array_udiff(value_compare_func, original_array, array1, array2);
|
|
79
|
+
expect(result).toEqual({ 3: 4 });
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
test('Должна корректно обрабатывать массивы с вложенными структурами', () => {
|
|
83
|
+
const original_array = [
|
|
84
|
+
{ id: 1, data: [1, 2] },
|
|
85
|
+
{ id: 2, data: [3, 4] },
|
|
86
|
+
];
|
|
87
|
+
const array1 = [{ id: 1, data: [1, 2] }];
|
|
88
|
+
const result = array_udiff(
|
|
89
|
+
(a, b) => JSON.stringify(a) === JSON.stringify(b),
|
|
90
|
+
original_array,
|
|
91
|
+
array1,
|
|
92
|
+
);
|
|
93
|
+
expect(result).toEqual({ 1: { id: 2, data: [3, 4] } });
|
|
94
|
+
});
|
|
95
|
+
});
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { expect, test, describe } from '@jest/globals';
|
|
2
|
+
import { array_udiff_assoc } from '../../../index.mjs';
|
|
3
|
+
|
|
4
|
+
describe('Функция array_udiff_assoc', () => {
|
|
5
|
+
const value_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_udiff_assoc(value_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_udiff_assoc(value_compare_func, original_array, array1);
|
|
18
|
+
expect(result).toEqual({});
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
test('Должна корректно обрабатывать пустые массивы', () => {
|
|
22
|
+
const original_array = {};
|
|
23
|
+
const array1 = {};
|
|
24
|
+
const result = array_udiff_assoc(value_compare_func, original_array, array1);
|
|
25
|
+
expect(result).toEqual({});
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
test('Должна выбрасывать ошибку, если переданное значение для value_compare_func не является функцией', () => {
|
|
29
|
+
expect(() => array_udiff_assoc('not a function', {})).toThrow(TypeError);
|
|
30
|
+
expect(() => array_udiff_assoc('not a function', {})).toThrow(
|
|
31
|
+
'Параметр "value_compare_func" должен быть функцией.',
|
|
32
|
+
);
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
test('Должна выбрасывать ошибку, если переданное значение для original_array не является массивом', () => {
|
|
36
|
+
expect(() => array_udiff_assoc(value_compare_func, 'not an array')).toThrow(TypeError);
|
|
37
|
+
expect(() => array_udiff_assoc(value_compare_func, 'not an array')).toThrow(
|
|
38
|
+
'Параметр "original_array" должен быть массивом.',
|
|
39
|
+
);
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
test('Должна выбрасывать ошибку, если переданное значение для arrays не является массивом', () => {
|
|
43
|
+
expect(() => array_udiff_assoc(value_compare_func, {}, 'not an array')).toThrow(TypeError);
|
|
44
|
+
expect(() => array_udiff_assoc(value_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_udiff_assoc(value_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_udiff_assoc(value_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_udiff_assoc(
|
|
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,89 @@
|
|
|
1
|
+
import { expect, test, describe } from '@jest/globals';
|
|
2
|
+
import { array_udiff_uassoc } from '../../../index.mjs';
|
|
3
|
+
|
|
4
|
+
describe('Функция array_udiff_uassoc', () => {
|
|
5
|
+
const value_compare_func = (a, b) => a === b;
|
|
6
|
+
const key_compare_func = (a, b) => a === b;
|
|
7
|
+
|
|
8
|
+
test('Должна возвращать элементы из первого массива, которые отсутствуют в других массивах', () => {
|
|
9
|
+
const original_array = { a: 1, b: 2, c: 3 };
|
|
10
|
+
const array1 = { a: 1, b: 2 };
|
|
11
|
+
const result = array_udiff_uassoc(
|
|
12
|
+
value_compare_func,
|
|
13
|
+
key_compare_func,
|
|
14
|
+
original_array,
|
|
15
|
+
array1,
|
|
16
|
+
);
|
|
17
|
+
expect(result).toEqual({ c: 3 });
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
test('Должна возвращать пустой объект, если все элементы первого массива присутствуют в других массивах', () => {
|
|
21
|
+
const original_array = { a: 1, b: 2 };
|
|
22
|
+
const array1 = { a: 1, b: 2 };
|
|
23
|
+
const result = array_udiff_uassoc(
|
|
24
|
+
value_compare_func,
|
|
25
|
+
key_compare_func,
|
|
26
|
+
original_array,
|
|
27
|
+
array1,
|
|
28
|
+
);
|
|
29
|
+
expect(result).toEqual({});
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
test('Должна корректно обрабатывать пустые массивы', () => {
|
|
33
|
+
const original_array = {};
|
|
34
|
+
const array1 = {};
|
|
35
|
+
const result = array_udiff_uassoc(
|
|
36
|
+
value_compare_func,
|
|
37
|
+
key_compare_func,
|
|
38
|
+
original_array,
|
|
39
|
+
array1,
|
|
40
|
+
);
|
|
41
|
+
expect(result).toEqual({});
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
test('Должна выбрасывать ошибку, если переданное значение для value_compare_func не является функцией', () => {
|
|
45
|
+
expect(() => array_udiff_uassoc('not a function', key_compare_func, {})).toThrow(TypeError);
|
|
46
|
+
expect(() => array_udiff_uassoc('not a function', key_compare_func, {})).toThrow(
|
|
47
|
+
'Параметр "value_compare_func" должен быть функцией.',
|
|
48
|
+
);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
test('Должна выбрасывать ошибку, если переданное значение для key_compare_func не является функцией', () => {
|
|
52
|
+
expect(() => array_udiff_uassoc(value_compare_func, 'not a function', {})).toThrow(
|
|
53
|
+
TypeError,
|
|
54
|
+
);
|
|
55
|
+
expect(() => array_udiff_uassoc(value_compare_func, 'not a function', {})).toThrow(
|
|
56
|
+
'Параметр "key_compare_func" должен быть функцией.',
|
|
57
|
+
);
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
test('Должна выбрасывать ошибку, если переданное значение для original_array не является массивом', () => {
|
|
61
|
+
expect(() =>
|
|
62
|
+
array_udiff_uassoc(value_compare_func, key_compare_func, 'not an array'),
|
|
63
|
+
).toThrow(TypeError);
|
|
64
|
+
expect(() =>
|
|
65
|
+
array_udiff_uassoc(value_compare_func, key_compare_func, 'not an array'),
|
|
66
|
+
).toThrow('Параметр "original_array" должен быть массивом.');
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
test('Должна выбрасывать ошибку, если переданное значение для arrays не является массивом', () => {
|
|
70
|
+
expect(() =>
|
|
71
|
+
array_udiff_uassoc(value_compare_func, key_compare_func, {}, 'not an array'),
|
|
72
|
+
).toThrow(TypeError);
|
|
73
|
+
expect(() =>
|
|
74
|
+
array_udiff_uassoc(value_compare_func, key_compare_func, {}, 'not an array'),
|
|
75
|
+
).toThrow('Параметр "arrays" должен быть массивом.');
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
test('Должна корректно обрабатывать массивы с различными типами данных', () => {
|
|
79
|
+
const original_array = { a: 1, b: '2', c: true };
|
|
80
|
+
const array1 = { a: 1, b: 2, d: false };
|
|
81
|
+
const result = array_udiff_uassoc(
|
|
82
|
+
value_compare_func,
|
|
83
|
+
key_compare_func,
|
|
84
|
+
original_array,
|
|
85
|
+
array1,
|
|
86
|
+
);
|
|
87
|
+
expect(result).toEqual({ b: '2', c: true });
|
|
88
|
+
});
|
|
89
|
+
});
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { expect, test, describe } from '@jest/globals';
|
|
2
|
+
import { array_uintersect } from '../../../index.mjs';
|
|
3
|
+
|
|
4
|
+
describe('Функция array_uintersect', () => {
|
|
5
|
+
const value_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 array2 = { b: 2, c: 3 };
|
|
11
|
+
const result = array_uintersect(value_compare_func, original_array, array1, array2);
|
|
12
|
+
expect(result).toEqual({ a: 1, b: 2, c: 3 });
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
test('Должна возвращать пустой объект, если все элементы первого массива отсутствуют в других массивах', () => {
|
|
16
|
+
const original_array = { a: 1, b: 2 };
|
|
17
|
+
const array1 = { c: 3, d: 4 };
|
|
18
|
+
const result = array_uintersect(value_compare_func, original_array, array1);
|
|
19
|
+
expect(result).toEqual({});
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
test('Должна корректно обрабатывать пустые массивы', () => {
|
|
23
|
+
const original_array = {};
|
|
24
|
+
const array1 = {};
|
|
25
|
+
const result = array_uintersect(value_compare_func, original_array, array1);
|
|
26
|
+
expect(result).toEqual({});
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
test('Должна выбрасывать ошибку, если переданное значение для value_compare_func не является функцией', () => {
|
|
30
|
+
expect(() => array_uintersect('not a function', {})).toThrow(TypeError);
|
|
31
|
+
expect(() => array_uintersect('not a function', {})).toThrow(
|
|
32
|
+
'Параметр "value_compare_func" должен быть функцией.',
|
|
33
|
+
);
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
test('Должна выбрасывать ошибку, если переданное значение для original_array не является массивом', () => {
|
|
37
|
+
expect(() => array_uintersect(value_compare_func, 'not an array')).toThrow(TypeError);
|
|
38
|
+
expect(() => array_uintersect(value_compare_func, 'not an array')).toThrow(
|
|
39
|
+
'Параметр "original_array" должен быть массивом.',
|
|
40
|
+
);
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
test('Должна выбрасывать ошибку, если переданное значение для arrays не является массивом', () => {
|
|
44
|
+
expect(() => array_uintersect(value_compare_func, {}, 'not an array')).toThrow(TypeError);
|
|
45
|
+
expect(() => array_uintersect(value_compare_func, {}, 'not an array')).toThrow(
|
|
46
|
+
'Параметр "arrays" должен быть массивом.',
|
|
47
|
+
);
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
test('Должна корректно обрабатывать массивы с различными типами данных', () => {
|
|
51
|
+
const original_array = { a: 1, b: '2', c: true };
|
|
52
|
+
const array1 = { a: 1, b: 2, d: false };
|
|
53
|
+
const result = array_uintersect(value_compare_func, original_array, array1);
|
|
54
|
+
expect(result).toEqual({ a: 1 });
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
test('Должна корректно обрабатывать несколько массивов для сравнения', () => {
|
|
58
|
+
const original_array = { a: 1, b: 2, c: 3, d: 4 };
|
|
59
|
+
const array1 = { a: 1, b: 2 };
|
|
60
|
+
const array2 = { c: 3 };
|
|
61
|
+
const result = array_uintersect(value_compare_func, original_array, array1, array2);
|
|
62
|
+
expect(result).toEqual({ a: 1, b: 2, c: 3 });
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
test('Должна корректно обрабатывать массивы с вложенными структурами', () => {
|
|
66
|
+
const original_array = {
|
|
67
|
+
a: { id: 1, data: [1, 2] },
|
|
68
|
+
b: { id: 2, data: [3, 4] },
|
|
69
|
+
};
|
|
70
|
+
const array1 = { a: { id: 1, data: [1, 2] } };
|
|
71
|
+
const result = array_uintersect(
|
|
72
|
+
(a, b) => JSON.stringify(a) === JSON.stringify(b),
|
|
73
|
+
original_array,
|
|
74
|
+
array1,
|
|
75
|
+
);
|
|
76
|
+
expect(result).toEqual({ a: { id: 1, data: [1, 2] } });
|
|
77
|
+
});
|
|
78
|
+
});
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { expect, test, describe } from '@jest/globals';
|
|
2
|
+
import { array_uintersect_assoc } from '../../../index.mjs';
|
|
3
|
+
|
|
4
|
+
describe('Функция array_uintersect_assoc', () => {
|
|
5
|
+
const value_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 array2 = { b: 2, c: 3 };
|
|
11
|
+
const result = array_uintersect_assoc(value_compare_func, original_array, array1, array2);
|
|
12
|
+
expect(result).toEqual({ a: 1, b: 2, c: 3 });
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
test('Должна возвращать пустой объект, если все элементы первого массива отсутствуют в других массивах', () => {
|
|
16
|
+
const original_array = { a: 1, b: 2 };
|
|
17
|
+
const array1 = { c: 3, d: 4 };
|
|
18
|
+
const result = array_uintersect_assoc(value_compare_func, original_array, array1);
|
|
19
|
+
expect(result).toEqual({});
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
test('Должна корректно обрабатывать пустые массивы', () => {
|
|
23
|
+
const original_array = {};
|
|
24
|
+
const array1 = {};
|
|
25
|
+
const result = array_uintersect_assoc(value_compare_func, original_array, array1);
|
|
26
|
+
expect(result).toEqual({});
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
test('Должна выбрасывать ошибку, если переданное значение для value_compare_func не является функцией', () => {
|
|
30
|
+
expect(() => array_uintersect_assoc('not a function', {})).toThrow(TypeError);
|
|
31
|
+
expect(() => array_uintersect_assoc('not a function', {})).toThrow(
|
|
32
|
+
'Параметр "value_compare_func" должен быть функцией.',
|
|
33
|
+
);
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
test('Должна выбрасывать ошибку, если переданное значение для original_array не является массивом', () => {
|
|
37
|
+
expect(() => array_uintersect_assoc(value_compare_func, 'not an array')).toThrow(TypeError);
|
|
38
|
+
expect(() => array_uintersect_assoc(value_compare_func, 'not an array')).toThrow(
|
|
39
|
+
'Параметр "original_array" должен быть массивом.',
|
|
40
|
+
);
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
test('Должна выбрасывать ошибку, если переданное значение для arrays не является массивом', () => {
|
|
44
|
+
expect(() => array_uintersect_assoc(value_compare_func, {}, 'not an array')).toThrow(
|
|
45
|
+
TypeError,
|
|
46
|
+
);
|
|
47
|
+
expect(() => array_uintersect_assoc(value_compare_func, {}, 'not an array')).toThrow(
|
|
48
|
+
'Параметр "arrays" должен быть массивом.',
|
|
49
|
+
);
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
test('Должна корректно обрабатывать массивы с различными типами данных', () => {
|
|
53
|
+
const original_array = { a: 1, b: '2', c: true };
|
|
54
|
+
const array1 = { a: 1, b: 2, d: false };
|
|
55
|
+
const result = array_uintersect_assoc(value_compare_func, original_array, array1);
|
|
56
|
+
expect(result).toEqual({ a: 1 });
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
test('Должна корректно обрабатывать несколько массивов для сравнения', () => {
|
|
60
|
+
const original_array = { a: 1, b: 2, c: 3, d: 4 };
|
|
61
|
+
const array1 = { a: 1, b: 2 };
|
|
62
|
+
const array2 = { c: 3 };
|
|
63
|
+
const result = array_uintersect_assoc(value_compare_func, original_array, array1, array2);
|
|
64
|
+
expect(result).toEqual({ a: 1, b: 2, c: 3 });
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
test('Должна корректно обрабатывать массивы с вложенными структурами', () => {
|
|
68
|
+
const original_array = {
|
|
69
|
+
a: { id: 1, data: [1, 2] },
|
|
70
|
+
b: { id: 2, data: [3, 4] },
|
|
71
|
+
};
|
|
72
|
+
const array1 = { a: { id: 1, data: [1, 2] } };
|
|
73
|
+
const result = array_uintersect_assoc(
|
|
74
|
+
(a, b) => JSON.stringify(a) === JSON.stringify(b),
|
|
75
|
+
original_array,
|
|
76
|
+
array1,
|
|
77
|
+
);
|
|
78
|
+
expect(result).toEqual({ a: { id: 1, data: [1, 2] } });
|
|
79
|
+
});
|
|
80
|
+
});
|