UPDATE: Dump of initial files
This commit is contained in:
345
base/src/test/engineering/test_number_basis.rs
Normal file
345
base/src/test/engineering/test_number_basis.rs
Normal file
@@ -0,0 +1,345 @@
|
||||
use crate::test::util::new_empty_model;
|
||||
|
||||
#[test]
|
||||
fn fn_bin2dec() {
|
||||
let mut model = new_empty_model();
|
||||
model._set("A1", "=BIN2DEC(1100100)");
|
||||
model._set("A2", "=BIN2DEC(1111111111)");
|
||||
|
||||
model._set("B1", "=BIN2DEC()");
|
||||
model._set("B2", "=BIN2DEC(1,2)");
|
||||
|
||||
model.evaluate();
|
||||
|
||||
assert_eq!(model._get_text("A1"), "100");
|
||||
assert_eq!(model._get_text("A2"), "-1");
|
||||
assert_eq!(model._get_text("B1"), *"#ERROR!");
|
||||
assert_eq!(model._get_text("B2"), *"#ERROR!");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fn_bin2hex() {
|
||||
let mut model = new_empty_model();
|
||||
model._set("A1", "=BIN2HEX(11111011, 4)");
|
||||
model._set("A2", "=BIN2HEX(1110)");
|
||||
model._set("A3", "=BIN2HEX(1111111111)");
|
||||
model._set("A4", "=BIN2HEX(1100011011)");
|
||||
|
||||
model._set("B1", "=BIN2HEX()");
|
||||
model._set("B2", "=BIN2HEX(1,2,3)");
|
||||
|
||||
model.evaluate();
|
||||
|
||||
assert_eq!(model._get_text("A1"), "00FB");
|
||||
assert_eq!(model._get_text("A2"), "E");
|
||||
assert_eq!(model._get_text("A3"), "FFFFFFFFFF");
|
||||
assert_eq!(model._get_text("A4"), "FFFFFFFF1B");
|
||||
assert_eq!(model._get_text("B1"), *"#ERROR!");
|
||||
assert_eq!(model._get_text("B2"), *"#ERROR!");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fn_bin2oct() {
|
||||
let mut model = new_empty_model();
|
||||
model._set("A1", "=BIN2OCT(11111011, 4)");
|
||||
model._set("A2", "=BIN2OCT(1110)");
|
||||
model._set("A3", "=BIN2OCT(1111111111)");
|
||||
model._set("A4", "=BIN2OCT(1100011011)");
|
||||
|
||||
model._set("B1", "=BIN2OCT()");
|
||||
model._set("B2", "=BIN2OCT(1,2,3)");
|
||||
|
||||
model.evaluate();
|
||||
|
||||
assert_eq!(model._get_text("A1"), "0373");
|
||||
assert_eq!(model._get_text("A2"), "16");
|
||||
assert_eq!(model._get_text("A3"), "7777777777");
|
||||
assert_eq!(model._get_text("A4"), "7777777433");
|
||||
assert_eq!(model._get_text("B1"), *"#ERROR!");
|
||||
assert_eq!(model._get_text("B2"), *"#ERROR!");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fn_dec2bin() {
|
||||
let mut model = new_empty_model();
|
||||
model._set("A1", "=DEC2BIN(9, 4)");
|
||||
model._set("A2", "=DEC2BIN(-100)");
|
||||
model._set("A3", "=DEC2BIN(-1)");
|
||||
model._set("A4", "=DEC2BIN(0, 3)");
|
||||
|
||||
model._set("B1", "=DEC2BIN()");
|
||||
model._set("B2", "=DEC2BIN(1,2,3)");
|
||||
|
||||
model.evaluate();
|
||||
|
||||
assert_eq!(model._get_text("A1"), "1001");
|
||||
assert_eq!(model._get_text("A2"), "1110011100");
|
||||
assert_eq!(model._get_text("A3"), "1111111111");
|
||||
assert_eq!(model._get_text("A4"), "000");
|
||||
|
||||
assert_eq!(model._get_text("B1"), *"#ERROR!");
|
||||
assert_eq!(model._get_text("B2"), *"#ERROR!");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fn_dec2hex() {
|
||||
let mut model = new_empty_model();
|
||||
model._set("A1", "=DEC2HEX(100, 4)");
|
||||
model._set("A2", "=DEC2HEX(-54)");
|
||||
model._set("A3", "=DEC2HEX(28)");
|
||||
model._set("A4", "=DEC2HEX(64, 1)");
|
||||
|
||||
model._set("B1", "=DEC2HEX()");
|
||||
model._set("B2", "=DEC2HEX(1,2,3)");
|
||||
|
||||
model.evaluate();
|
||||
|
||||
assert_eq!(model._get_text("A1"), "0064");
|
||||
assert_eq!(model._get_text("A2"), "FFFFFFFFCA");
|
||||
assert_eq!(model._get_text("A3"), "1C");
|
||||
assert_eq!(model._get_text("A4"), "#NUM!");
|
||||
|
||||
assert_eq!(model._get_text("B1"), *"#ERROR!");
|
||||
assert_eq!(model._get_text("B2"), *"#ERROR!");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fn_dec2oct() {
|
||||
let mut model = new_empty_model();
|
||||
model._set("A1", "=DEC2OCT(58, 3)");
|
||||
model._set("A2", "=DEC2OCT(-100)");
|
||||
|
||||
model._set("B1", "=DEC2OCT()");
|
||||
model._set("B2", "=DEC2OCT(1,2,3)");
|
||||
|
||||
model.evaluate();
|
||||
|
||||
assert_eq!(model._get_text("A1"), "072");
|
||||
assert_eq!(model._get_text("A2"), "7777777634");
|
||||
|
||||
assert_eq!(model._get_text("B1"), *"#ERROR!");
|
||||
assert_eq!(model._get_text("B2"), *"#ERROR!");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fn_hex2bin() {
|
||||
let mut model = new_empty_model();
|
||||
model._set("A1", r#"=HEX2BIN("F", 8)"#);
|
||||
model._set("A2", r#"=HEX2BIN("B7")"#);
|
||||
model._set("A3", r#"=HEX2BIN("FFFFFFFFFF")"#);
|
||||
|
||||
model._set("B1", "=HEX2BIN()");
|
||||
model._set("B2", "=HEX2BIN(1,2,3)");
|
||||
|
||||
model.evaluate();
|
||||
|
||||
assert_eq!(model._get_text("A1"), "00001111");
|
||||
assert_eq!(model._get_text("A2"), "10110111");
|
||||
assert_eq!(model._get_text("A3"), "1111111111");
|
||||
|
||||
assert_eq!(model._get_text("B1"), *"#ERROR!");
|
||||
assert_eq!(model._get_text("B2"), *"#ERROR!");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fn_hex2dec() {
|
||||
let mut model = new_empty_model();
|
||||
model._set("A1", r#"=HEX2DEC("A5")"#);
|
||||
model._set("A2", r#"=HEX2DEC("FFFFFFFF5B")"#);
|
||||
model._set("A3", r#"=HEX2DEC("3DA408B9")"#);
|
||||
model._set("A4", r#"=HEX2DEC("FE")"#);
|
||||
|
||||
model._set("B1", "=HEX2DEC()");
|
||||
model._set("B2", "=HHEX2DEC(1,2,3)");
|
||||
|
||||
model.evaluate();
|
||||
|
||||
assert_eq!(model._get_text("A1"), "165");
|
||||
assert_eq!(model._get_text("A2"), "-165");
|
||||
assert_eq!(model._get_text("A3"), "1034160313");
|
||||
assert_eq!(model._get_text("A4"), "254");
|
||||
|
||||
assert_eq!(model._get_text("B1"), *"#ERROR!");
|
||||
assert_eq!(model._get_text("B2"), *"#ERROR!");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fn_hex2oct() {
|
||||
let mut model = new_empty_model();
|
||||
model._set("A1", r#"=HEX2OCT("F", 3)"#);
|
||||
model._set("A2", r#"=HEX2OCT("3B4E")"#);
|
||||
model._set("A3", r#"=HEX2OCT("FFFFFFFF00")"#);
|
||||
|
||||
model._set("B1", "=HEX2OCT()");
|
||||
model._set("B2", "=HEX2OCT(1,2,3)");
|
||||
|
||||
model.evaluate();
|
||||
|
||||
assert_eq!(model._get_text("A1"), "017");
|
||||
assert_eq!(model._get_text("A2"), "35516");
|
||||
assert_eq!(model._get_text("A3"), "7777777400");
|
||||
|
||||
assert_eq!(model._get_text("B1"), *"#ERROR!");
|
||||
assert_eq!(model._get_text("B2"), *"#ERROR!");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fn_oct2bin() {
|
||||
let mut model = new_empty_model();
|
||||
model._set("A1", r#"=OCT2BIN(3, 3)"#);
|
||||
model._set("A2", r#"=OCT2BIN(7777777000)"#);
|
||||
|
||||
// bounds
|
||||
model._set("G1", r#"=OCT2BIN(777)"#);
|
||||
model._set("G2", r#"=OCT2BIN(778)"#);
|
||||
|
||||
model._set("B1", "=OCT2BIN()");
|
||||
model._set("B2", "=OCT2BIN(1,2,3)");
|
||||
|
||||
model.evaluate();
|
||||
|
||||
assert_eq!(model._get_text("A1"), "011");
|
||||
assert_eq!(model._get_text("A2"), "1000000000");
|
||||
|
||||
assert_eq!(model._get_text("B1"), *"#ERROR!");
|
||||
assert_eq!(model._get_text("B2"), *"#ERROR!");
|
||||
|
||||
assert_eq!(model._get_text("G1"), "111111111");
|
||||
assert_eq!(model._get_text("G2"), "#NUM!");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fn_oct2dec() {
|
||||
let mut model = new_empty_model();
|
||||
model._set("A1", r#"=OCT2DEC(54)"#);
|
||||
model._set("A2", r#"=OCT2DEC(7777777533)"#);
|
||||
|
||||
model._set("B1", "=OCT2DEC()");
|
||||
model._set("B2", "=OCT2DEC(1,2,3)");
|
||||
|
||||
model.evaluate();
|
||||
|
||||
assert_eq!(model._get_text("A1"), "44");
|
||||
assert_eq!(model._get_text("A2"), "-165");
|
||||
|
||||
assert_eq!(model._get_text("B1"), *"#ERROR!");
|
||||
assert_eq!(model._get_text("B2"), *"#ERROR!");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fn_oct2hex() {
|
||||
let mut model = new_empty_model();
|
||||
model._set("A1", r#"=OCT2HEX(100, 4)"#);
|
||||
model._set("A2", r#"=OCT2HEX(7777777533)"#);
|
||||
|
||||
model._set("B1", "=OCT2HEX()");
|
||||
model._set("B2", "=OCT2HEX(1,2,3)");
|
||||
|
||||
model.evaluate();
|
||||
|
||||
assert_eq!(model._get_text("A1"), "0040");
|
||||
assert_eq!(model._get_text("A2"), "FFFFFFFF5B");
|
||||
|
||||
assert_eq!(model._get_text("B1"), *"#ERROR!");
|
||||
assert_eq!(model._get_text("B2"), *"#ERROR!");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fn_bin2hex_misc() {
|
||||
let mut model = new_empty_model();
|
||||
model._set("A1", "=BIN2HEX(1100011011, -2)");
|
||||
model._set("A2", "=BIN2HEX(1100011011, 11)");
|
||||
|
||||
model.evaluate();
|
||||
|
||||
assert_eq!(model._get_text("A1"), *"#NUM!");
|
||||
assert_eq!(model._get_text("A2"), *"#NUM!");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fn_bin2oct_misc() {
|
||||
let mut model = new_empty_model();
|
||||
model._set("A1", "=BIN2OCT(1100011011, -2)");
|
||||
model._set("A2", "=BIN2OCT(1100011011, 11)");
|
||||
|
||||
model.evaluate();
|
||||
|
||||
assert_eq!(model._get_text("A1"), *"#NUM!");
|
||||
assert_eq!(model._get_text("A2"), *"#NUM!");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fn_dec2oct_misc() {
|
||||
let mut model = new_empty_model();
|
||||
model._set("A1", "=DEC2OCT(-1213, 1)");
|
||||
|
||||
model.evaluate();
|
||||
|
||||
assert_eq!(model._get_text("A1"), *"7777775503");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fn_dec2bin_misc() {
|
||||
let mut model = new_empty_model();
|
||||
model._set("A1", "=DEC2BIN(-511, 4)");
|
||||
model._set("A2", "=DEC2BIN(TRUE, -1)");
|
||||
model._set("A3", "=DEC2OCT(TRUE, -1)");
|
||||
model._set("A4", "=DEC2HEX(TRUE, -1)");
|
||||
|
||||
model.evaluate();
|
||||
|
||||
assert_eq!(model._get_text("A1"), *"1000000001");
|
||||
// Note Excel here return #NUM! instead
|
||||
assert_eq!(model._get_text("A2"), *"#VALUE!");
|
||||
assert_eq!(model._get_text("A3"), *"#VALUE!");
|
||||
assert_eq!(model._get_text("A4"), *"#VALUE!");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fn_hex2whatever_misc() {
|
||||
let mut model = new_empty_model();
|
||||
model._set("A1", r#"=HEX2BIN(TRUE, 4)"#);
|
||||
model._set("A2", r#"=HEX2DEC(TRUE, 4)"#);
|
||||
model._set("A3", r#"=HEX2OCT(TRUE, 4)"#);
|
||||
|
||||
model.evaluate();
|
||||
// Note Excel here return #VALUE! instead
|
||||
assert_eq!(model._get_text("A1"), *"#NUM!");
|
||||
assert_eq!(model._get_text("A2"), *"#NUM!");
|
||||
assert_eq!(model._get_text("A3"), *"#NUM!");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fn_oct2whatever_misc() {
|
||||
let mut model = new_empty_model();
|
||||
model._set("A1", r#"=OCT2BIN(TRUE, 4)"#);
|
||||
model._set("A2", r#"=OCT2DEC(TRUE, 4)"#);
|
||||
model._set("A3", r#"=OCT2HEX(TRUE, 4)"#);
|
||||
|
||||
model.evaluate();
|
||||
// Note Excel here return #VALUE! instead
|
||||
assert_eq!(model._get_text("A1"), *"#NUM!");
|
||||
assert_eq!(model._get_text("A2"), *"#NUM!");
|
||||
assert_eq!(model._get_text("A3"), *"#NUM!");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fn_oct2dec_misc() {
|
||||
let mut model = new_empty_model();
|
||||
model._set("A1", r#"=OCT2DEC(777)"#);
|
||||
model._set("A2", r#"=OCT2DEC("777")"#);
|
||||
model._set("A3", r#"=OCT2DEC("-1")"#);
|
||||
model._set("A4", r#"=OCT2BIN("-1")"#);
|
||||
model._set("A5", r#"=OCT2HEX("-1")"#);
|
||||
model._set("A6", r#"=OCT2DEC(4000000000)"#);
|
||||
|
||||
model.evaluate();
|
||||
|
||||
assert_eq!(model._get_text("A1"), *"511");
|
||||
assert_eq!(model._get_text("A1"), *"511");
|
||||
|
||||
assert_eq!(model._get_text("A3"), *"#NUM!");
|
||||
assert_eq!(model._get_text("A4"), *"#NUM!");
|
||||
assert_eq!(model._get_text("A5"), *"#NUM!");
|
||||
assert_eq!(model._get_text("A6"), *"-536870912");
|
||||
}
|
||||
Reference in New Issue
Block a user