97 lines
2.5 KiB
Rust
97 lines
2.5 KiB
Rust
use egui::accesskit::Role;
|
|
use egui::{Button, ComboBox, Image, Vec2, Widget};
|
|
use egui_kittest::{kittest::Queryable, Harness};
|
|
|
|
#[test]
|
|
pub fn focus_should_skip_over_disabled_buttons() {
|
|
let mut harness = Harness::new_ui(|ui| {
|
|
ui.add(Button::new("Button 1"));
|
|
ui.add_enabled(false, Button::new("Button Disabled"));
|
|
ui.add(Button::new("Button 3"));
|
|
});
|
|
|
|
harness.press_key(egui::Key::Tab);
|
|
harness.run();
|
|
|
|
let button_1 = harness.get_by_label("Button 1");
|
|
assert!(button_1.is_focused());
|
|
|
|
harness.press_key(egui::Key::Tab);
|
|
harness.run();
|
|
|
|
let button_3 = harness.get_by_label("Button 3");
|
|
assert!(button_3.is_focused());
|
|
|
|
harness.press_key(egui::Key::Tab);
|
|
harness.run();
|
|
|
|
let button_1 = harness.get_by_label("Button 1");
|
|
assert!(button_1.is_focused());
|
|
}
|
|
|
|
#[test]
|
|
fn image_failed() {
|
|
let mut harness = Harness::new_ui(|ui| {
|
|
Image::new("file://invalid/path")
|
|
.alt_text("I have an alt text")
|
|
.max_size(Vec2::new(100.0, 100.0))
|
|
.ui(ui);
|
|
});
|
|
|
|
harness.run();
|
|
harness.fit_contents();
|
|
|
|
#[cfg(all(feature = "wgpu", feature = "snapshot"))]
|
|
harness.snapshot("image_snapshots");
|
|
}
|
|
|
|
#[test]
|
|
fn test_combobox() {
|
|
let items = ["Item 1", "Item 2", "Item 3"];
|
|
let mut harness = Harness::builder()
|
|
.with_size(Vec2::new(300.0, 200.0))
|
|
.build_ui_state(
|
|
|ui, selected| {
|
|
ComboBox::new("combobox", "Select Something").show_index(
|
|
ui,
|
|
selected,
|
|
items.len(),
|
|
|idx| *items.get(idx).expect("Invalid index"),
|
|
);
|
|
},
|
|
0,
|
|
);
|
|
|
|
harness.run();
|
|
|
|
let mut results = vec![];
|
|
|
|
#[cfg(all(feature = "wgpu", feature = "snapshot"))]
|
|
results.push(harness.try_snapshot("combobox_closed"));
|
|
|
|
let combobox = harness.get_by_role_and_label(Role::ComboBox, "Select Something");
|
|
combobox.click();
|
|
|
|
harness.run();
|
|
|
|
#[cfg(all(feature = "wgpu", feature = "snapshot"))]
|
|
results.push(harness.try_snapshot("combobox_opened"));
|
|
|
|
let item_2 = harness.get_by_role_and_label(Role::Button, "Item 2");
|
|
// Node::click doesn't close the popup, so we use simulate_click
|
|
item_2.simulate_click();
|
|
|
|
harness.run();
|
|
|
|
assert_eq!(harness.state(), &1);
|
|
|
|
// Popup should be closed now
|
|
assert!(harness.query_by_label("Item 2").is_none());
|
|
|
|
for result in results {
|
|
if let Err(err) = result {
|
|
panic!("{}", err);
|
|
}
|
|
}
|
|
}
|