mod helpers;
use helpers::eval;
use truecalc_core::{ErrorKind, Value};
fn arr(vals: Vec<Value>) -> Value {
Value::Array(vals)
}
#[test]
fn search_broadcasts_over_within_text_array() {
assert_eq!(
eval(r#"=ARRAYFORMULA(SEARCH("a", {"apple","berry"}))"#),
arr(vec![Value::Number(1.0), Value::Error(ErrorKind::Value)])
);
}
#[test]
fn search_broadcasts_over_find_text_array() {
assert_eq!(
eval(r#"=ARRAYFORMULA(SEARCH({"a","b"}, "abc"))"#),
arr(vec![Value::Number(1.0), Value::Number(2.0)])
);
}
#[test]
fn search_broadcasts_over_both_arrays() {
assert_eq!(
eval(r#"=ARRAYFORMULA(SEARCH({"a","b"}, {"cat","bat"}))"#),
arr(vec![Value::Number(2.0), Value::Number(1.0)])
);
}
#[test]
fn search_without_arrayformula_still_errors_on_array_arg() {
assert!(matches!(
eval(r#"=SEARCH("a", {"apple","berry"})"#),
Value::Error(ErrorKind::Value)
));
}
#[test]
fn find_broadcasts_over_within_text_array() {
assert_eq!(
eval(r#"=ARRAYFORMULA(FIND("a", {"cat","dog"}))"#),
arr(vec![Value::Number(2.0), Value::Error(ErrorKind::Value)])
);
}
#[test]
fn find_broadcasts_over_find_text_array() {
assert_eq!(
eval(r#"=ARRAYFORMULA(FIND({"c","d"}, "cat dog"))"#),
arr(vec![Value::Number(1.0), Value::Number(5.0)])
);
}
#[test]
fn exact_broadcasts_over_first_array() {
assert_eq!(
eval(r#"=ARRAYFORMULA(EXACT({"a","b"}, "a"))"#),
arr(vec![Value::Bool(true), Value::Bool(false)])
);
}
#[test]
fn exact_broadcasts_over_second_array() {
assert_eq!(
eval(r#"=ARRAYFORMULA(EXACT("a", {"a","b"}))"#),
arr(vec![Value::Bool(true), Value::Bool(false)])
);
}
#[test]
fn exact_broadcasts_over_both_arrays() {
assert_eq!(
eval(r#"=ARRAYFORMULA(EXACT({"a","b"}, {"a","c"}))"#),
arr(vec![Value::Bool(true), Value::Bool(false)])
);
}