rule "array_contains"
when
    true
then
    set_field("contains_number", array_contains([1, 2, 3, 4, 5], 1));
    set_field("does_not_contain_number", array_contains([1, 2, 3, 4, 5], 7));
    set_field("contains_string", array_contains(["test", "test2"], "test"));
    set_field("contains_string_case_insensitive", array_contains(["test", "test2"], "TEST"));
    set_field("contains_string_case_sensitive", array_contains(["test", "test2"], "TEST", true));

    let json = parse_json(to_string($message.json_with_arrays));
            let selectedPath = select_jsonpath(json: json,
                paths: { numbers: "$.numbers[*].value",
                         number: "$.numbers[0].value",
                         decimals: "$.decimals[*].value",
                         booleans: "$.booleans[*].value",
                         strings: "$.strings[*].value",
                         has_null_value: "$.has_null_value[*].value"});

    set_field(field: "path_array_strings_contains", value: array_contains(elements: selectedPath.strings, value: "two"));
    set_field(field: "path_array_numbers_contains", value: array_contains(elements: selectedPath.numbers, value: 2));
    set_field(field: "path_array_decimals_contains", value: array_contains(elements: selectedPath.decimals, value: 2.2));
    set_field(field: "path_array_booleans_contains", value: array_contains(elements: selectedPath.booleans, value: true));

    set_field(field: "path_array_not_strings_contains", value: array_contains(elements: selectedPath.strings, value: "ten"));
    set_field(field: "path_array_not_numbers_contains", value: array_contains(elements: selectedPath.numbers, value: 10));
    set_field(field: "path_array_not_decimals_contains", value: array_contains(elements: selectedPath.decimals, value: 10.1));
    set_field(field: "path_array_not_booleans_contains", value: array_contains(elements: selectedPath.booleans, value: false));
    set_field("contains_null_array", array_contains(selectedPath.nullPath, "test"));
    set_field("contains_null_value", array_contains(selectedPath.strings, selectedPath.nullPath));
    set_field("contains_null_json_value_in_array_string", array_contains(selectedPath.has_null_value, "two"));
    set_field("contains_null_json_value_in_array_int", array_contains(selectedPath.has_null_value, 3));

    trigger_test();
end
