clipper2_sys/clipper64/
path.rs1use crate::Point64;
2
3#[derive(Clone, Debug, Default)]
18pub struct Path64(pub(crate) Vec<Point64>);
19
20impl_path_geom!(int64, Path64, Point64);
21
22#[cfg(test)]
23mod tests {
24 use crate::{Path64, Point64};
25
26 #[test]
27 fn new_translate_scale_len() {
28 let p = Path64::new(vec![
29 Point64::new(0, 0),
30 Point64::new(10, 0),
31 Point64::new(10, 10),
32 ]);
33 assert_eq!(p.len(), 3);
34 let t = p.translate(5, -1);
35 let p0 = t.get_point(0);
36 assert_eq!(p0.x, 5);
37 assert_eq!(p0.y, -1);
38 let s = p.scale(2.0, 2.0);
39 let p1 = s.get_point(1);
40 assert_eq!(p1.x, 20);
41 assert_eq!(p1.y, 0);
42 }
43
44 #[test]
45 fn iter_and_for_in_by_ref() {
46 let p = Path64::new(vec![Point64::new(1, 2), Point64::new(3, 4)]);
47 let s: i64 = p.iter().map(|q| q.x + q.y).sum();
48 assert_eq!(s, 10);
49 let t: i64 = (&p).into_iter().map(|q| q.x).sum();
50 assert_eq!(t, 4);
51 }
52}