ak_core/geometry/
structure_view.rs1use crate::geometry::{AtomicNumber, Cell, Pbc};
2
3pub struct StructureView<'a> {
4 pub positions: &'a [[f64; 3]],
5 pub numbers: &'a [AtomicNumber],
6 pub cell: Cell,
7 pub pbc: Pbc,
8}
9
10impl<'a> StructureView<'a> {
11 pub fn len(&self) -> usize {
12 self.positions.len()
13 }
14
15 pub fn is_empty(&self) -> bool {
16 self.len() == 0
17 }
18}
19
20#[cfg(test)]
21mod tests {
22 use crate::Structure;
23
24 #[test]
25 fn is_empty_is_true_for_empty_views() {
26 let structure = Structure::new(Vec::new(), Vec::new(), [[0.0; 3]; 3], [false; 3]);
27
28 assert!(structure.view().is_empty());
29 }
30
31 #[test]
32 fn is_empty_is_false_for_populated_views() {
33 let structure = Structure::new(
34 vec![[0.0, 0.0, 0.0]],
35 vec![1],
36 [[10.0, 0.0, 0.0], [0.0, 10.0, 0.0], [0.0, 0.0, 10.0]],
37 [false; 3],
38 );
39
40 assert!(!structure.view().is_empty());
41 }
42}