use stipple::prelude::*;
fn view(_state: &(), cx: &mut Cx<()>) -> Element {
let theme = *cx.theme();
let inner = Element::boxed(BoxStyle::default())
.fill(theme.palette.primary)
.width(40.0)
.height(40.0);
Element::stack(Axis::Vertical, vec![inner])
.fill(theme.palette.surface)
.align(Align::Center, Align::Center)
}
#[test]
fn samples_are_pixel_stable() {
let mut app = App::new((), view)
.theme(Theme::light())
.logical_size(Size::new(100.0, 100.0))
.scale(ScaleFactor::IDENTITY);
let frame = app.render_once();
assert_eq!(frame.size(), stipple::geometry::PhysicalSize::new(100, 100));
let theme = Theme::light();
let bg = theme.palette.background;
let surface = theme.palette.surface;
let primary = theme.palette.primary;
assert_eq!(
frame.pixel(1, 1),
Some([surface.r, surface.g, surface.b, 255])
);
assert_eq!(
frame.pixel(50, 50),
Some([primary.r, primary.g, primary.b, 255])
);
assert_eq!(
frame.pixel(20, 50),
Some([surface.r, surface.g, surface.b, 255])
);
let _ = bg;
}
#[test]
fn theme_swap_changes_samples() {
let mk = |theme: Theme| {
App::new((), view)
.theme(theme)
.logical_size(Size::new(40.0, 40.0))
.render_once()
};
let light = mk(Theme::light());
let dark = mk(Theme::dark());
assert_ne!(light.pixel(20, 20), dark.pixel(20, 20));
}