use freya::prelude::*;
use freya_testing::prelude::*;
#[test]
pub fn scroll_view_wheel() {
fn scroll_view_wheel_app() -> impl IntoElement {
ScrollView::new()
.child(rect().height(Size::px(200.)).width(Size::px(200.)))
.child(rect().height(Size::px(200.)).width(Size::px(200.)))
.child(rect().height(Size::px(200.)).width(Size::px(200.)))
.child(rect().height(Size::px(200.)).width(Size::px(200.)))
}
let mut test = launch_test(scroll_view_wheel_app);
let scrollview = test
.find(|node, element| {
Rect::try_downcast(element)
.filter(|rect| rect.accessibility.builder.role() == AccessibilityRole::ScrollView)
.map(move |_| node)
})
.unwrap();
let content = scrollview.children()[0].children()[0].children();
assert!(content[0].is_visible()); assert!(content[1].is_visible()); assert!(content[2].is_visible()); assert!(!content[3].is_visible());
test.scroll((5., 5.), (0., -300.));
assert!(!content[0].is_visible()); assert!(content[1].is_visible()); assert!(content[2].is_visible()); assert!(content[3].is_visible()); }
#[test]
pub fn scroll_view_scrollbar() {
fn scroll_view_scrollbar_app() -> impl IntoElement {
ScrollView::new()
.child(rect().height(Size::px(200.)).width(Size::px(200.)))
.child(rect().height(Size::px(200.)).width(Size::px(200.)))
.child(rect().height(Size::px(200.)).width(Size::px(200.)))
.child(rect().height(Size::px(200.)).width(Size::px(200.)))
}
let mut test = launch_test(scroll_view_scrollbar_app);
let scrollview = test
.find(|node, element| {
Rect::try_downcast(element)
.filter(|rect| rect.accessibility.builder.role() == AccessibilityRole::ScrollView)
.map(move |_| node)
})
.unwrap();
let content = scrollview.children()[0].children()[0].children();
assert!(content[0].is_visible()); assert!(content[1].is_visible()); assert!(content[2].is_visible()); assert!(!content[3].is_visible());
test.move_cursor((495., 20.));
test.sync_and_update();
test.press_cursor((495., 20.));
test.sync_and_update();
test.move_cursor((495., 320.));
test.sync_and_update();
test.release_cursor((495., 320.));
test.sync_and_update();
assert!(!content[0].is_visible()); assert!(content[1].is_visible()); assert!(content[2].is_visible()); assert!(content[3].is_visible());
for _ in 0..5 {
test.press_key(Key::ArrowUp);
}
assert!(content[0].is_visible());
assert!(content[1].is_visible());
assert!(content[2].is_visible());
assert!(!content[3].is_visible());
test.press_key(Key::End);
assert!(!content[0].is_visible());
assert!(content[1].is_visible());
assert!(content[2].is_visible());
assert!(content[3].is_visible());
}