clipper2_sys/clipperd/
path.rs1use crate::PointD;
2
3#[derive(Clone, Debug, Default)]
9pub struct PathD(pub(crate) Vec<PointD>);
10
11impl_path_geom!(float, PathD, PointD);
12
13#[cfg(test)]
14mod tests {
15 use crate::{PathD, PointD};
16
17 #[test]
18 fn new_translate_scale() {
19 let p = PathD::new(vec![
20 PointD::new(0.0, 0.0),
21 PointD::new(1.0, 0.0),
22 PointD::new(1.0, 1.0),
23 ]);
24 assert_eq!(p.len(), 3);
25 let t = p.translate(2.5, -0.5);
26 assert!((t.get_point(0).x - 2.5).abs() < 1e-9);
27 }
28
29 #[test]
30 fn iter_sum_x() {
31 let p = PathD::new(vec![PointD::new(1.0, 0.0), PointD::new(0.5, 1.0)]);
32 let s: f64 = p.iter().map(|q| q.x).sum();
33 assert!((s - 1.5).abs() < 1e-9);
34 let n = (&p).into_iter().count();
35 assert_eq!(n, 2);
36 }
37}