60 lines
1.7 KiB
Rust
60 lines
1.7 KiB
Rust
use egui::Modifiers;
|
|
use egui_kittest::Harness;
|
|
use kittest::{Key, Queryable};
|
|
|
|
#[test]
|
|
fn test_shrink() {
|
|
let mut harness = Harness::new_ui(|ui| {
|
|
ui.label("Hello, world!");
|
|
ui.separator();
|
|
ui.label("This is a test");
|
|
});
|
|
|
|
harness.fit_contents();
|
|
|
|
#[cfg(all(feature = "snapshot", feature = "wgpu"))]
|
|
harness.snapshot("test_shrink");
|
|
}
|
|
|
|
#[test]
|
|
fn test_modifiers() {
|
|
#[derive(Default)]
|
|
struct State {
|
|
cmd_clicked: bool,
|
|
cmd_z_pressed: bool,
|
|
cmd_y_pressed: bool,
|
|
}
|
|
let mut harness = Harness::new_ui_state(
|
|
|ui, state| {
|
|
if ui.button("Click me").clicked() && ui.input(|i| i.modifiers.command) {
|
|
state.cmd_clicked = true;
|
|
}
|
|
if ui.input(|i| i.modifiers.command && i.key_pressed(egui::Key::Z)) {
|
|
state.cmd_z_pressed = true;
|
|
}
|
|
if ui.input(|i| i.modifiers.command && i.key_pressed(egui::Key::Y)) {
|
|
state.cmd_y_pressed = true;
|
|
}
|
|
},
|
|
State::default(),
|
|
);
|
|
|
|
harness.get_by_label("Click me").key_down(Key::Command);
|
|
// This run isn't necessary, but allows us to test whether modifiers are remembered between frames
|
|
harness.run();
|
|
harness.get_by_label("Click me").click();
|
|
harness.get_by_label("Click me").key_up(Key::Command);
|
|
harness.run();
|
|
|
|
harness.press_key_modifiers(Modifiers::COMMAND, egui::Key::Z);
|
|
harness.run();
|
|
|
|
harness.node().key_combination(&[Key::Command, Key::Y]);
|
|
harness.run();
|
|
|
|
let state = harness.state();
|
|
assert!(state.cmd_clicked, "The button wasn't command-clicked");
|
|
assert!(state.cmd_z_pressed, "Cmd+Z wasn't pressed");
|
|
assert!(state.cmd_y_pressed, "Cmd+Y wasn't pressed");
|
|
}
|