Skip to content

Commit

Permalink
Fix map util not linking virtual writers, add integration test
Browse files Browse the repository at this point in the history
  • Loading branch information
shiro committed Nov 22, 2023
1 parent 30507c6 commit 40a957e
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 10 deletions.
17 changes: 7 additions & 10 deletions examples/tests/a_to_b.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,13 @@ async fn hello_world() -> PyResult<()> {
reader_send(py, m, "reader", &EvdevInputEvent::new(&Default::default(), &KEY_A.event_code, 1));
reader_send(py, m, "reader", &EvdevInputEvent::new(&Default::default(), &KEY_A.event_code, 0));

assert_eq!(
(
writer_read(py, m, "writer"),
writer_read(py, m, "writer"),
),
(
Some(EvdevInputEvent::new(&Default::default(), &KEY_B.event_code, 1)),
Some(EvdevInputEvent::new(&Default::default(), &KEY_B.event_code, 0)),
)
);
assert_eq!((
writer_read(py, m, "writer"),
writer_read(py, m, "writer"),
), (
Some(EvdevInputEvent::new(&Default::default(), &KEY_B.event_code, 1)),
Some(EvdevInputEvent::new(&Default::default(), &KEY_B.event_code, 0)),
));

Ok(())
})?;
Expand Down
22 changes: 22 additions & 0 deletions examples/tests/wasd_mouse_control.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
use evdev_rs::enums::{EV_REL, EventCode};

use crate::*;

#[pyo3_asyncio::tokio::test]
async fn wasd_mouse_control() -> PyResult<()> {
Python::with_gil(|py| -> PyResult<()> {
let m = pytests::include_python!();

reader_send(py, m, "reader_kbd", &EvdevInputEvent::new(&Default::default(), &KEY_W.event_code, 1));
reader_send(py, m, "reader_kbd", &EvdevInputEvent::new(&Default::default(), &KEY_W.event_code, 0));

assert_eq!((
writer_read(py, m, "writer_mouse"),
), (
Some(EvdevInputEvent::new(&Default::default(), &EventCode::EV_REL(EV_REL::REL_Y), -15)),
));

Ok(())
})?;
Ok(())
}
2 changes: 2 additions & 0 deletions src/python.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ fn link(py: Python, mut chain: Vec<PyObject>) -> PyResult<()> {
for target in chain.into_iter() {
if let Some(source) = prev {
if let Ok(mut source) = source.extract::<PyRefMut<Reader>>(py) { source.link(target.as_ref(py))?; }
if let Ok(mut source) = source.extract::<PyRefMut<VirtualReader>>(py) { source.link(target.as_ref(py))?; }
if let Ok(mut source) = source.extract::<PyRefMut<Mapper>>(py) { source.link(target.as_ref(py))?; }
}
prev = Some(target);
Expand All @@ -66,6 +67,7 @@ pub fn err_to_py(err: anyhow::Error) -> PyErr {

#[pyfunction]
fn wait(py: Python) {
#[cfg(not(feature = "integration"))]
py.allow_threads(|| {
let mut signals = Signals::new(&[SIGINT]).unwrap();
for _ in signals.forever() {
Expand Down

0 comments on commit 40a957e

Please sign in to comment.