#[cfg(test)]
mod tests {
use crate::draw_target::*;
use crate::path_builder::*;
#[test]
fn basic_rasterizer() {
let mut dt = DrawTarget::new(2, 2);
let mut pb = PathBuilder::new();
pb.rect(1., 1., 1., 1.);
dt.fill(
&pb.finish(),
&Source::Solid(SolidSource {
r: 0xff,
g: 0xff,
b: 0xff,
a: 0xff,
}),
&DrawOptions::new(),
);
let white = 0xffffffff;
assert_eq!(dt.get_data(), &vec![0, 0, 0, white][..])
}
#[test]
fn clip_rect() {
let mut dt = DrawTarget::new(2, 2);
dt.push_clip_rect(intrect(1, 1, 2, 2));
let mut pb = PathBuilder::new();
pb.rect(0., 0., 2., 2.);
dt.fill(
&pb.finish(),
&Source::Solid(SolidSource {
r: 0xff,
g: 0xff,
b: 0xff,
a: 0xff,
}),
&DrawOptions::new(),
);
let white = 0xffffffff;
assert_eq!(dt.get_data(), &vec![0, 0, 0, white][..])
}
#[test]
fn nested_clip_rect() {
let mut dt = DrawTarget::new(2, 2);
dt.push_clip_rect(intrect(0, 1, 2, 2));
dt.push_clip_rect(intrect(1, 0, 2, 2));
let mut pb = PathBuilder::new();
pb.rect(0., 0., 2., 2.);
dt.fill(
&pb.finish(),
&Source::Solid(SolidSource {
r: 0xff,
g: 0xff,
b: 0xff,
a: 0xff,
}),
&DrawOptions::new(),
);
let white = 0xffffffff;
assert_eq!(dt.get_data(), &vec![0, 0, 0, white][..])
}
#[test]
fn even_odd_rect() {
let mut dt = DrawTarget::new(2, 2);
let mut pb = PathBuilder::new();
pb.rect(0., 0., 2., 2.);
pb.rect(0., 0., 2., 2.);
pb.rect(1., 1., 2., 2.);
let mut path = pb.finish();
path.winding = Winding::EvenOdd;
dt.fill(
&path,
&Source::Solid(SolidSource {
r: 0xff,
g: 0xff,
b: 0xff,
a: 0xff,
}),
&DrawOptions::new(),
);
let white = 0xffffffff;
assert_eq!(dt.get_data(), &vec![0, 0, 0, white][..])
}
#[test]
fn clear() {
let mut dt = DrawTarget::new(2, 2);
let mut pb = PathBuilder::new();
pb.rect(0., 0., 2., 2.);
let mut path = pb.finish();
dt.fill(
&path,
&Source::Solid(SolidSource {
r: 0xff,
g: 0xff,
b: 0xff,
a: 0xff,
}),
&DrawOptions::new(),
);
dt.clear(SolidSource { r: 0, g: 0, b: 0, a: 0 });
assert_eq!(dt.get_data(), &vec![0, 0, 0, 0][..])
}
#[test]
fn basic_push_layer() {
let mut dt = DrawTarget::new(2, 2);
let mut pb = PathBuilder::new();
dt.push_clip_rect(intrect(1, 1, 2, 2));
dt.push_layer(1.);
pb.rect(1., 1., 1., 1.);
dt.fill(
&pb.finish(),
&Source::Solid(SolidSource {
r: 0xff,
g: 0xff,
b: 0xff,
a: 0xff,
}),
&DrawOptions::new(),
);
let white = 0xffffffff;
dt.pop_layer();
assert_eq!(dt.get_data(), &vec![0, 0, 0, white][..])
}
}