use crate::Point64;
#[derive(Clone, Debug, Default)]
pub struct Path64(pub(crate) Vec<Point64>);
impl_path_geom!(int64, Path64, Point64);
#[cfg(test)]
mod tests {
use crate::{Path64, Point64};
#[test]
fn new_translate_scale_len() {
let p = Path64::new(vec![
Point64::new(0, 0),
Point64::new(10, 0),
Point64::new(10, 10),
]);
assert_eq!(p.len(), 3);
let t = p.translate(5, -1);
let p0 = t.get_point(0);
assert_eq!(p0.x, 5);
assert_eq!(p0.y, -1);
let s = p.scale(2.0, 2.0);
let p1 = s.get_point(1);
assert_eq!(p1.x, 20);
assert_eq!(p1.y, 0);
}
#[test]
fn iter_and_for_in_by_ref() {
let p = Path64::new(vec![Point64::new(1, 2), Point64::new(3, 4)]);
let s: i64 = p.iter().map(|q| q.x + q.y).sum();
assert_eq!(s, 10);
let t: i64 = (&p).into_iter().map(|q| q.x).sum();
assert_eq!(t, 4);
}
}