### SUBSTRAIT_SCALAR_TEST: v1.0
### SUBSTRAIT_INCLUDE: extension:io.substrait:functions_list
### SUBSTRAIT_DEPENDENCY: extension:io.substrait:functions_comparison
# returns_true: All elements match the predicate
all_match([1, 2, 3]::list<i32>, (x -> gt(x, 0::i32))::func<i32 -> bool?>) = true::bool?
all_match([5, 6, 7]::list<i32>, (x -> gt(x, 4::i32))::func<i32 -> bool?>) = true::bool?
# returns_false: At least one element fails the predicate
all_match([1, 2, 3]::list<i32>, (x -> gt(x, 2::i32))::func<i32 -> bool?>) = false::bool?
all_match([1, 2, 3]::list<i32>, (x -> lt(x, 3::i32))::func<i32 -> bool?>) = false::bool?
# empty: Empty list returns true (vacuously true)
all_match([]::list<i32>, (x -> gt(x, 0::i32))::func<i32 -> bool?>) = true::bool?
# null_list: Null list input returns null
all_match(null::list?<i32>, (x -> gt(x, 0::i32))::func<i32 -> bool?>) = null::bool?
# null_predicate: Null predicate returns null
all_match([1, 2, 3]::list<i32>, null::func?<i32 -> bool?>) = null::bool?
# three_valued_logic: Null predicate results follow three-valued logic
all_match([1, Null, 2]::list<i32?>, (x -> gt(x, 0::i32))::func<i32? -> bool?>) = Null::bool?
all_match([1, Null, 0]::list<i32?>, (x -> gt(x, 0::i32))::func<i32? -> bool?>) = false::bool?