diff --git a/data/cube_8_particles.vtk b/data/cube_8_particles.vtk new file mode 100644 index 0000000..689b474 --- /dev/null +++ b/data/cube_8_particles.vtk @@ -0,0 +1,27 @@ +# vtk DataFile Version 5.1 +vtk output +ASCII +DATASET UNSTRUCTURED_GRID + +POINTS 8 double +0.5 0.4995095 0.5 0.5 0.4995095 1 0.5 0.9995095 0.5 +0.5 0.9995095 1 1 0.4995095 0.5 1 0.4995095 1 +1 0.9995095 0.5 1 0.9995095 1 + +CELLS 9 8 + +OFFSETS vtktypeint64 +0 1 2 3 4 5 6 7 8 + +CONNECTIVITY vtktypeint64 +0 1 2 3 4 5 6 7 + +CELL_TYPES 8 +1 +1 +1 +1 +1 +1 +1 +1 diff --git a/data/cube_8_particles.vtu b/data/cube_8_particles.vtu new file mode 100644 index 0000000..6a5364d Binary files /dev/null and b/data/cube_8_particles.vtu differ diff --git a/data/fluid_250_particles.vtu b/data/fluid_250_particles.vtu new file mode 100644 index 0000000..bb7fd1e Binary files /dev/null and b/data/fluid_250_particles.vtu differ diff --git a/data/fluid_encoded_250_particles.vtu b/data/fluid_encoded_250_particles.vtu new file mode 100644 index 0000000..4a7d391 --- /dev/null +++ b/data/fluid_encoded_250_particles.vtu @@ -0,0 +1,63 @@ + + + + + + + + + 0.10739392947 + + + 2.8782425907 + + + + + 0.10739392947 + + + 2.8782425907 + + + + + + + + + + + + + + + + + 0.44061076221 + + + 5.1488305926 + + + + + 0.44061076221 + + + 5.1488305926 + + + + + + + + + + + + + _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4QAAAAAAAADiAAAAAAAAAOMAAAAAAAAA5AAAAAAAAADlAAAAAAAAAOYAAAAAAAAA5wAAAAAAAADoAAAAAAAAAOkAAAAAAAAA6gAAAAAAAADrAAAAAAAAAOwAAAAAAAAA7QAAAAAAAADuAAAAAAAAAO8AAAAAAAAA8AAAAAAAAADxAAAAAAAAAPIAAAAAAAAA8wAAAAAAAAD0AAAAAAAAAPUAAAAAAAAA9gAAAAAAAAD3AAAAAAAAAPgAAAAAAAAA+QAAAAAAAAD6AAAAAAAAAA==+gAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + + diff --git a/splashsurf_lib/src/io/vtk_format.rs b/splashsurf_lib/src/io/vtk_format.rs index 70670e5..4ec4476 100644 --- a/splashsurf_lib/src/io/vtk_format.rs +++ b/splashsurf_lib/src/io/vtk_format.rs @@ -431,3 +431,49 @@ where } } } + +#[cfg(test)] +pub mod test { + use super::*; + + fn test_load_num_particles>(input_file: P, num_particles: usize) -> Result<(), anyhow::Error> { + let input_file = input_file.as_ref(); + let particles: Vec> = particles_from_vtk(input_file).with_context(|| { + format!( + "Failed to load surface mesh from file \"{}\"", + input_file.display() + ) + })?; + + assert_eq!(particles.len(), num_particles); + + Ok(()) + } + + #[test] + fn test_cube_8_particles_from_vtu() -> Result<(), anyhow::Error> { + test_load_num_particles("../data/cube_8_particles.vtu", 8) + } + + #[test] + #[ignore = "Disabled due to bug in vtkio (https://github.com/elrnv/vtkio/issues/21#issuecomment-1513195315)"] + fn test_cube_8_particles_from_vtk() -> Result<(), anyhow::Error> { + test_load_num_particles("../data/cube_8_particles.vtk", 250) + } + + #[test] + fn test_hilbert_46843_particles_from_vtk() -> Result<(), anyhow::Error> { + test_load_num_particles("../data/hilbert_46843_particles.vtk", 46843) + } + + #[test] + fn test_fluid_250_particles_from_vtu_encoded() -> Result<(), anyhow::Error> { + test_load_num_particles("../data/fluid_encoded_250_particles.vtu", 250) + } + + #[test] + #[ignore = "Disabled due to bug in vtkio/XML parser (https://github.com/elrnv/vtkio/issues/27)"] + fn test_fluid_250_particles_from_vtu() -> Result<(), anyhow::Error> { + test_load_num_particles("../data/fluid_250_particles.vtu", 250) + } +} diff --git a/splashsurf_lib/src/profiling_macro.rs b/splashsurf_lib/src/profiling_macro.rs index 04ced30..3f119d6 100644 --- a/splashsurf_lib/src/profiling_macro.rs +++ b/splashsurf_lib/src/profiling_macro.rs @@ -1,4 +1,4 @@ -//! Provides the [`profile`] macro or a dummy implementation depending on the selected feature +//! Provides the [`profile`](crate::profile) macro or a dummy implementation depending on the selected feature #[cfg(feature = "profiling")] /// Creates a scope for profiling