use glifparser::outline::{Contour, Outline};
use glifparser::outline::Reverse as _;
use glifparser::outline::FromKurbo as _;
use kurbo::Shape as _;
#[macro_use] extern crate lazy_static;
lazy_static! {
static ref CIRCLE: Outline::<()> = Outline::<()>::from_kurbo(&kurbo::BezPath::from_vec(kurbo::Circle::new(kurbo::Point::new(0.0, 0.0), 50.0).path_elements(f64::EPSILON).collect()));
}
static ITERATIONS: usize = 5_000;
#[test]
fn test_rev_outline() {
let gcircle = CIRCLE.clone();
let mut gcircle2 = CIRCLE.clone();
for _ in 0 .. ITERATIONS {
gcircle2.reverse();
}
assert_eq!(gcircle, gcircle2);
let mut gcircle2 = CIRCLE.clone();
for _ in 0 .. ITERATIONS - 1 {
gcircle2.reverse();
}
assert_ne!(gcircle, gcircle2);
}
#[test]
fn test_rev_contour() {
let gcircle = &*CIRCLE;
let gcircle_contour: Contour<()> = gcircle.clone().pop().unwrap();
let mut gcircle2_contour: Contour<()> = gcircle_contour.clone();
for _ in 0 .. ITERATIONS {
gcircle2_contour.reverse();
}
assert_eq!(gcircle_contour, gcircle2_contour);
let mut gcircle2_contour: Contour<()> = gcircle_contour.clone();
for _ in 0 .. ITERATIONS - 1 {
gcircle2_contour.reverse();
}
assert_ne!(gcircle_contour, gcircle2_contour);
}