use fenris::model::FiniteElementInterpolator;
use nalgebra::{DVector, Vector2};
use proptest::prelude::*;
use matrixcompare::assert_scalar_eq;
#[test]
fn interpolate_into() {
let values = vec![1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0];
let supported_nodes = vec![
0, 1, 0, 3, 4, 1, 2, 4, ]; let supported_node_offsets = vec![0, 2, 5, 8, 8];
let interpolator = FiniteElementInterpolator::from_compressed_values(
values.into_iter().zip(supported_nodes).collect(),
supported_node_offsets,
);
let u = DVector::from_column_slice(&[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0]);
let mut interpolated_values = vec![Vector2::zeros(); 4];
interpolator.interpolate_into(&mut interpolated_values, &u);
let v = interpolated_values;
assert_scalar_eq!(v[0].x, 7.0);
assert_scalar_eq!(v[0].y, 10.0);
assert_scalar_eq!(v[1].x, 76.0);
assert_scalar_eq!(v[1].y, 88.0);
assert_scalar_eq!(v[2].x, 125.0);
assert_scalar_eq!(v[2].y, 146.0);
assert_scalar_eq!(v[3].x, 0.0);
assert_scalar_eq!(v[3].y, 0.0);
}
proptest! {
}