Improve readability of rgb() tests

This commit is contained in:
Tad Hardesty 2021-03-18 22:07:32 -07:00
parent 7e3731ea92
commit 2dbdeb855f

View file

@ -2,142 +2,111 @@ extern crate dreammaker as dm;
use dm::constants::*;
fn eval(code: &str) -> Result<Constant, dm::DMError> {
dm::constants::evaluate_str(Default::default(), code.as_bytes())
}
#[test]
fn floating_point_rgb() {
// https://github.com/SpaceManiac/SpacemanDMM/issues/81
let code = "rgb(0.5 * 255, 0.5 * 255, 0.5 * 255)";
assert_eq!(
dm::constants::evaluate_str(Default::default(), code.as_bytes())
.expect("evaluation failed"),
Constant::String("#7f7f7f".to_owned()),
eval("rgb(0.5 * 255, 0.5 * 255, 0.5 * 255)").unwrap(),
Constant::string("#7f7f7f"),
);
}
#[test]
fn rgb_base() {
let code_good = "rgb(0, 255, 0)";
assert_eq!(
dm::constants::evaluate_str(Default::default(), code_good.as_bytes())
.expect("evaluation failed"),
Constant::String("#00ff00".to_owned()),
eval("rgb(0, 255, 0)").unwrap(),
Constant::string("#00ff00"),
);
let code_good2 = "rgb(50, 50, 50)";
assert_eq!(
dm::constants::evaluate_str(Default::default(), code_good2.as_bytes())
.expect("evaluation failed"),
Constant::String("#323232".to_owned()),
eval("rgb(50, 50, 50)").unwrap(),
Constant::string("#323232"),
);
}
#[test]
fn rgb_range() {
let code_rgb = "rgb(0, 300, 0)";
assert_eq!(
dm::constants::evaluate_str(Default::default(), code_rgb.as_bytes())
.unwrap_err().description(),
eval("rgb(0, 300, 0)").unwrap_err().description(),
"malformed rgb() call, 300 is not within the valid range (0..255)",
);
let code_hsv = "rgb(361, 0, 0, space=1)";
assert_eq!(
dm::constants::evaluate_str(Default::default(), code_hsv.as_bytes())
.unwrap_err().description(),
eval("rgb(361, 0, 0, space=1)").unwrap_err().description(),
"malformed rgb() call, 361 is not within the valid range (0..360)",
);
}
#[test]
fn rgb_args() {
let code = "rgb(50)";
assert_eq!(
dm::constants::evaluate_str(Default::default(), code.as_bytes())
.unwrap_err().description(),
eval("rgb(50)").unwrap_err().description(),
"malformed rgb() call, must have 3, 4, or 5 arguments and instead has 1",
);
}
#[test]
fn rgb_alpha() {
let code_hsv = "rgb(h=0, s=0, v=100, a=50, space=1)";
assert_eq!(
dm::constants::evaluate_str(Default::default(), code_hsv.as_bytes())
.expect("evaluation failed"),
Constant::String("#ffffff32".to_owned()),
eval("rgb(h=0, s=0, v=100, a=50, space=1)").unwrap(),
Constant::string("#ffffff32"),
);
let code_hsv2 = "rgb(h=0, s=0, v=100, 50)";
assert_eq!(
dm::constants::evaluate_str(Default::default(), code_hsv2.as_bytes())
.expect("evaluation failed"),
Constant::String("#ffffff32".to_owned()),
eval("rgb(h=0, s=0, v=100, 50)").unwrap(),
Constant::string("#ffffff32"),
);
}
#[test]
fn rgb_hsv() {
let code_hsv = "rgb(h=0, s=0, v=100)";
assert_eq!(
dm::constants::evaluate_str(Default::default(), code_hsv.as_bytes())
.expect("evaluation failed"),
Constant::String("#ffffff".to_owned()),
eval("rgb(h=0, s=0, v=100)").unwrap(),
Constant::string("#ffffff"),
);
let code_hsv2 = "rgb(h=50, s=50, v=50)";
assert_eq!(
dm::constants::evaluate_str(Default::default(), code_hsv2.as_bytes())
.expect("evaluation failed"),
Constant::String("#807540".to_owned()),
eval("rgb(h=50, s=50, v=50)").unwrap(),
Constant::string("#807540"),
);
let code_hsv_space = "rgb(360, 0, 0, space=1)";
assert_eq!(
dm::constants::evaluate_str(Default::default(), code_hsv_space.as_bytes())
.expect("evaluation failed"),
Constant::String("#000000".to_owned()),
eval("rgb(360, 0, 0, space=1)").unwrap(),
Constant::string("#000000"),
);
}
#[test]
fn rgb_hsl() {
let code_hsl = "rgb(h=0, s=0, l=100)";
assert_eq!(
dm::constants::evaluate_str(Default::default(), code_hsl.as_bytes())
.expect("evaluation failed"),
Constant::String("#ffffff".to_owned()),
eval("rgb(h=0, s=0, l=100)").unwrap(),
Constant::string("#ffffff"),
);
let code_hsl2 = "rgb(h=50, s=50, l=50)";
assert_eq!(
dm::constants::evaluate_str(Default::default(), code_hsl2.as_bytes())
.expect("evaluation failed"),
Constant::String("#bfaa40".to_owned()),
eval("rgb(h=50, s=50, l=50)").unwrap(),
Constant::string("#bfaa40"),
);
let code_hsl_space = "rgb(360, 0, 0, space=2)";
assert_eq!(
dm::constants::evaluate_str(Default::default(), code_hsl_space.as_bytes())
.expect("evaluation failed"),
Constant::String("#000000".to_owned()),
eval("rgb(360, 0, 0, space=2)").unwrap(),
Constant::string("#000000"),
);
}
#[test]
fn rgb_hcy() {
let code_hsl = "rgb(h=0, c=0, y=100)";
assert_eq!(
dm::constants::evaluate_str(Default::default(), code_hsl.as_bytes())
.expect("evaluation failed"),
Constant::String("#ffffff".to_owned()),
eval("rgb(h=0, c=0, y=100)").unwrap(),
Constant::string("#ffffff"),
);
let code_hsl2 = "rgb(h=50, c=50, y=50)";
assert_eq!(
dm::constants::evaluate_str(Default::default(), code_hsl2.as_bytes())
.expect("evaluation failed"),
Constant::String("#b65f37".to_owned()),
eval("rgb(h=50, c=50, y=50)").unwrap(),
Constant::string("#b65f37"),
);
let code_hsl_space = "rgb(360, 0, 0, space=3)";
assert_eq!(
dm::constants::evaluate_str(Default::default(), code_hsl_space.as_bytes())
.expect("evaluation failed"),
Constant::String("#000000".to_owned()),
eval("rgb(360, 0, 0, space=3)").unwrap(),
Constant::string("#000000"),
);
}