feat(display): input routed via display server to focused app; input Subscribe; uses caps badged + Delegate
This commit is contained in:
36
crates/servers/display-server/src/tests/focus.rs
Normal file
36
crates/servers/display-server/src/tests/focus.rs
Normal file
@@ -0,0 +1,36 @@
|
||||
use crate::focus::Focus;
|
||||
|
||||
const KEY: [usize; 4] = [1, 9, b'a' as usize, 0];
|
||||
|
||||
#[test]
|
||||
fn only_the_app_in_focus_gets_events() {
|
||||
let mut f: Focus<u8> = Focus::new();
|
||||
assert_eq!(f.push(KEY), None, "nobody to give it to");
|
||||
f.subscribe(1, 10);
|
||||
assert_eq!(f.push(KEY), Some(10));
|
||||
assert_eq!(f.poll(2), None);
|
||||
assert_eq!(f.poll(1), Some(KEY));
|
||||
assert_eq!(f.poll(1), None);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn a_new_subscriber_takes_focus_and_the_old_queue_is_dropped() {
|
||||
let mut f: Focus<u8> = Focus::new();
|
||||
f.subscribe(1, 10);
|
||||
f.push(KEY);
|
||||
f.subscribe(2, 20);
|
||||
assert_eq!(f.poll(1), None);
|
||||
assert_eq!(f.poll(2), None);
|
||||
assert_eq!(f.push(KEY), Some(20));
|
||||
assert_eq!(f.poll(2), Some(KEY));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn a_full_queue_drops_the_oldest() {
|
||||
let mut f: Focus<u8> = Focus::new();
|
||||
f.subscribe(1, 10);
|
||||
for i in 0..40 {
|
||||
f.push([1, 9, i, 0]);
|
||||
}
|
||||
assert_eq!(f.poll(1), Some([1, 9, 8, 0]));
|
||||
}
|
||||
@@ -1,2 +1,3 @@
|
||||
mod focus;
|
||||
mod protocol;
|
||||
mod server;
|
||||
|
||||
Reference in New Issue
Block a user