Files
IronCalc/base/src/test/test_fn_choose.rs
2023-11-20 10:46:19 +01:00

51 lines
1.5 KiB
Rust

#![allow(clippy::unwrap_used)]
use crate::test::util::new_empty_model;
#[test]
fn test_fn_choose_args_number() {
let mut model = new_empty_model();
model._set("A1", "=CHOOSE()");
model._set("A2", "=CHOOSE(1)");
model.evaluate();
assert_eq!(model._get_text("A1"), *"#ERROR!");
assert_eq!(model._get_text("A2"), *"#ERROR!");
}
#[test]
fn test_fn_choose_incorrect_index() {
let mut model = new_empty_model();
model._set("A1", "=CHOOSE(-1, 42)");
model._set("A2", "=CHOOSE(0, 42)");
model._set("A3", "=CHOOSE(1, 42)");
model._set("A4", "=CHOOSE(2, 42)");
model._set("B1", "TEST");
model._set("A5", "=CHOOSE(B1, 42)");
model.evaluate();
assert_eq!(model._get_text("A1"), *"#VALUE!");
assert_eq!(model._get_text("A2"), *"#VALUE!");
assert_eq!(model._get_text("A3"), *"42");
assert_eq!(model._get_text("A4"), *"#VALUE!");
assert_eq!(model._get_text("A5"), *"#VALUE!");
}
#[test]
fn test_fn_choose_basic_tests() {
let mut model = new_empty_model();
model._set("B1", "1");
model._set("B2", "2");
model._set("B3", "3");
model._set("A1", "=CHOOSE(3.1, B1, B2, B3)");
model._set("A2", "=SUM(B1:CHOOSE(1, B1, B2, B3))");
model._set("A3", "=SUM(CHOOSE(3, B1:B1, B1:B2, B1:B3))");
model._set("A4", "=CHOOSE(3,\"Wide\",115,\"world\",8)");
model.evaluate();
assert_eq!(model._get_text("A1"), *"3");
assert_eq!(model._get_text("A2"), *"1");
assert_eq!(model._get_text("A3"), *"6");
assert_eq!(model._get_text("A4"), *"world");
}