Uses statrs for numerical functions REFACTOR: Put statistical functions on its own module This might seem counter-intuitive but the wasm build after this refactor is 1528 bytes smaller :)
58 lines
1.6 KiB
Rust
58 lines
1.6 KiB
Rust
#![allow(clippy::unwrap_used)]
|
|
|
|
use crate::test::util::new_empty_model;
|
|
|
|
#[test]
|
|
fn test_fn_covariance_smoke() {
|
|
let mut model = new_empty_model();
|
|
model._set("A1", "3");
|
|
model._set("A2", "9");
|
|
model._set("A3", "2");
|
|
model._set("A4", "7");
|
|
model._set("A5", "4");
|
|
model._set("A6", "12");
|
|
|
|
model._set("B1", "5");
|
|
model._set("B2", "15");
|
|
model._set("B3", "6");
|
|
model._set("B4", "17");
|
|
model._set("B5", "8");
|
|
model._set("B6", "20");
|
|
|
|
model._set("C1", "=COVARIANCE.P(A1:A6, B1:B6)");
|
|
model._set("C2", "=COVARIANCE.S(A1:A6, B1:B6)");
|
|
model.evaluate();
|
|
|
|
assert_eq!(model._get_text("C1"), *"19.194444444");
|
|
assert_eq!(model._get_text("C2"), *"23.033333333");
|
|
}
|
|
|
|
#[test]
|
|
fn arrays_mixed() {
|
|
let mut model = new_empty_model();
|
|
|
|
model._set("A2", "2");
|
|
model._set("A3", "4");
|
|
model._set("A4", "6");
|
|
model._set("A5", "8");
|
|
|
|
model._set("B2", "1");
|
|
model._set("B3", "3");
|
|
model._set("B4", "5");
|
|
model._set("B5", "7");
|
|
|
|
model._set("C1", "=COVARIANCE.P(A2:A5, {1,3,5,7})");
|
|
model._set("C2", "=COVARIANCE.S(A2:A5, {1,3,5,7})");
|
|
model._set("C3", "=COVARIANCE.P(A2:A5, B2:B5)");
|
|
model._set("C4", "=COVARIANCE.S(A2:A5, B2:B5)");
|
|
model._set("C5", "=COVARIANCE.P({2,4,6,8}, B2:B5)");
|
|
model._set("C6", "=COVARIANCE.S({2,4,6,8}, B2:B5)");
|
|
model._set("C7", "=COVARIANCE.P({2,4,6,8}, {1,3,5,7})");
|
|
model._set("C8", "=COVARIANCE.S({2,4,6,8}, {1,3,5,7})");
|
|
|
|
model.evaluate();
|
|
|
|
assert_eq!(model._get_text("C1"), *"5");
|
|
assert_eq!(model._get_text("C2"), *"6.666666667");
|
|
}
|