60 lines
1.8 KiB
Rust
60 lines
1.8 KiB
Rust
use crate::rect::{Rect, Region};
|
|
|
|
#[test]
|
|
fn union1() {
|
|
let r1 = Region::new(Rect::new(0, 0, 10, 10).unwrap());
|
|
let r2_ = Region::new(Rect::new(5, 5, 15, 15).unwrap());
|
|
let r2 = Region::new(Rect::new(10, 10, 20, 20).unwrap());
|
|
let r3 = r1.union(&r2).union(&r2_);
|
|
assert_eq!(r3.extents, Rect::new(0, 0, 20, 20).unwrap());
|
|
assert_eq!(
|
|
&r3.rects[..],
|
|
&[
|
|
Rect::new(0, 0, 10, 5).unwrap(),
|
|
Rect::new(0, 5, 15, 10).unwrap(),
|
|
Rect::new(5, 10, 20, 15).unwrap(),
|
|
Rect::new(10, 15, 20, 20).unwrap(),
|
|
]
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn union2() {
|
|
let r1 = Region::new(Rect::new(0, 0, 10, 10).unwrap());
|
|
let r2 = Region::new(Rect::new(0, 10, 10, 20).unwrap());
|
|
let r3 = r1.union(&r2);
|
|
assert_eq!(r3.extents, Rect::new(0, 0, 10, 20).unwrap());
|
|
assert_eq!(&r3.rects[..], &[Rect::new(0, 0, 10, 20).unwrap(),]);
|
|
}
|
|
|
|
#[test]
|
|
fn subtract1() {
|
|
let r1 = Region::new(Rect::new(0, 0, 20, 20).unwrap());
|
|
let r2 = Region::new(Rect::new(5, 5, 15, 15).unwrap());
|
|
let r3 = r1.subtract(&r2);
|
|
assert_eq!(r3.extents, Rect::new(0, 0, 20, 20).unwrap());
|
|
assert_eq!(&r3.rects[..], &[Rect::new(0, 0, 10, 20).unwrap(),]);
|
|
}
|
|
|
|
#[test]
|
|
fn rects_to_bands() {
|
|
let rects = [
|
|
Rect::new_unchecked(0, 0, 10, 10),
|
|
Rect::new_unchecked(5, 0, 30, 10),
|
|
Rect::new_unchecked(30, 5, 50, 15),
|
|
];
|
|
let r = Region::from_rects(&rects[..]);
|
|
println!("{:#?}", r.rects);
|
|
assert_eq!(&r.rects[..], &[Rect::new(0, 0, 10, 20).unwrap(),]);
|
|
}
|
|
|
|
#[test]
|
|
fn rects_to_bands2() {
|
|
let rects = [
|
|
Rect::new_unchecked(0, 0, 10, 10),
|
|
Rect::new_unchecked(0, 10, 10, 20),
|
|
];
|
|
let r = Region::from_rects(&rects[..]);
|
|
println!("{:#?}", r.rects);
|
|
assert_eq!(&r.rects[..], &[Rect::new(0, 0, 10, 20).unwrap(),]);
|
|
}
|