ak_core/geometry/
structure_view.rs

1use 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}