tests: put repeated code in function

This commit is contained in:
Simon Gardling 2022-03-09 11:06:15 -05:00
parent aff500202c
commit 7f0c3f95ae
2 changed files with 88 additions and 115 deletions

View File

@ -183,19 +183,42 @@ lazy_static::lazy_static! {
}; };
} }
// Tests to make sure archived (and compressed) assets match expected data // Tests to make sure archived (and compressed) assets match expected data
#[test] #[test]
fn test_file_data() { fn test_file_data() {
assert_eq!(FILE_DATA.font_ubuntu_light, FontData::from_owned(include_bytes!("../assets/Ubuntu-Light.ttf").to_vec())); assert_eq!(
assert_eq!(FILE_DATA.font_notoemoji, FontData::from_owned(include_bytes!("../assets/NotoEmoji-Regular.ttf").to_vec())); FILE_DATA.font_ubuntu_light,
assert_eq!(FILE_DATA.font_hack, FontData::from_owned(include_bytes!("../assets/Hack-Regular.ttf").to_vec())); FontData::from_owned(include_bytes!("../assets/Ubuntu-Light.ttf").to_vec())
);
assert_eq!(FILE_DATA.text_help_expr, include_str!("../assets/text_help_expr.txt")); assert_eq!(
assert_eq!(FILE_DATA.text_help_vars, include_str!("../assets/text_help_vars.txt")); FILE_DATA.font_notoemoji,
assert_eq!(FILE_DATA.text_help_panel, include_str!("../assets/text_help_panel.txt")); FontData::from_owned(include_bytes!("../assets/NotoEmoji-Regular.ttf").to_vec())
assert_eq!(FILE_DATA.text_help_function, include_str!("../assets/text_help_function.txt")); );
assert_eq!(FILE_DATA.text_help_other, include_str!("../assets/text_help_other.txt")); assert_eq!(
FILE_DATA.font_hack,
FontData::from_owned(include_bytes!("../assets/Hack-Regular.ttf").to_vec())
);
assert_eq!(
FILE_DATA.text_help_expr,
include_str!("../assets/text_help_expr.txt")
);
assert_eq!(
FILE_DATA.text_help_vars,
include_str!("../assets/text_help_vars.txt")
);
assert_eq!(
FILE_DATA.text_help_panel,
include_str!("../assets/text_help_panel.txt")
);
assert_eq!(
FILE_DATA.text_help_function,
include_str!("../assets/text_help_function.txt")
);
assert_eq!(
FILE_DATA.text_help_other,
include_str!("../assets/text_help_other.txt")
);
} }
cfg_if::cfg_if! { cfg_if::cfg_if! {

View File

@ -308,32 +308,11 @@ impl FunctionEntry {
pub fn get_derivative_str(&self) -> String { self.function.get_derivative_str() } pub fn get_derivative_str(&self) -> String { self.function.get_derivative_str() }
} }
#[test] #[cfg(test)]
fn left_function_test() { fn verify_function(
let integral_num = 10; integral_num: usize, pixel_width: usize, function: &mut FunctionEntry,
let pixel_width = 10; back_values_target: Vec<(f64, f64)>, area_target: f64,
) {
let mut function = FunctionEntry::empty()
.update_riemann(RiemannSum::Left)
.pixel_width(pixel_width)
.integral_num(integral_num)
.integral_bounds(-1.0, 1.0);
let back_values_target = vec![
(-1.0, 1.0),
(-0.8, 0.6400000000000001),
(-0.6, 0.36),
(-0.4, 0.16000000000000003),
(-0.19999999999999996, 0.03999999999999998),
(0.0, 0.0),
(0.19999999999999996, 0.03999999999999998),
(0.3999999999999999, 0.15999999999999992),
(0.6000000000000001, 0.3600000000000001),
(0.8, 0.6400000000000001),
];
let area_target = 0.9600000000000001;
{ {
let (back_values, bars, derivative) = function.run_back(); let (back_values, bars, derivative) = function.run_back();
assert!(derivative.is_none()); assert!(derivative.is_none());
@ -345,7 +324,7 @@ fn left_function_test() {
} }
{ {
function = function.integral(true); *function = function.clone().integral(true);
let (back_values, bars, derivative) = function.run_back(); let (back_values, bars, derivative) = function.run_back();
assert!(derivative.is_none()); assert!(derivative.is_none());
assert!(bars.is_some()); assert!(bars.is_some());
@ -375,6 +354,41 @@ fn left_function_test() {
} }
} }
#[test]
fn left_function_test() {
let integral_num = 10;
let pixel_width = 10;
let mut function = FunctionEntry::empty()
.update_riemann(RiemannSum::Left)
.pixel_width(pixel_width)
.integral_num(integral_num)
.integral_bounds(-1.0, 1.0);
let back_values_target = vec![
(-1.0, 1.0),
(-0.8, 0.6400000000000001),
(-0.6, 0.36),
(-0.4, 0.16000000000000003),
(-0.19999999999999996, 0.03999999999999998),
(0.0, 0.0),
(0.19999999999999996, 0.03999999999999998),
(0.3999999999999999, 0.15999999999999992),
(0.6000000000000001, 0.3600000000000001),
(0.8, 0.6400000000000001),
];
let area_target = 0.9600000000000001;
verify_function(
integral_num,
pixel_width,
&mut function,
back_values_target,
area_target,
);
}
#[test] #[test]
fn middle_function_test() { fn middle_function_test() {
let integral_num = 10; let integral_num = 10;
@ -401,45 +415,13 @@ fn middle_function_test() {
let area_target = 0.92; let area_target = 0.92;
{ verify_function(
let (back_values, bars, derivative) = function.run_back(); integral_num,
assert!(derivative.is_none()); pixel_width,
assert!(bars.is_none()); &mut function,
assert_eq!(back_values.len(), pixel_width); back_values_target,
let back_values_tuple: Vec<(f64, f64)> = area_target,
back_values.iter().map(|ele| (ele.x, ele.y)).collect(); );
assert_eq!(back_values_tuple, back_values_target);
}
{
function = function.integral(true);
let (back_values, bars, derivative) = function.run_back();
assert!(derivative.is_none());
assert!(bars.is_some());
assert_eq!(back_values.len(), pixel_width);
assert_eq!(bars.clone().unwrap().1, area_target);
let vec_bars = bars.unwrap().0;
assert_eq!(vec_bars.len(), integral_num);
let back_values_tuple: Vec<(f64, f64)> =
back_values.iter().map(|ele| (ele.x, ele.y)).collect();
assert_eq!(back_values_tuple, back_values_target);
}
{
function.derivative = true;
let (back_values, bars, derivative) = function.run_back();
assert!(derivative.is_some());
assert!(bars.is_some());
assert_eq!(back_values.len(), pixel_width);
assert_eq!(bars.clone().unwrap().1, area_target);
let bars_unwrapped = bars.unwrap();
assert_eq!(bars_unwrapped.0.iter().len(), integral_num);
}
} }
#[test] #[test]
@ -468,43 +450,11 @@ fn right_function_test() {
let area_target = 0.8800000000000001; let area_target = 0.8800000000000001;
{ verify_function(
let (back_values, bars, derivative) = function.run_back(); integral_num,
assert!(derivative.is_none()); pixel_width,
assert!(bars.is_none()); &mut function,
assert_eq!(back_values.len(), pixel_width); back_values_target,
let back_values_tuple: Vec<(f64, f64)> = area_target,
back_values.iter().map(|ele| (ele.x, ele.y)).collect(); );
assert_eq!(back_values_tuple, back_values_target);
}
{
function = function.integral(true);
let (back_values, bars, derivative) = function.run_back();
assert!(derivative.is_none());
assert!(bars.is_some());
assert_eq!(back_values.len(), pixel_width);
assert_eq!(bars.clone().unwrap().1, area_target);
let vec_bars = bars.unwrap().0;
assert_eq!(vec_bars.len(), integral_num);
let back_values_tuple: Vec<(f64, f64)> =
back_values.iter().map(|ele| (ele.x, ele.y)).collect();
assert_eq!(back_values_tuple, back_values_target);
}
{
function.derivative = true;
let (back_values, bars, derivative) = function.run_back();
assert!(derivative.is_some());
assert!(bars.is_some());
assert_eq!(back_values.len(), pixel_width);
assert_eq!(bars.clone().unwrap().1, area_target);
let bars_unwrapped = bars.unwrap();
assert_eq!(bars_unwrapped.0.iter().len(), integral_num);
}
} }