elements_are

Macro elements_are 

Source
macro_rules! elements_are {
    ([$($matcher:expr),* $(,)?]) => { ... };
    ($($matcher:expr),* $(,)?) => { ... };
}
Expand description

Matches a JSON array with elements that satisfy the given matchers, in order.

Each element of the JSON array is matched against a corresponding Matcher. The array must have the same length as the list of matchers, and all matchers must succeed.

This macro supports two forms:

  • Bracketed: elements_are!([matcher1, matcher2, ...])
  • Unbracketed: elements_are!(matcher1, matcher2, ...)

Callers should prefer the public-facing json::elements_are! macro.

§Notes

Both JSON-aware and native GoogleTest matchers (such as starts_with, contains_substring) can be used directly. Wrapping with json::primitive! is no longer needed.

§Example

let value = j!(["alex", "bart", "cucumberbatch"]);
assert_that!(
    value,
    json::elements_are![starts_with("a"), eq("bart"), char_count(eq(13))]
);

Nested example:

let value = j!([["x", "y"], ["z"]]);
assert_that!(
    value,
    json::elements_are![
        json::elements_are![eq("x"), eq("y")],
        json::elements_are![eq("z")]
    ]
);

§See also

googletest::matcher::Matcher, crate::json::elements_are!