pub mod algorithms;
pub mod dllink;
pub mod dme_algorithm;
pub mod dme_visualizer;
pub mod error;
pub mod generic;
pub mod global_router;
pub mod interval;
pub mod manhattan_arc;
pub mod merge_obj;
pub mod point;
pub mod polygon;
pub mod rdllist;
pub mod rpolygon;
pub mod rpolygon_cut;
pub mod rpolygon_hull;
pub mod vector2;
pub mod vlsi_ops;
#[cfg(feature = "std")]
pub mod logging;
pub use crate::point::Point;
pub use crate::polygon::Polygon;
pub use crate::rpolygon::RPolygon;
pub use crate::vector2::Vector2;
#[cfg(test)]
mod tests {
use super::*;
use quickcheck_macros::quickcheck;
#[test]
pub fn it_works() {
let pt_a = Point::<i32, i32>::new(12, 23);
let vec_b = Vector2::<i32, i32>::new(34, 45);
println!("{:?}", pt_a + vec_b);
println!("{:?}", pt_a - vec_b);
let mut pt_a = Point::<i32, i32>::new(42, 53);
pt_a += vec_b;
pt_a -= vec_b;
println!("{:?}", -pt_a);
let pt_nested = Point::<Point<i32, i32>, Point<i32, i32>>::new(pt_a, pt_a);
println!("{:?}", pt_nested);
let interval_x = interval::Interval::<i32>::new(12, 23);
println!("{:?}", interval_x);
}
#[quickcheck]
fn check_point(ax: u16, bx: u16) -> bool {
let pt_a = Point::<i32, i32>::new(ax as i32, 23);
let vec_b = Vector2::<i32, i32>::new(bx as i32, 45);
pt_a == (pt_a - vec_b) + vec_b
}
#[quickcheck]
fn check_point_arithmetic_properties(x: i16, y: i16, dx: i16, dy: i16) -> bool {
let pt = Point::<i32, i32>::new(x as i32, y as i32);
let vec = Vector2::<i32, i32>::new(dx as i32, dy as i32);
let result = (pt + vec) - vec;
pt == result
}
#[quickcheck]
fn check_interval_properties(a: i32, b: i32) -> bool {
let lower = a.min(b);
let upper = a.max(b);
let interval = interval::Interval::<i32>::new(lower, upper);
interval.lb() <= interval.ub()
}
#[test]
fn test_const_functions() {
const _P1: Point<i32, i32> = Point::new(1, 2);
const _I1: interval::Interval<i32> = interval::Interval::new(1, 5);
const _LB: i32 = _I1.lb();
const _UB: i32 = _I1.ub();
const _M1: merge_obj::MergeObj<i32, i32> = merge_obj::MergeObj::new(1, 2);
}
}